├── _config.yml
├── .babelrc
├── src
├── debug.js
├── makeAsyncApi.js
├── index.js
└── sql.js
├── .npmignore
├── lib
└── README.md
├── .editorconfig
├── .travis.yml
├── test
├── mock
│ ├── getClient.js
│ ├── pgMock.js
│ └── connect.js
├── driver.js
├── pg
│ ├── getClient.js
│ ├── shortcuts.js
│ ├── sql.js
│ ├── transaction.js
│ └── connect.js
├── exports.js
└── sql.js
├── .gitignore
├── gulpfile.babel.js
├── LICENSE
├── package.json
├── .eslintrc
├── README.md
└── yarn.lock
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-midnight
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015-node5", "stage-1"]
3 | }
4 |
--------------------------------------------------------------------------------
/src/debug.js:
--------------------------------------------------------------------------------
1 | import debugLib from 'debug';
2 |
3 | const debug = debugLib('pg-async');
4 |
5 | export default debug;
6 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .babelrc
2 | .editorconfig
3 | .eslintrc
4 | .gitignore
5 | .npmignore
6 | circle.yml
7 | .travis.yml
8 | coverage/
9 | gulpfile.babel.js
10 | src/
11 | test/
12 |
--------------------------------------------------------------------------------
/lib/README.md:
--------------------------------------------------------------------------------
1 | # **WARNING:** GENERATED CODE HERE
2 |
3 |
4 | This folder contains generated code.
5 |
6 | Source codes are avaiable
7 | [here](https://github.com/langpavel/node-pg-async/tree/master/src)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs.
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 | [*]
8 | charset = utf-8
9 | end_of_line = lf
10 | indent_size = 2
11 | indent_style = space
12 | insert_final_newline = true
13 | trim_trailing_whitespace = true
14 |
15 | [*.md]
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - '11'
4 | - '10'
5 | - '8'
6 | services:
7 | - postgresql
8 | env:
9 | - CC=clang CXX=clang++ npm_config_clang=1 PGUSER=postgres PGDATABASE=postgres
10 |
11 | install:
12 | - npm install -g node-gyp
13 | - npm install
14 |
15 | script:
16 | - gulp lint
17 | - gulp build
18 | - npm test
19 |
20 | sudo: false
21 | addons:
22 | postgresql: '9.4'
23 | apt:
24 | sources:
25 | - ubuntu-toolchain-r-test
26 | packages:
27 | - g++-4.8
28 | after_success:
29 | - npm install coveralls
30 | - cat ./coverage/lcov.info | ./node_modules/.bin/coveralls
31 |
--------------------------------------------------------------------------------
/test/mock/getClient.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg from '../../src/index';
3 | import PgMock, { Client } from './pgMock';
4 |
5 | describe('pg-async getClient (with mock driver)', () => {
6 | let pg, pgInvalid;
7 |
8 | beforeEach(() => {
9 | pg = new Pg(null, new PgMock());
10 | pgInvalid = new Pg('INVALID', new PgMock());
11 | });
12 |
13 | it('should fail if cannot connect', async () => {
14 | try {
15 | await pgInvalid.getClient();
16 | } catch (err) {
17 | expect(err).to.be.instanceOf(Error);
18 | }
19 | });
20 |
21 | it('should connect', async () => {
22 | const { client, done } = await pg.getClient();
23 | expect(client).to.be.instanceOf(Client);
24 | expect(done).to.be.a('function');
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | lib/**
2 | !**/*.md
3 |
4 | ## Standart - from https://github.com/github/gitignore/blob/master/Node.gitignore
5 | # Logs
6 | logs
7 | *.log
8 | npm-debug.log*
9 |
10 | # Runtime data
11 | pids
12 | *.pid
13 | *.seed
14 |
15 | # Directory for instrumented libs generated by jscoverage/JSCover
16 | lib-cov
17 |
18 | # Coverage directory used by tools like istanbul
19 | coverage
20 |
21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
22 | .grunt
23 |
24 | # node-waf configuration
25 | .lock-wscript
26 |
27 | # Compiled binary addons (http://nodejs.org/api/addons.html)
28 | build/Release
29 |
30 | # Dependency directories
31 | node_modules
32 | jspm_packages
33 |
34 | # Optional npm cache directory
35 | .npm
36 |
37 | # Optional REPL history
38 | .node_repl_history
39 |
--------------------------------------------------------------------------------
/gulpfile.babel.js:
--------------------------------------------------------------------------------
1 | import babel from 'gulp-babel';
2 | import del from 'del';
3 | import eslint from 'gulp-eslint';
4 | import gulp from 'gulp';
5 |
6 | const runEslint = () =>
7 | gulp
8 | .src(['gulpfile.babel.js', 'src/**/*.js', 'test/**/*.js'])
9 | .pipe(
10 | eslint({
11 | parser: 'babel-eslint',
12 | }),
13 | )
14 | .pipe(eslint.format())
15 | .pipe(eslint.failAfterError());
16 |
17 | gulp.task('clean', () => del('lib/*.js'));
18 |
19 | gulp.task('eslint', () => runEslint());
20 |
21 | gulp.task('lint', ['eslint']);
22 |
23 | gulp.task('build', ['clean', 'lint'], () => {
24 | gulp
25 | .src('src/*.js')
26 | .pipe(babel())
27 | .pipe(gulp.dest('lib'));
28 | });
29 |
30 | // Default task to start development. Just type gulp.
31 | gulp.task('default', ['clean', 'lint', 'build']);
32 |
--------------------------------------------------------------------------------
/test/driver.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg from '../src/index';
3 |
4 | describe('pg-async driver', () => {
5 | it('should be `pg` module by default', () => {
6 | expect(new Pg().getDriver()).to.be.equal(require('pg'));
7 | });
8 |
9 | it('should be `pg` module by if "pg" string used', () => {
10 | expect(new Pg(null, '').getDriver()).to.be.equal(require('pg'));
11 | expect(new Pg(null, 'pg').getDriver()).to.be.equal(require('pg'));
12 | });
13 |
14 | it('should be `pg.native` module by if "native" string used', () => {
15 | expect(new Pg(null, 'native').getDriver()).to.be.equal(
16 | require('pg').native,
17 | );
18 | expect(new Pg(null, 'pg.native').getDriver()).to.be.equal(
19 | require('pg').native,
20 | );
21 | });
22 |
23 | it('should throw if unknown driver used', () => {
24 | expect(() => new Pg(null, 'horse')).to.throw(Error);
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/test/pg/getClient.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg from '../../src/index';
3 |
4 | testWithDriver('pg', require('pg'));
5 | testWithDriver('pg.native', require('pg').native);
6 |
7 | function testWithDriver(driverName, driver) {
8 | describe(`pg-async getClient (with ${driverName} driver)`, () => {
9 | it('should fail if cannot connect', async () => {
10 | try {
11 | // const pgInvalid =
12 | await new Pg('INVALID', driver);
13 | // TODO: fix this
14 | // await pgInvalid.getClient();
15 | } catch (err) {
16 | expect(err).to.be.instanceOf(Error);
17 | }
18 | });
19 |
20 | it('should connect', async () => {
21 | const pg = new Pg(null, driver);
22 | const { client, done } = await pg.getClient();
23 | expect(done).to.be.a('function');
24 | expect(client).to.be.a('object');
25 | expect(client.query).to.be.a('function');
26 | pg.closeConnections();
27 | done();
28 | });
29 | });
30 | }
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016 Pavel Lang (langpavel@phpskelet.org)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/test/exports.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg, { sqlStr, literal, identifier } from '../src/index';
3 |
4 | const pg = new Pg();
5 |
6 | describe('pg-async exports', () => {
7 | it('pgAsync', () => expect(Pg).to.be.a('function'));
8 | });
9 |
10 | describe('pg-async client', () => {
11 | it('getDriver', () => expect(pg.getDriver).to.be.a('function'));
12 | it('getClient', () => expect(pg.closeConnections).to.be.a('function'));
13 | it('connect', () => expect(pg.closeConnections).to.be.a('function'));
14 | it('query', () => expect(pg.query).to.be.a('function'));
15 | it('queryArgs', () => expect(pg.query).to.be.a('function'));
16 | it('rows', () => expect(pg.rows).to.be.a('function'));
17 | it('rowsArgs', () => expect(pg.rows).to.be.a('function'));
18 | it('row', () => expect(pg.row).to.be.a('function'));
19 | it('rowArgs', () => expect(pg.row).to.be.a('function'));
20 | it('value', () => expect(pg.value).to.be.a('function'));
21 | it('valueArgs', () => expect(pg.value).to.be.a('function'));
22 | it('closeConnections', () => expect(pg.closeConnections).to.be.a('function'));
23 | it('SQL', () => expect(pg.SQL).to.be.a('function'));
24 | it('sqlStr', () => expect(sqlStr).to.be.a('function'));
25 | it('literal', () => expect(literal).to.be.a('function'));
26 | it('identifier', () => expect(identifier).to.be.a('function'));
27 | });
28 |
--------------------------------------------------------------------------------
/test/mock/pgMock.js:
--------------------------------------------------------------------------------
1 | export class Client {
2 | query(sql, values, cb) {
3 | setImmediate(() => {
4 | switch (sql.text || sql) {
5 | case 'ROWS':
6 | return cb(null, {
7 | rowCount: 2,
8 | rows: [{ id: 1, name: 'A' }, { id: 2, name: 'B' }],
9 | });
10 | case 'ROW':
11 | return cb(null, { rowCount: 1, rows: [{ id: 1, name: 'A' }] });
12 | case 'VALUE':
13 | return cb(null, { rowCount: 1, rows: [['value']] });
14 | case 'NONE':
15 | return cb(null, { rowCount: 0, rows: [] });
16 | default:
17 | return cb(new Error('ERROR'));
18 | }
19 | });
20 | }
21 | }
22 |
23 | function poolFactory(driver) {
24 | return function Pool() {
25 | return driver;
26 | };
27 | }
28 |
29 | export default class PgMock {
30 | constructor(conString) {
31 | this.conString = conString;
32 | this.connections = 0;
33 | this.defaults = {};
34 | this.done = this.done.bind(this);
35 | this.Pool = poolFactory(this);
36 | }
37 |
38 | connect(cb) {
39 | if (this.conString === 'INVALID') {
40 | setImmediate(() => cb(new Error()));
41 | } else {
42 | this.connections++;
43 | setImmediate(() => cb(null, new Client(), this.done));
44 | }
45 | }
46 |
47 | end() {
48 | this.connections = 0;
49 | }
50 |
51 | done() {
52 | this.connections--;
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/test/pg/shortcuts.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg from '../../src/index';
3 |
4 | describe('pg shortcuts', () => {
5 | const pg = new Pg();
6 |
7 | after(() => {
8 | pg.closeConnections();
9 | });
10 |
11 | it('query works', async () => {
12 | const result = await pg.query(
13 | pg.SQL`SELECT ${123}::int as int, ${'abc'}::text as text`,
14 | );
15 | expect(result).to.be.a('object');
16 | expect(result.rows).to.be.a('array');
17 | expect(result.rows).lengthOf(1);
18 | expect(result.rows[0]).to.be.a('object');
19 | expect(result.rows[0].int).equal(123);
20 | expect(result.rows[0].text).equal('abc');
21 | expect(result.fields).to.be.a('array');
22 | expect(result.fields).lengthOf(2);
23 | expect(result.fields[0]).to.be.a('object');
24 | expect(result.fields[0].name).equal('int');
25 | expect(result.fields[1].name).equal('text');
26 | });
27 |
28 | it('queryArgs works', async () => {
29 | const result = await pg.queryArgs(
30 | pg.SQL`SELECT ${123}::int as int, ${'abc'}::text as text`,
31 | );
32 | expect(result).to.be.a('object');
33 | expect(result.rows).to.be.a('array');
34 | expect(result.rows).lengthOf(1);
35 | expect(result.rows[0]).to.be.a('object');
36 | expect(result.rows[0].int).equal(123);
37 | expect(result.rows[0].text).equal('abc');
38 | expect(result.fields).to.be.a('array');
39 | expect(result.fields).lengthOf(2);
40 | expect(result.fields[0]).to.be.a('object');
41 | expect(result.fields[0].name).equal('int');
42 | expect(result.fields[1].name).equal('text');
43 | });
44 | });
45 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pg-async",
3 | "version": "3.1.0",
4 | "description": "PostgreSQL client for node.js designed for usage with ES7 async/await based on node-postgres (pg) module",
5 | "main": "lib/index.js",
6 | "scripts": {
7 | "build": "gulp",
8 | "test": "mocha --require babel-register",
9 | "lint": "gulp eslint"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/langpavel/node-pg-async.git"
14 | },
15 | "keywords": [
16 | "pg",
17 | "postgre",
18 | "postgres",
19 | "postgreSQL",
20 | "libpq",
21 | "database",
22 | "rdbms",
23 | "async",
24 | "await",
25 | "async-await",
26 | "promise",
27 | "bluebird",
28 | "babel",
29 | "ES6",
30 | "ES7"
31 | ],
32 | "author": "Pavel Lang (https://github.com/langpavel)",
33 | "license": "MIT",
34 | "bugs": {
35 | "url": "https://github.com/langpavel/node-pg-async/issues"
36 | },
37 | "homepage": "https://github.com/langpavel/node-pg-async#readme",
38 | "dependencies": {
39 | "bluebird": "^3.5.0",
40 | "debug": "^4.0.0",
41 | "pg": "^7.0.2"
42 | },
43 | "devDependencies": {
44 | "babel": "^6.23.0",
45 | "babel-core": "^6.25.0",
46 | "babel-eslint": "^8.0.1",
47 | "babel-plugin-add-module-exports": "^0.2.1",
48 | "babel-preset-es2015-node5": "^1.2.0",
49 | "babel-preset-stage-1": "^6.24.1",
50 | "babel-register": "^6.24.1",
51 | "chai": "^4.1.2",
52 | "del": "^3.0.0",
53 | "eslint": "^4.2.0",
54 | "eslint-config-strict": "^14.0.0",
55 | "eslint-plugin-import": "^2.7.0",
56 | "estraverse-fb": "^1.3.1",
57 | "gulp": "^3.9.1",
58 | "gulp-babel": "^7.0.0",
59 | "gulp-eslint": "^4.0.0",
60 | "mocha": "^3.4.2",
61 | "pg-native": "^2.0.1"
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/test/pg/sql.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg, { SQL } from '../../src/index';
3 |
4 | const tableName = 'pgAsyncTest';
5 | testWithDriver('pg', require('pg'));
6 | testWithDriver('pg.native', require('pg').native);
7 |
8 | function testWithDriver(driverName, driver) {
9 | describe(`pg-async SQL tag (with ${driverName} driver)`, () => {
10 | let pg;
11 |
12 | before(async () => {
13 | pg = new Pg(null, driver);
14 | await pg.query(SQL`
15 | CREATE TABLE IF NOT EXISTS $ID${tableName} (
16 | id serial,
17 | val integer
18 | )
19 | `);
20 | });
21 |
22 | after(async () => {
23 | try {
24 | await pg.query(SQL`DROP TABLE $ID${tableName}`);
25 | } catch (err) {
26 | // ignore
27 | }
28 | pg.closeConnections();
29 | });
30 |
31 | it('returns string value', async () => {
32 | const result = await pg.transaction(t =>
33 | t.value(SQL`SELECT ${'test'}::text`),
34 | );
35 | expect(result).to.be.equal('test');
36 | });
37 |
38 | it('returns nested string value', async () => {
39 | const nested = SQL`${'test'}`;
40 | const result = await pg.transaction(t =>
41 | t.value(SQL`SELECT ${nested}::text`),
42 | );
43 | expect(result).to.be.equal('test');
44 | });
45 |
46 | it('returns nested subquery value', async () => {
47 | const nested = SQL`(select ${'test'}::text)`;
48 | const result = await pg.transaction(t => t.value(SQL`SELECT ${nested}`));
49 | expect(result).to.be.equal('test');
50 | });
51 |
52 | it('returns row', async () => {
53 | const result = await pg.transaction(t =>
54 | t.row(t.SQL`
55 | SELECT ${'test'}::text as t, ${123}::smallint as i
56 | `),
57 | );
58 | expect(result.t).to.be.equal('test');
59 | expect(result.i).to.be.equal(123);
60 | });
61 | });
62 | }
63 |
--------------------------------------------------------------------------------
/src/makeAsyncApi.js:
--------------------------------------------------------------------------------
1 | import Promise from 'bluebird';
2 | import debug from './debug';
3 | import SQL, { SqlFragment } from './sql';
4 |
5 | const makeAsyncApi = client => {
6 | let inQuery = false;
7 |
8 | function query(sql, ...values) {
9 | return query.queryArgs(sql, values);
10 | }
11 |
12 | let _queryArgs = (sql, values) => {
13 | if (sql instanceof SqlFragment) {
14 | values = sql.values;
15 | sql = sql.text;
16 | }
17 |
18 | inQuery = true;
19 | return new Promise((resolve, reject) => {
20 | debug(
21 | 'query params: %s query: %j',
22 | JSON.stringify(values).slice(0, 60),
23 | sql,
24 | );
25 | client.query(sql, values, (err, result) => {
26 | inQuery = false;
27 | if (err) {
28 | debug('%s query(%j, %j)', err, sql, values);
29 | return reject(err);
30 | }
31 | debug('query ok: %d rows', result.rowCount);
32 | return resolve(result);
33 | });
34 | });
35 | };
36 |
37 | query.SQL = SQL;
38 |
39 | query.query = (sql, ...values) => query.queryArgs(sql, values);
40 | query.queryArgs = (sql, values) => {
41 | if (inQuery)
42 | throw new Error(
43 | 'Commands on same client should be called serially. ' +
44 | 'Do you forget `await`?',
45 | );
46 | return _queryArgs(sql, values);
47 | };
48 |
49 | query.rows = (sql, ...values) => query.rowsArgs(sql, values);
50 | query.rowsArgs = (sql, values) =>
51 | query.queryArgs(sql, values).then(r => r.rows);
52 |
53 | query.row = (sql, ...values) => query.rowArgs(sql, values);
54 | query.rowArgs = async (sql, values) => {
55 | const result = await query.queryArgs(sql, values);
56 | if (result.rowCount !== 1)
57 | throw new Error(
58 | `SQL: Expected exactly one row result but ${result.rowCount} returned`,
59 | );
60 | return result.rows[0];
61 | };
62 |
63 | query.value = async (sql, ...values) => query.valueArgs(sql, values);
64 | query.valueArgs = async (sql, values) => {
65 | let opts;
66 | if (sql instanceof SqlFragment) {
67 | opts = {
68 | ...sql,
69 | rowMode: 'array',
70 | };
71 | values = sql.values;
72 | } else {
73 | opts =
74 | typeof sql === 'string'
75 | ? { text: sql, rowMode: 'array' }
76 | : { ...sql, rowMode: 'array' };
77 | }
78 |
79 | const result = await query.rowArgs(opts, values);
80 | if (result.length !== 1)
81 | throw new Error(
82 | `SQL: Expected exactly one column but ${result.length} returned`,
83 | );
84 | return result[0];
85 | };
86 |
87 | query.inTransaction = false;
88 |
89 | query.startTransaction = () => {
90 | query.inTransaction = true;
91 | return query.query('BEGIN');
92 | };
93 |
94 | query.commit = () => {
95 | query.inTransaction = false;
96 | return query.query('COMMIT');
97 | };
98 |
99 | query.rollback = () => {
100 | query.inTransaction = false;
101 | return _queryArgs('ROLLBACK', []);
102 | };
103 |
104 | query._end = () => {
105 | const queryArgs = _queryArgs;
106 | _queryArgs = () => {
107 | throw new Error('Client was released.');
108 | };
109 | return new Promise(resolve => {
110 | if (inQuery)
111 | throw new Error(
112 | 'Client shutting down but query is pending. ' +
113 | 'Do you forget `await`?',
114 | );
115 |
116 | if (query.inTransaction) {
117 | query.inTransaction = false;
118 | queryArgs('ROLLBACK', []);
119 | throw new Error(
120 | 'Transaction started manually but not closed. Automatic rollback',
121 | );
122 | }
123 | resolve();
124 | });
125 | };
126 |
127 | return query;
128 | };
129 |
130 | export default makeAsyncApi;
131 |
--------------------------------------------------------------------------------
/test/pg/transaction.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg from '../../src/index';
3 |
4 | const SLEEP_SECONDS = 0.01;
5 | const SLEEP_SQL = Pg.SQL`pg_sleep(${SLEEP_SECONDS})`;
6 | const SLEEP_SELECT = Pg.SQL`select ${SLEEP_SQL}`;
7 |
8 | testWithDriver('pg', require('pg'));
9 | testWithDriver('pg.native', require('pg').native);
10 |
11 | function testWithDriver(driverName, driver) {
12 | describe(`pg-async transaction (with ${driverName} driver)`, () => {
13 | let pg;
14 |
15 | before(async () => {
16 | pg = new Pg(null, driver);
17 | await pg.query(`
18 | CREATE TABLE IF NOT EXISTS "pgAsyncTest" (
19 | id serial,
20 | val integer
21 | )
22 | `);
23 | });
24 |
25 | beforeEach(() => {
26 | pg = new Pg(null, driver);
27 | });
28 |
29 | after(async () => {
30 | try {
31 | await pg.query('DROP TABLE "pgAsyncTest"');
32 | } catch (err) {
33 | // ignore
34 | }
35 | pg.closeConnections();
36 | });
37 |
38 | it('returns value', async () => {
39 | const result = await pg.transaction(t => t.value(`SELECT 'test'`));
40 | expect(result).to.be.equal('test');
41 | });
42 |
43 | it('commits', async () => {
44 | const random = Math.trunc(Math.random() * 1e9) + 1;
45 | let id;
46 | try {
47 | id = await pg.transaction(
48 | async t =>
49 | await t.value(
50 | `INSERT INTO "pgAsyncTest" (val) VALUES ($1) RETURNING id`,
51 | random,
52 | ),
53 | );
54 | } catch (err) {}
55 | const restored = await pg.row(
56 | 'select * from "pgAsyncTest" where id = $1',
57 | id,
58 | );
59 | expect(restored.val).equal(random);
60 | });
61 |
62 | it('rollbacks', async () => {
63 | const random = Math.trunc(Math.random() * 1e9) + 1;
64 | let id;
65 | try {
66 | await pg.transaction(async t => {
67 | id = await t.value(
68 | `INSERT INTO "pgAsyncTest" (val) VALUES ($1) RETURNING id`,
69 | random,
70 | );
71 | throw new Error('Test rollback');
72 | });
73 | } catch (err) {}
74 | const restoredRows = await pg.rows(
75 | 'select * from "pgAsyncTest" where id = $1',
76 | id,
77 | );
78 | expect(restoredRows).lengthOf(0);
79 | });
80 |
81 | it('rollbacks uncommited', async () => {
82 | const random = Math.trunc(Math.random() * 1e9) + 1;
83 | let error, id;
84 | try {
85 | await pg.connect(async t => {
86 | await t.startTransaction();
87 | id = await t.value(
88 | `INSERT INTO "pgAsyncTest" (val) VALUES ($1) RETURNING id`,
89 | random,
90 | );
91 | });
92 | } catch (err) {
93 | error = err;
94 | }
95 | expect(error).to.be.a('Error');
96 | const restoredRows = await pg.rows(
97 | 'select * from "pgAsyncTest" where id = $1',
98 | id,
99 | );
100 | expect(restoredRows).lengthOf(0);
101 | });
102 |
103 | it('throws on forgotten first await', async () => {
104 | let throws = false;
105 | try {
106 | await pg.transaction(async t => {
107 | t(SLEEP_SELECT);
108 | await t(SLEEP_SELECT);
109 | });
110 | } catch (err) {
111 | throws = true;
112 | }
113 | expect(throws).equal(true);
114 | });
115 |
116 | it('throws on forgotten second await', async () => {
117 | let throws = false;
118 | try {
119 | await pg.transaction(async t => {
120 | await t(SLEEP_SELECT);
121 | t(SLEEP_SELECT);
122 | });
123 | } catch (err) {
124 | throws = true;
125 | }
126 | expect(throws).equal(true);
127 | });
128 | });
129 | }
130 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import Promise from 'bluebird';
2 | import pgDriver from 'pg';
3 | import debug from './debug';
4 | import makeAsyncApi from './makeAsyncApi';
5 | import SqlTag from './sql';
6 |
7 | export { sqlStr, literal, identifier } from './sql';
8 | export const SQL = SqlTag;
9 |
10 | function checkAsyncFunction(asyncFunc) {
11 | if (typeof asyncFunc !== 'function')
12 | throw new TypeError('async function expected');
13 | }
14 |
15 | export default class PgAsync {
16 | constructor(connectionOptions, driver) {
17 | this.setConnectionOptions(connectionOptions);
18 | this.setDriver(driver);
19 | this.setPool();
20 |
21 | const self = this;
22 | const wrap = name => {
23 | self[name] = (sql, ...values) =>
24 | self.connect(client => client[`${name}Args`](sql, values));
25 | };
26 | const wrapArgs = name => {
27 | self[name] = (sql, values) =>
28 | self.connect(client => client[name](sql, values));
29 | };
30 |
31 | wrap('query');
32 | wrapArgs('queryArgs');
33 |
34 | wrap('rows');
35 | wrapArgs('rowsArgs');
36 |
37 | wrap('row');
38 | wrapArgs('rowArgs');
39 |
40 | wrap('value');
41 | wrapArgs('valueArgs');
42 | }
43 |
44 | static SQL = SqlTag;
45 | SQL = SqlTag;
46 |
47 | setConnectionOptions(options) {
48 | this._connectionOptions = options;
49 | return this;
50 | }
51 |
52 | getConnectionOptions() {
53 | return this._connectionOptions || this.getDriver().defaults;
54 | }
55 |
56 | getDriver() {
57 | return this._driver;
58 | }
59 |
60 | setDriver(driver) {
61 | if (typeof driver === 'string')
62 | switch (driver) {
63 | case '':
64 | case 'pg':
65 | driver = pgDriver;
66 | break;
67 | case 'native':
68 | case 'pg.native':
69 | driver = pgDriver.native;
70 | break;
71 | default:
72 | throw new Error(`Unrecognized driver name: ${driver}`);
73 | }
74 | this._driver = driver || pgDriver;
75 | return this;
76 | }
77 |
78 | setPool() {
79 | const driver = this.getDriver();
80 | const Pool = driver.Pool;
81 | this._pool = new Pool(this.getConnectionOptions());
82 | return this;
83 | }
84 |
85 | getPool() {
86 | return this._pool;
87 | }
88 |
89 | async getClient() {
90 | return new Promise((resolve, reject) => {
91 | const pool = this.getPool();
92 | pool.connect((err, client, done) => {
93 | if (err) {
94 | debug('%s getClient(%j)', err, this.getConnectionOptions());
95 | if (done) done(err);
96 | return reject(err);
97 | }
98 | return resolve({
99 | client,
100 | done: () => {
101 | debug('Client released');
102 | done();
103 | },
104 | });
105 | });
106 | });
107 | }
108 |
109 | async connect(asyncFunc) {
110 | checkAsyncFunction(asyncFunc);
111 |
112 | const { client, done } = await this.getClient();
113 | try {
114 | const api = makeAsyncApi(client);
115 | const result = await asyncFunc(api);
116 | await api._end();
117 | done();
118 | return result;
119 | } catch (err) {
120 | done(err);
121 | throw err;
122 | }
123 | }
124 |
125 | async transaction(asyncFunc) {
126 | checkAsyncFunction(asyncFunc);
127 |
128 | return await this.connect(async client => {
129 | client.checkSerialAccess = true;
130 | await client.startTransaction();
131 | try {
132 | const result = await asyncFunc(client);
133 | await client.commit();
134 | return result;
135 | } catch (err) {
136 | try {
137 | await client.rollback();
138 | } catch (_) {
139 | // client disconnected?
140 | }
141 | throw err;
142 | }
143 | });
144 | }
145 |
146 | closeConnections = () => this.getPool().end();
147 | }
148 |
--------------------------------------------------------------------------------
/src/sql.js:
--------------------------------------------------------------------------------
1 | import { inspect } from 'util';
2 | import pg from 'pg';
3 | import { prepareValue } from 'pg/lib/utils';
4 |
5 | let SQL; // eslint-disable-line prefer-const
6 |
7 | export class SqlFragment {
8 | // SQL`insert into $quote${tableName} $values${keyValue}`;
9 | constructor(templateParts, templateValues) {
10 | this._parts = [];
11 | this.values = [];
12 |
13 | const length = templateValues.length;
14 | const text = [];
15 | let currentFragment = [];
16 | let argIndex = 1;
17 |
18 | let i = 0;
19 |
20 | const addText = str => {
21 | currentFragment.push(str);
22 | };
23 |
24 | const flushText = () => {
25 | const fragment = currentFragment.join('');
26 | currentFragment = [];
27 | this._parts.push(fragment);
28 | text.push(fragment);
29 | };
30 |
31 | const addValue = value => {
32 | flushText();
33 | this.values.push(value);
34 | text.push('$', argIndex++);
35 | };
36 |
37 | while (i < length) {
38 | const parts = templateParts[i].split('$');
39 | let value = templateValues.shift();
40 | if (typeof value === 'undefined')
41 | throw new Error(
42 | `Expected something, but got undefined. ` +
43 | `Value after SQL fragment: ${text.join('')}${templateParts[i]}`,
44 | );
45 |
46 | while (parts.length > 1) value = SQL.transform(parts.pop(), value);
47 |
48 | addText(parts[0]);
49 |
50 | if (value && value.toSQL) value = value.toSQL();
51 |
52 | if (value instanceof SqlFragment) {
53 | const nestedValuesLength = value.values.length;
54 | let valueIndex = 0;
55 | while (valueIndex < nestedValuesLength) {
56 | addText(value._parts[valueIndex]);
57 | addValue(value.values[valueIndex]);
58 | valueIndex++;
59 | }
60 | addText(value._parts[valueIndex]);
61 | } else {
62 | addValue(value);
63 | }
64 | i++;
65 | }
66 | // last part is alone, without value
67 | addText(templateParts[i]);
68 | flushText();
69 |
70 | this.text = text.join('');
71 | }
72 |
73 | // this is for log/debugging only
74 | toString() {
75 | if (this._asString) return this._asString;
76 |
77 | const text = [];
78 | const length = this.values.length;
79 | let i = 0;
80 | while (i < length) {
81 | text.push(this._parts[i]);
82 | const value = literal(this.values[i]);
83 | text.push(value);
84 | i++;
85 | }
86 | text.push(this._parts[i]);
87 | this._asString = text.join('');
88 | return this._asString;
89 | }
90 | }
91 |
92 | SQL = (parts, ...values) => {
93 | // eslint-disable-line prefer-const
94 | // only one argument, called manually
95 | if (!Array.isArray(parts) && values.length === 0) {
96 | if (parts instanceof SqlFragment) return parts;
97 |
98 | parts = [parts];
99 | }
100 |
101 | return new SqlFragment(parts, values);
102 | };
103 |
104 | SQL.NULL = SQL('NULL');
105 | SQL.DEFAULT = SQL('DEFAULT');
106 |
107 | SQL._transforms = {};
108 | SQL.registerTransform = (...names) => {
109 | const transform = names.pop();
110 | if (typeof transform !== 'function')
111 | throw new Error('Last argument must be a function');
112 |
113 | const transforms = SQL._transforms;
114 | for (let i = 0; i < names.length; i++) {
115 | const name = names[i].trim().toLowerCase();
116 | if (transforms[name] && transforms[name] !== transform)
117 | throw new Error(`Transform ${name} already registered`);
118 | transforms[names[i].toLowerCase()] = transform;
119 | }
120 | };
121 |
122 | SQL.transform = (name, value) => {
123 | name = name.trim().toLowerCase();
124 | const transform = SQL._transforms[name];
125 | if (!transform) throw new Error(`Unknown transform: "${name}"`);
126 | return transform(value);
127 | };
128 |
129 | export const escapeIdentifier = pg.Client.prototype.escapeIdentifier;
130 | export const escapeLiteral = pg.Client.prototype.escapeLiteral;
131 |
132 | export function sqlStr(str) {
133 | if (typeof str !== 'string')
134 | throw new Error(`Expected string, got ${inspect(str)}`);
135 |
136 | return SQL(str);
137 | }
138 |
139 | // returns quoted identifier
140 | export function identifier(name) {
141 | if (!name) throw new Error(`Expected nonempty string, got ${inspect(name)}`);
142 |
143 | return SQL(escapeIdentifier(name));
144 | }
145 |
146 | // returns quoted literal
147 | export function literal(value) {
148 | if (value instanceof SqlFragment) return value;
149 |
150 | if (typeof value === 'undefined')
151 | throw new Error(`Expected something, but got undefined.`);
152 |
153 | if (value === null) return SQL.NULL;
154 |
155 | if (value.toPostgres)
156 | return SQL(escapeLiteral(value.toPostgres(prepareValue)));
157 |
158 | if (value.toSQL) return SQL(value.toSQL());
159 |
160 | return SQL(escapeLiteral(value.toString()));
161 | }
162 |
163 | export function insert_object(data) {
164 | const keys = Object.keys(data);
165 | const length = keys.length;
166 | const sqlFragments = new Array(length);
167 | const values = new Array(length - 1);
168 | const sb = [];
169 |
170 | sb.push('(');
171 | let i = 0;
172 | while (i < length) {
173 | const column = keys[i];
174 | values[i] = data[column];
175 | i++;
176 | sb.push(escapeIdentifier(column), ',');
177 | sqlFragments[i] = ',';
178 | }
179 | sb[sb.length - 1] = ') VALUES (';
180 | sqlFragments[0] = sb.join('');
181 | sqlFragments[i] = ')';
182 |
183 | return new SqlFragment(sqlFragments, values);
184 | }
185 |
186 | SQL.registerTransform('id', 'ident', 'identifier', 'name', identifier);
187 | SQL.registerTransform('', 'literal', literal);
188 | SQL.registerTransform('!', 'raw', sqlStr);
189 | SQL.registerTransform('insert_object', 'insert', insert_object);
190 |
191 | export default SQL;
192 |
--------------------------------------------------------------------------------
/test/sql.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import { SQL, literal } from '../src';
3 |
4 | describe('pg-async SQL template tag', () => {
5 | it('parse without args', () => {
6 | const sql = SQL`SELECT * FROM test`;
7 | expect(sql.text).equal('SELECT * FROM test');
8 | expect(sql.values.length).equal(0);
9 | expect(sql.toString()).equal('SELECT * FROM test');
10 | });
11 |
12 | it('parse with custom formater arg', () => {
13 | const value1 = {
14 | toPostgres() {
15 | return 'raw text value';
16 | },
17 | };
18 | const sql = SQL`SELECT ${value1}`;
19 | expect(sql.text).equal('SELECT $1');
20 | expect(sql.values.length).equal(1);
21 | expect(sql.values[0]).equal(value1);
22 | expect(sql.toString()).equal("SELECT 'raw text value'");
23 | // cover caching
24 | expect(sql.toString()).equal("SELECT 'raw text value'");
25 | });
26 |
27 | it('parse with null arg', () => {
28 | const value1 = null;
29 | const sql = SQL`SELECT ${value1}`;
30 | expect(sql.text).equal('SELECT $1');
31 | expect(sql.values.length).equal(1);
32 | expect(sql.values[0]).equal(null);
33 | expect(sql.toString()).equal('SELECT NULL');
34 | // cover caching
35 | expect(sql.toString()).equal('SELECT NULL');
36 | });
37 |
38 | it('parse literal transform with null arg', () => {
39 | const value1 = null;
40 | const sql = SQL`SELECT $${value1}`;
41 | expect(sql.text).equal('SELECT NULL');
42 | expect(sql.values.length).equal(0);
43 | expect(sql.toString()).equal('SELECT NULL');
44 | });
45 |
46 | it('parse literal transform with string arg', () => {
47 | const value1 = 'ABC';
48 | const sql = SQL`SELECT $${value1}`;
49 | expect(sql.text).equal("SELECT 'ABC'");
50 | expect(sql.values.length).equal(0);
51 | expect(sql.toString()).equal("SELECT 'ABC'");
52 | });
53 |
54 | it('parse nested literal transform arg', () => {
55 | const value1 = SQL`${'ABC'}`;
56 | const sql = SQL`SELECT $${value1}`;
57 | expect(sql.text).equal('SELECT $1');
58 | expect(sql.values.length).equal(1);
59 | expect(sql.values[0]).equal('ABC');
60 | expect(sql.toString()).equal("SELECT 'ABC'");
61 | });
62 |
63 | it('parse with SQL formater arg', () => {
64 | const value1 = {
65 | toSQL() {
66 | return SQL`123.45::numeric(15,2)`;
67 | },
68 | };
69 | const sql = SQL`SELECT ${value1}`;
70 | expect(sql.text).equal('SELECT 123.45::numeric(15,2)');
71 | expect(sql.values.length).equal(0);
72 | expect(sql.toString()).equal('SELECT 123.45::numeric(15,2)');
73 | });
74 |
75 | it('parse with nested SQL', () => {
76 | const ip = '127.0.0.1';
77 | const login = 'langpavel';
78 | const userIdSql = SQL`(select id from user where login = ${login})`;
79 | const auditSql = SQL`insert into audit (uder_id, ip) values (${userIdSql}, ${ip})`;
80 |
81 | expect(userIdSql.text).equal('(select id from user where login = $1)');
82 | expect(userIdSql.values.length).equal(1);
83 | expect(userIdSql.values[0]).equal(login);
84 |
85 | expect(auditSql.text).equal(
86 | 'insert into audit (uder_id, ip) values ((select id from user where login = $1), $2)',
87 | );
88 | expect(auditSql.values.length).equal(2);
89 | expect(auditSql.values[0]).equal(login);
90 | expect(auditSql.values[1]).equal(ip);
91 | });
92 |
93 | it('transform name', () => {
94 | const sql = SQL.transform('name', 'test "identifier"');
95 | expect(sql.toString()).equal('"test ""identifier"""');
96 | });
97 |
98 | it('parse with transform', () => {
99 | const table = 'address';
100 | const sql = SQL`select * from $name${table}`;
101 | expect(sql.text).equal('select * from "address"');
102 | expect(sql.values.length).equal(0);
103 | });
104 |
105 | it('parse with raw transform', () => {
106 | const table = 'address';
107 | const sql = SQL`select * from $!${table}`;
108 | expect(sql.text).equal('select * from address');
109 | expect(sql.values.length).equal(0);
110 | });
111 |
112 | it('parse with insert_object transform', () => {
113 | const data = {
114 | id: 123,
115 | val: 'abc',
116 | };
117 | const sql = SQL`INSERT INTO t $insert_object${data}`;
118 | expect(sql.text).equal('INSERT INTO t ("id","val") VALUES ($1,$2)');
119 | expect(sql.values.length).equal(2);
120 | expect(sql.values[0]).equal(123);
121 | expect(sql.values[1]).equal('abc');
122 | });
123 |
124 | it('SQL not nesting if ensuring SQL', () => {
125 | const sql1 = SQL`${'Value'}`;
126 | const sql2 = SQL(sql1);
127 | expect(sql1).equal(sql2);
128 | });
129 |
130 | it('SQL literal custom SQL transform', () => {
131 | const val = {
132 | toSQL() {
133 | return 'DEFAULT';
134 | },
135 | };
136 | const sql = SQL`insert... ($${val})`;
137 | expect(sql.text).equal('insert... (DEFAULT)');
138 | expect(sql.values.length).equal(0);
139 | expect(sql.toString()).equal('insert... (DEFAULT)');
140 | });
141 | });
142 |
143 | describe('pg-async SQL errors', () => {
144 | it('throws on unknown transform', () => {
145 | expect(() => SQL`SELECT * FROM $bleh${'something'}`).throws(Error);
146 | });
147 |
148 | it('throws on empty string', () => {
149 | expect(() => SQL`SELECT * FROM $ID${''}`).throws(Error);
150 | });
151 |
152 | it('throws on nonstring raw transform', () => {
153 | expect(() => SQL`SELECT * FROM $RAW${null}`).throws(Error);
154 | });
155 |
156 | it('throws on re-registering transform', () => {
157 | expect(() => {
158 | SQL.registerTransform('Id', val => val);
159 | }).throws(Error);
160 | });
161 |
162 | it('throws on registering nonfunction transform', () => {
163 | expect(() => {
164 | SQL.registerTransform('dummy', null);
165 | }).throws(Error);
166 | });
167 |
168 | it('throws on passing undefined', () => {
169 | const data = {};
170 | expect(() => SQL`update mytable set myvalue = ${data.mistyped}`).throws(
171 | Error,
172 | );
173 | });
174 |
175 | it('throws on transforming undefined', () => {
176 | let undef;
177 | expect(() => SQL`SELECT * FROM $ID${undef}`).throws(Error);
178 | expect(() => SQL`SELECT * FROM $${undef}`).throws(Error);
179 | expect(() => literal(undef)).throws(Error);
180 | });
181 | });
182 |
--------------------------------------------------------------------------------
/test/pg/connect.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg from '../../src/index';
3 |
4 | const SELECT = {
5 | row: 'select 1 as id, 2 as value',
6 | rows: 'select oid, typname from pg_type limit 2',
7 | empty: 'select * from pg_type where false',
8 | error: 'ERROR',
9 | };
10 |
11 | testWithDriver('pg', require('pg'));
12 | // testWithDriver('pg.native', require('pg').native);
13 |
14 | function testWithDriver(driverName, driver) {
15 | describe(`pg-async connect (with ${driverName} driver)`, () => {
16 | let pg, pgInvalid;
17 |
18 | beforeEach(() => {
19 | pg = new Pg(null, driver);
20 | pgInvalid = new Pg('INVALID', driver);
21 | });
22 |
23 | after(() => {
24 | pg.closeConnections();
25 | });
26 |
27 | it('should fail if invalid connection conf', async () => {
28 | try {
29 | await pgInvalid(async () => null);
30 | } catch (err) {
31 | expect(err).to.be.instanceOf(Error);
32 | }
33 | });
34 |
35 | it('should fail if invalid callback', async () => {
36 | try {
37 | await pg.connect();
38 | } catch (err) {
39 | expect(err).to.be.instanceOf(Error);
40 | }
41 | });
42 |
43 | it('throws if client early ended', async () => {
44 | let throws = false;
45 | try {
46 | await pg.connect(async q => {
47 | q('select pg_sleep(0.1)');
48 | });
49 | } catch (err) {
50 | throws = true;
51 | expect(err).instanceOf(Error);
52 | }
53 | expect(throws).equal(true);
54 | });
55 |
56 | describe('method', () => {
57 | it('query works', async () => {
58 | await pg.connect(async q => {
59 | const row = await q(SELECT.row);
60 | expect(row.rows).to.have.length(1);
61 |
62 | const rows = await q(SELECT.rows);
63 | expect(rows.rows).to.have.length(2);
64 |
65 | const rows2 = await q(SELECT.rows);
66 | expect(rows2.rows).to.have.length(2);
67 |
68 | const none = await q(SELECT.empty);
69 | expect(none.rows).to.have.length(0);
70 |
71 | try {
72 | await q(SELECT.error);
73 | } catch (err) {
74 | expect(err).to.be.instanceOf(Error);
75 | }
76 | });
77 | });
78 |
79 | it('query.query works', async () => {
80 | await pg.connect(async q => {
81 | const row = await q.query(SELECT.row);
82 | expect(row.rows).to.have.length(1);
83 |
84 | const rows = await q.query(SELECT.rows);
85 | expect(rows.rows).to.have.length(2);
86 |
87 | const none = await q.query(SELECT.empty);
88 | expect(none.rows).to.have.length(0);
89 |
90 | try {
91 | await q.query(SELECT.error);
92 | } catch (err) {
93 | expect(err).to.be.instanceOf(Error);
94 | }
95 | });
96 | });
97 |
98 | it('query.rows works', async () => {
99 | await pg.connect(async q => {
100 | const row = await q.rows(SELECT.row);
101 | expect(row).to.have.length(1);
102 |
103 | const rows = await q.rows(SELECT.rows);
104 | expect(rows).to.have.length(2);
105 |
106 | const none = await q.rows(SELECT.empty);
107 | expect(none).to.have.length(0);
108 |
109 | try {
110 | await q.rows(SELECT.error);
111 | } catch (err) {
112 | expect(err).to.be.instanceOf(Error);
113 | }
114 | });
115 | });
116 |
117 | it('query.row works with arguments', async () => {
118 | await pg.connect(async q => {
119 | const result = await q.row(
120 | 'select $1::int as i, $2::text as t',
121 | 123,
122 | 'abc',
123 | );
124 | expect(result).to.be.a('object');
125 | expect(result.i).equal(123);
126 | expect(result.t).equal('abc');
127 | });
128 | });
129 |
130 | it('query.rowArgs works with arguments', async () => {
131 | await pg.connect(async q => {
132 | const result = await q.rowArgs('select $1::int as i, $2::text as t', [
133 | 123,
134 | 'abc',
135 | ]);
136 | expect(result).to.be.a('object');
137 | expect(result.i).equal(123);
138 | expect(result.t).equal('abc');
139 | });
140 | });
141 |
142 | it('query.row works', async () => {
143 | await pg.connect(async q => {
144 | const row = await q.row(SELECT.row);
145 | expect(row).to.be.a('object');
146 |
147 | try {
148 | await q.row(SELECT.rows);
149 | } catch (err) {
150 | expect(err).to.be.instanceOf(Error);
151 | }
152 |
153 | try {
154 | await q.row(SELECT.empty);
155 | } catch (err) {
156 | expect(err).to.be.instanceOf(Error);
157 | }
158 |
159 | try {
160 | await q.row(SELECT.error);
161 | } catch (err) {
162 | expect(err).to.be.instanceOf(Error);
163 | }
164 | });
165 | });
166 |
167 | it('query.value works', async () => {
168 | await pg.connect(async q => {
169 | const value = await q.value(`SELECT 'value'`);
170 | expect(value).to.be.equal('value');
171 |
172 | try {
173 | await q.value(SELECT.row);
174 | } catch (err) {
175 | expect(err).to.be.instanceOf(Error);
176 | }
177 |
178 | try {
179 | await q.value(SELECT.rows);
180 | } catch (err) {
181 | expect(err).to.be.instanceOf(Error);
182 | }
183 |
184 | try {
185 | await q.value(SELECT.empty);
186 | } catch (err) {
187 | expect(err).to.be.instanceOf(Error);
188 | }
189 |
190 | try {
191 | await q.value(SELECT.error);
192 | } catch (err) {
193 | expect(err).to.be.instanceOf(Error);
194 | }
195 | });
196 | });
197 |
198 | it('rows - shorthand works', async () => {
199 | const row = await pg.rows(SELECT.row);
200 | expect(row).to.have.length(1);
201 | const rows = await pg.rows(SELECT.rows);
202 | expect(rows).to.have.length(2);
203 | const none = await pg.rows(SELECT.empty);
204 | expect(none).to.have.length(0);
205 | });
206 |
207 | it('value ovverides custom query config correctly', async () => {
208 | const value = await pg.value({
209 | text: 'SELECT 123',
210 | rowMode: 'object',
211 | });
212 | expect(value).equal(123);
213 | });
214 | });
215 | });
216 | }
217 |
--------------------------------------------------------------------------------
/test/mock/connect.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import Pg from '../../src/index';
3 | import PgMock from './pgMock';
4 |
5 | describe('pg-async connect (with mock driver)', () => {
6 | let pg, pgInvalid;
7 |
8 | beforeEach(() => {
9 | pg = new Pg(null, new PgMock());
10 | pgInvalid = new Pg('INVALID', new PgMock());
11 | });
12 |
13 | it('should fail if invalid connection conf', async () => {
14 | try {
15 | await pgInvalid.connect(
16 | 'INVALID',
17 | async () => null,
18 | );
19 | } catch (err) {
20 | expect(pgInvalid.getDriver().connections).to.be.equal(0);
21 | expect(err).to.be.instanceOf(Error);
22 | }
23 | });
24 |
25 | it('should fail if invalid callback', async () => {
26 | try {
27 | await pg.connect('INVALID');
28 | } catch (err) {
29 | expect(err).to.be.instanceOf(Error);
30 | }
31 | });
32 |
33 | it('should release connection', async () => {
34 | await pg.connect(async () => {
35 | expect(pg.getDriver().connections).to.be.equal(1);
36 | return null;
37 | });
38 | expect(pg.getDriver().connections).to.be.equal(0);
39 | });
40 |
41 | it('should throw after connection released', async () => {
42 | const cli = await pg.connect(client => client);
43 | let throws = false;
44 | try {
45 | await cli.queryArgs('SELECT 1');
46 | } catch (err) {
47 | throws = true;
48 | }
49 | expect(throws).equal(true);
50 | });
51 |
52 | it('should release connection on client error', async () => {
53 | try {
54 | await pg.connect(async () => {
55 | expect(pg.getDriver().connections).to.be.equal(1);
56 | throw new Error('CustomError');
57 | });
58 | } catch (err) {
59 | expect(err.message).to.be.equal('CustomError');
60 | }
61 | expect(pg.getDriver().connections).to.be.equal(0);
62 | });
63 |
64 | describe('method', () => {
65 | it('query works', async () => {
66 | await pg.connect(async q => {
67 | expect(pg.getDriver().connections).to.be.equal(1);
68 |
69 | const row = await q('ROW');
70 | expect(row.rows).to.have.length(1);
71 |
72 | const rows = await q('ROWS');
73 | expect(rows.rows).to.have.length(2);
74 |
75 | const none = await q('NONE');
76 | expect(none.rows).to.have.length(0);
77 |
78 | try {
79 | await q('INVALID');
80 | } catch (err) {
81 | expect(err).to.be.instanceOf(Error);
82 | }
83 |
84 | expect(pg.getDriver().connections).to.be.equal(1);
85 | });
86 | expect(pg.getDriver().connections).to.be.equal(0);
87 | });
88 |
89 | it('query.query works', async () => {
90 | await pg.connect(async q => {
91 | expect(pg.getDriver().connections).to.be.equal(1);
92 |
93 | const row = await q.query('ROW');
94 | expect(row.rows).to.have.length(1);
95 |
96 | const rows = await q.query('ROWS');
97 | expect(rows.rows).to.have.length(2);
98 |
99 | const none = await q.query('NONE');
100 | expect(none.rows).to.have.length(0);
101 |
102 | try {
103 | await q.query('INVALID');
104 | } catch (err) {
105 | expect(err).to.be.instanceOf(Error);
106 | }
107 |
108 | expect(pg.getDriver().connections).to.be.equal(1);
109 | });
110 | expect(pg.getDriver().connections).to.be.equal(0);
111 | });
112 |
113 | it('query.rows works', async () => {
114 | await pg.connect(async q => {
115 | expect(pg.getDriver().connections).to.be.equal(1);
116 |
117 | const row = await q.rows('ROW');
118 | expect(row).to.have.length(1);
119 |
120 | const rows = await q.rows('ROWS');
121 | expect(rows).to.have.length(2);
122 |
123 | const none = await q.rows('NONE');
124 | expect(none).to.have.length(0);
125 |
126 | try {
127 | await q.rows('INVALID');
128 | } catch (err) {
129 | expect(err).to.be.instanceOf(Error);
130 | }
131 |
132 | expect(pg.getDriver().connections).to.be.equal(1);
133 | });
134 | expect(pg.getDriver().connections).to.be.equal(0);
135 | });
136 |
137 | it('query.row works', async () => {
138 | await pg.connect(async q => {
139 | expect(pg.getDriver().connections).to.be.equal(1);
140 |
141 | const row = await q.row('ROW');
142 | expect(row).to.be.a('object');
143 |
144 | try {
145 | await q.row('ROWS');
146 | } catch (err) {
147 | expect(err).to.be.instanceOf(Error);
148 | }
149 |
150 | try {
151 | await q.row('NONE');
152 | } catch (err) {
153 | expect(err).to.be.instanceOf(Error);
154 | }
155 |
156 | try {
157 | await q.row('INVALID');
158 | } catch (err) {
159 | expect(err).to.be.instanceOf(Error);
160 | }
161 |
162 | expect(pg.getDriver().connections).to.be.equal(1);
163 | });
164 | expect(pg.getDriver().connections).to.be.equal(0);
165 | });
166 |
167 | it('query.value works', async () => {
168 | await pg.connect(async q => {
169 | expect(pg.getDriver().connections).to.be.equal(1);
170 |
171 | const value = await q.value('VALUE');
172 | expect(value).to.be.equal('value');
173 |
174 | try {
175 | await q.value('ROW');
176 | } catch (err) {
177 | expect(err).to.be.instanceOf(Error);
178 | }
179 |
180 | try {
181 | await q.value('ROWS');
182 | } catch (err) {
183 | expect(err).to.be.instanceOf(Error);
184 | }
185 |
186 | try {
187 | await q.value('NONE');
188 | } catch (err) {
189 | expect(err).to.be.instanceOf(Error);
190 | }
191 |
192 | try {
193 | await q.value('INVALID');
194 | } catch (err) {
195 | expect(err).to.be.instanceOf(Error);
196 | }
197 |
198 | expect(pg.getDriver().connections).to.be.equal(1);
199 | });
200 | expect(pg.getDriver().connections).to.be.equal(0);
201 | });
202 |
203 | it('rows - shorthand works', async () => {
204 | expect(pg.getDriver().connections).to.be.equal(0);
205 | const row = await pg.rows('ROW', null, 'VALID');
206 | expect(row).to.have.length(1);
207 | expect(pg.getDriver().connections).to.be.equal(0);
208 | const rows = await pg.rows('ROWS');
209 | expect(rows).to.have.length(2);
210 | expect(pg.getDriver().connections).to.be.equal(0);
211 | const none = await pg.rows('NONE');
212 | expect(none).to.have.length(0);
213 | expect(pg.getDriver().connections).to.be.equal(0);
214 | });
215 | });
216 | });
217 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "node": true
4 | },
5 | "parser": "babel-eslint",
6 | "parserOptions": {
7 | "ecmaVersion": 6,
8 | "sourceType": "module",
9 | "ecmaFeatures": {
10 | "modules": true
11 | }
12 | },
13 | "plugins": ["import"],
14 | "rules": {
15 | // enforces getter/setter pairs in objects
16 | "accessor-pairs": 0,
17 | // treat var statements as if they were block scoped
18 | "block-scoped-var": 2,
19 | // specify the maximum cyclomatic complexity allowed in a program
20 | "complexity": [0, 11],
21 | // require return statements to either always or never specify values
22 | "consistent-return": 2,
23 | // specify curly brace conventions for all control statements
24 | "curly": [2, "multi", "consistent"],
25 | // require default case in switch statements
26 | "default-case": 2,
27 | // encourages use of dot notation whenever possible
28 | "dot-notation": [2, { "allowKeywords": true }],
29 | // enforces consistent newlines before or after dots
30 | "dot-location": 0,
31 | // require the use of === and !==
32 | "eqeqeq": 2,
33 | // make sure for-in loops have an if statement
34 | "guard-for-in": 2,
35 | // disallow the use of alert, confirm, and prompt
36 | "no-alert": 1,
37 | // disallow use of arguments.caller or arguments.callee
38 | "no-caller": 2,
39 | // disallow lexical declarations in case/default clauses
40 | // http://eslint.org/docs/rules/no-case-declarations.html
41 | "no-case-declarations": 2,
42 | // disallow division operators explicitly at beginning of regular expression
43 | "no-div-regex": 0,
44 | // disallow else after a return in an if
45 | "no-else-return": 2,
46 | // disallow comparisons to null without a type-checking operator
47 | "no-eq-null": 0,
48 | // disallow use of eval()
49 | "no-eval": 2,
50 | // disallow adding to native types
51 | "no-extend-native": 2,
52 | // disallow unnecessary function binding
53 | "no-extra-bind": 2,
54 | // disallow fallthrough of case statements
55 | "no-fallthrough": 2,
56 | // disallow the use of leading or trailing decimal points in numeric literals
57 | "no-floating-decimal": 2,
58 | // disallow the type conversions with shorter notations
59 | "no-implicit-coercion": 0,
60 | // disallow use of eval()-like methods
61 | "no-implied-eval": 2,
62 | // disallow this keywords outside of classes or class-like objects
63 | "no-invalid-this": 0,
64 | // disallow usage of __iterator__ property
65 | "no-iterator": 2,
66 | // disallow use of labeled statements
67 | "no-labels": 2,
68 | // disallow unnecessary nested blocks
69 | "no-lone-blocks": 2,
70 | // disallow creation of functions within loops
71 | "no-loop-func": 2,
72 | // disallow use of multiple spaces
73 | "no-multi-spaces": 2,
74 | // disallow use of multiline strings
75 | "no-multi-str": 2,
76 | // disallow reassignments of native objects
77 | "no-native-reassign": 2,
78 | // disallow use of new operator when not part of the assignment or comparison
79 | "no-new": 2,
80 | // disallow use of new operator for Function object
81 | "no-new-func": 2,
82 | // disallows creating new instances of String,Number, and Boolean
83 | "no-new-wrappers": 2,
84 | // disallow use of (old style) octal literals
85 | "no-octal": 2,
86 | // disallow use of octal escape sequences in string literals, such as
87 | // var foo = "Copyright \251";
88 | "no-octal-escape": 2,
89 | // disallow use of process.env
90 | "no-process-env": 0,
91 | // disallow usage of __proto__ property
92 | "no-proto": 2,
93 | // disallow declaring the same variable more then once
94 | "no-redeclare": 2,
95 | // disallow use of assignment in return statement
96 | "no-return-assign": 2,
97 | // disallow use of `javascript:` urls.
98 | "no-script-url": 2,
99 | // disallow comparisons where both sides are exactly the same
100 | "no-self-compare": 2,
101 | // disallow use of comma operator
102 | "no-sequences": 2,
103 | // restrict what can be thrown as an exception
104 | "no-throw-literal": 2,
105 | // disallow usage of expressions in statement position
106 | "no-unused-expressions": 1,
107 | // disallow unnecessary .call() and .apply()
108 | "no-useless-call": 0,
109 | // disallow use of void operator
110 | "no-void": 0,
111 | // disallow usage of configurable warning terms in comments: e.g. todo
112 | "no-warning-comments": [
113 | 0,
114 | { "terms": ["todo", "fixme", "xxx"], "location": "start" }
115 | ],
116 | // disallow use of the with statement
117 | "no-with": 2,
118 | // require use of the second argument for parseInt()
119 | "radix": 2,
120 | // requires to declare all vars on top of their containing scope
121 | "vars-on-top": 2,
122 | // require immediate function invocation to be wrapped in parentheses
123 | // http://eslint.org/docs/rules/wrap-iife.html
124 | "wrap-iife": [2, "outside"],
125 | // require or disallow Yoda conditions
126 | "yoda": 2,
127 | // enforce return after a callback
128 | "callback-return": 0,
129 | // enforces error handling in callbacks (node environment)
130 | "handle-callback-err": 0,
131 | // disallow mixing regular variable and require declarations
132 | "no-mixed-requires": [0, false],
133 | // disallow use of new operator with the require function
134 | "no-new-require": 0,
135 | // disallow string concatenation with __dirname and __filename
136 | "no-path-concat": 0,
137 | // disallow process.exit()
138 | "no-process-exit": 0,
139 | // restrict usage of specified node modules
140 | "no-restricted-modules": 0,
141 | // disallow use of synchronous methods (off by default)
142 | "no-sync": 0,
143 | // enforces no braces where they can be omitted
144 | // http://eslint.org/docs/rules/arrow-body-style
145 | "arrow-body-style": [1, "as-needed"],
146 | // require parens in arrow function arguments
147 | "arrow-parens": 0,
148 | // require space before/after arrow function"s arrow
149 | // https://github.com/eslint/eslint/blob/master/docs/rules/arrow-spacing.md
150 | "arrow-spacing": [1, { "before": true, "after": true }],
151 | // verify super() callings in constructors
152 | "constructor-super": 0,
153 | // enforce the spacing around the * in generator functions
154 | "generator-star-spacing": 0,
155 | // disallow modifying variables of class declarations
156 | "no-class-assign": 0,
157 | // disallow modifying variables that are declared using const
158 | "no-const-assign": 2,
159 | // disallow to use this/super before super() calling in constructors.
160 | "no-this-before-super": 0,
161 | // require let or const instead of var
162 | "no-var": 2,
163 | // require method and property shorthand syntax for object literals
164 | // https://github.com/eslint/eslint/blob/master/docs/rules/object-shorthand.md
165 | "object-shorthand": [2, "always"],
166 | // suggest using arrow functions as callbacks
167 | "prefer-arrow-callback": 2,
168 | // suggest using of const declaration for variables that are never modified after declared
169 | "prefer-const": 1,
170 | // suggest using the spread operator instead of .apply()
171 | "prefer-spread": 0,
172 | // suggest using Reflect methods where applicable
173 | "prefer-reflect": 0,
174 | // suggest using template literals instead of string concatenation
175 | // http://eslint.org/docs/rules/prefer-template
176 | "prefer-template": 1,
177 | // disallow generator functions that do not have yield
178 | "require-yield": 0,
179 | "import/default": 2,
180 | "import/export": 2,
181 | "import/named": 2,
182 | "import/namespace": 2,
183 | "import/no-unresolved": [2, { "commonjs": true, "amd": true }],
184 | "new-cap": [2, { "capIsNew": false, "newIsCap": true }],
185 | "no-console": 1,
186 | "no-shadow": 1,
187 | "no-unused-vars": 1,
188 | "no-use-before-define": [2, "nofunc"],
189 | "object-curly-spacing": [2, "always"],
190 | "padded-blocks": 0,
191 | "spaced-comment": 1,
192 | "strict": [2, "never"],
193 | "semi": [1, "always"]
194 | },
195 | "globals": {
196 | "require": false
197 | },
198 | "settings": {
199 | "import/ignore": ["node_modules", "lib", "\\.json$"],
200 | "import/parser": "babel-eslint",
201 | "import/resolve": {
202 | "extensions": [".js", ".json"]
203 | }
204 | }
205 | }
206 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # pg-async
2 |
3 | [](https://greenkeeper.io/)
4 |
5 | [](https://badge.fury.io/js/pg-async)
6 | [](https://www.npmjs.com/package/pg-async)
7 | [](https://david-dm.org/langpavel/node-pg-async)
8 | [](https://david-dm.org/langpavel/node-pg-async#info=devDependencies)
9 | [](https://travis-ci.org/langpavel/node-pg-async)
10 | [](https://coveralls.io/github/langpavel/node-pg-async?branch=master)
11 | [](https://gitter.im/langpavel/node-pg-async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
12 |
13 | Tiny but powerful Promise based PostgreSQL client for node.js
14 | designed for easy use with ES7 async/await.
15 | Based on [node-postgres](https://github.com/brianc/node-postgres) (known as `pg` in npm registry).
16 | Can use `pg` or native `pg-native` backend.
17 |
18 | ## Example
19 |
20 | ```js
21 | import PgAsync, {SQL} from 'pg-async';
22 |
23 | // using default connection
24 | const pgAsync = new PgAsync();
25 |
26 | const userTable = 'user';
27 | const sqlUserByLogin = (login) => SQL`
28 | select id
29 | from $ID${userTable}
30 | where login = ${login}
31 | `;
32 |
33 | async function setPassword(login, newPwd) {
34 | const userId = await pgAsync.value(sqlUserByLogin(login));
35 | // userId is guaranted here,
36 | // pgAsync.value requires query yielding exactly one row with one column.
37 | await pgAsync.query(SQL`
38 | update $ID${userTable} set
39 | passwd = ${newPwd}
40 | where userId = ${userId}
41 | `);
42 | }
43 |
44 | ```
45 |
46 | ## Install
47 |
48 | ```
49 | $ npm install --save pg-async
50 | ```
51 |
52 | ## API
53 |
54 | #### Configuring Connection Options
55 | ```js
56 | new PgAsync([connectionOptions], [driver])
57 | ```
58 |
59 | * The default export of `pg-async` is `PgAsync` class which let you configure connection options
60 | * Connection options defaults to [`pg.defaults`](https://github.com/brianc/node-postgres/wiki/pg#pgdefaults)
61 | * Optional `driver` let you choose underlying library
62 | * To use the [native bindings](https://github.com/brianc/node-pg-native.git) you must `npm install --save pg-native`
63 |
64 | ```js
65 | import PgAsync from 'pg-async';
66 |
67 | // using default connection
68 | const pgAsync = new PgAsync();
69 |
70 | // using connection string
71 | const pgAsync = new PgAsync({connectionString: 'postgres://user:secret@host:port/database'});
72 |
73 | // using connection object
74 | const pgAsync = new PgAsync({user, password, host, port, database, ...});
75 |
76 | // using default for current user, with native driver
77 | // install pg-native package manually
78 | const pgAsync = new PgAsync(null, 'native');
79 | const pgAsync = new PgAsync(null, require('pg').native);
80 | ```
81 |
82 | ---
83 |
84 | #### ```await pgAsync.query(SQL`...`) -> pg.Result```
85 | #### `await pgAsync.query(sql, values...) -> pg.Result`
86 | #### `await pgAsync.queryArgs(sql, [values]) -> pg.Result`
87 |
88 | * Execute SQL and return `Result` object from underlying `pg` library
89 | * Interesting properties on `Result` object are:
90 | * `rowCount` Number – returned rows
91 | * `oid` Number – Postgres oid
92 | * `rows` Array – Actual result of `pgAsync.rows()`
93 | * `rowAsArray` Boolean
94 | * `fields` Array of:
95 | * `name` String – name or alias of column
96 | * `tableID` Number – oid of table or 0
97 | * `columnID` Number – index of column in table or 0
98 | * `dataTypeID` Number – oid of data type
99 | * `dataTypeSize` Number – size in bytes od colum, -1 for variable length
100 | * `dataTypeModifier` Number
101 |
102 | ---
103 |
104 | #### ```await pgAsync.rows(SQL`...`) -> array of objects```
105 | #### `await pgAsync.rows(sql, values...) -> array of objects`
106 | #### `await pgAsync.rowsArgs(sql, [values]) -> array of objects`
107 |
108 | * Execute SQL and return array of key/value objects (`result.rows`)
109 |
110 | ---
111 |
112 | #### ```await pgAsync.row(SQL`...`) -> object```
113 | #### `await pgAsync.row(sql, values...) -> object`
114 | #### `await pgAsync.rowArgs(sql, [values]) -> object`
115 |
116 | * Execute SQL and return single key/value object.
117 | If query yields more than one or none rows, promise will be rejected.
118 | * Rejected promise throw exception at **`await`** location.
119 |
120 | ---
121 |
122 | #### ```await pgAsync.value(SQL`...`) -> any```
123 | #### `await pgAsync.value(sql, values...) -> any`
124 | #### `await pgAsync.valueArgs(sql, [values]) -> any`
125 |
126 | * Same as row, but query must yields single column in single row, otherwise throws.
127 |
128 | ---
129 |
130 | #### `await pgAsync.connect(async (client) => innerResult) -> innerResult`
131 |
132 | * Execute multiple queries in sequence on same connection. This is handy for transactions.
133 | * `asyncFunc` here has signature `async (client, pgClient) => { ... }`
134 | * provided `client` has async methods:
135 | * `query`, `rows`, `row`, `value` as above
136 | * `queryArgs`, `rowsArgs`, `rowArgs`, `valueArgs` as above
137 | * `startTransaction`, `commit`, `rollback` - start new transaction manually. Use `pgAsync.transaction` when possible
138 | * `client` itself is shorthand for `query`
139 |
140 | ---
141 |
142 | #### `await pgAsync.transaction(async (client) => innerResult) -> innerResult`
143 |
144 | Transaction is similar to `connect` but automatically start and commit transaction,
145 | rollback on throwen error
146 | __Example:__
147 |
148 | ```js
149 | const pgAsync = new PgAsync();
150 |
151 | function moveMoney(fromAccount, toAccount, amount) {
152 | return pgAsync.transaction(async (client) => {
153 | let movementFrom, movementTo, movementId;
154 | const sql = `
155 | INSERT INTO bank_account (account, amount)
156 | VALUES ($1, $2)
157 | RETURNING id
158 | `;
159 | movementFrom = await client.value(sql, [fromAccount, -amount]);
160 | movementTo = await client.value(sql, [toAccount, amount]);
161 | return {movementFrom, movementTo}
162 | });
163 | }
164 |
165 | async function doTheWork() {
166 | // ...
167 | try {
168 | const result = await moveMoney('alice', 'bob', 19.95);
169 | // transaction is commited
170 | } catch (err) {
171 | // transaction is rollbacked
172 | }
173 | // ...
174 | }
175 | ```
176 |
177 | ---
178 |
179 | #### `await pgAsync.getClient([connectionOptions]) -> {client, done}`
180 |
181 | * Get unwrapped `pg.Client` callback based instance.
182 | You should not call this method unless you know what are you doing.
183 | * Client must be returned to pool manually by calling `done()`
184 |
185 | ---
186 |
187 | #### `pgAsync.closeConnections()`
188 |
189 | * Disconnects all idle clients within all active pools, and has all client pools terminate.
190 | See [`pool.end()`](https://node-postgres.com/api/pool#pool-end)
191 | * This actually terminates all connections on driver used by Pg instance
192 |
193 | ---
194 |
195 | ## Features
196 |
197 | * [x] `pg` driver support
198 | * [x] `pg.native` driver support
199 | * [x] [`debug`](https://github.com/visionmedia/debug#readme) — Enable debugging with `DEBUG="pg-async"` environment variable
200 | * [x] Transaction API wrapper - Postgres does not support nested transactions
201 | * [x] Template tag SQL formatting
202 | * [ ] Transaction `SAVEPOINT` support
203 | * [ ] Cursor API wrapper
204 |
205 | If you miss something, don't be shy, just
206 | [open new issue!](https://github.com/langpavel/node-pg-async/issues)
207 | It will be nice if you label your issue with prefix `[bug]` `[doc]` `[question]` `[typo]`
208 | etc.
209 |
210 | ## License (MIT)
211 |
212 | Copyright (c) 2016 Pavel Lang (langpavel@phpskelet.org)
213 |
214 |
215 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
216 |
217 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
218 |
219 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
220 |
221 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@7.0.0-beta.44":
6 | version "7.0.0-beta.44"
7 | resolved "http://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
8 | dependencies:
9 | "@babel/highlight" "7.0.0-beta.44"
10 |
11 | "@babel/generator@7.0.0-beta.44":
12 | version "7.0.0-beta.44"
13 | resolved "http://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42"
14 | dependencies:
15 | "@babel/types" "7.0.0-beta.44"
16 | jsesc "^2.5.1"
17 | lodash "^4.2.0"
18 | source-map "^0.5.0"
19 | trim-right "^1.0.1"
20 |
21 | "@babel/helper-function-name@7.0.0-beta.44":
22 | version "7.0.0-beta.44"
23 | resolved "http://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd"
24 | dependencies:
25 | "@babel/helper-get-function-arity" "7.0.0-beta.44"
26 | "@babel/template" "7.0.0-beta.44"
27 | "@babel/types" "7.0.0-beta.44"
28 |
29 | "@babel/helper-get-function-arity@7.0.0-beta.44":
30 | version "7.0.0-beta.44"
31 | resolved "http://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15"
32 | dependencies:
33 | "@babel/types" "7.0.0-beta.44"
34 |
35 | "@babel/helper-split-export-declaration@7.0.0-beta.44":
36 | version "7.0.0-beta.44"
37 | resolved "http://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc"
38 | dependencies:
39 | "@babel/types" "7.0.0-beta.44"
40 |
41 | "@babel/highlight@7.0.0-beta.44":
42 | version "7.0.0-beta.44"
43 | resolved "http://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5"
44 | dependencies:
45 | chalk "^2.0.0"
46 | esutils "^2.0.2"
47 | js-tokens "^3.0.0"
48 |
49 | "@babel/template@7.0.0-beta.44":
50 | version "7.0.0-beta.44"
51 | resolved "http://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f"
52 | dependencies:
53 | "@babel/code-frame" "7.0.0-beta.44"
54 | "@babel/types" "7.0.0-beta.44"
55 | babylon "7.0.0-beta.44"
56 | lodash "^4.2.0"
57 |
58 | "@babel/traverse@7.0.0-beta.44":
59 | version "7.0.0-beta.44"
60 | resolved "http://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966"
61 | dependencies:
62 | "@babel/code-frame" "7.0.0-beta.44"
63 | "@babel/generator" "7.0.0-beta.44"
64 | "@babel/helper-function-name" "7.0.0-beta.44"
65 | "@babel/helper-split-export-declaration" "7.0.0-beta.44"
66 | "@babel/types" "7.0.0-beta.44"
67 | babylon "7.0.0-beta.44"
68 | debug "^3.1.0"
69 | globals "^11.1.0"
70 | invariant "^2.2.0"
71 | lodash "^4.2.0"
72 |
73 | "@babel/types@7.0.0-beta.44":
74 | version "7.0.0-beta.44"
75 | resolved "http://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757"
76 | dependencies:
77 | esutils "^2.0.2"
78 | lodash "^4.2.0"
79 | to-fast-properties "^2.0.0"
80 |
81 | acorn-jsx@^3.0.0:
82 | version "3.0.1"
83 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
84 | dependencies:
85 | acorn "^3.0.4"
86 |
87 | acorn@^3.0.4:
88 | version "3.3.0"
89 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
90 |
91 | acorn@^5.0.1:
92 | version "5.1.1"
93 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
94 |
95 | acorn@^5.5.0:
96 | version "5.7.3"
97 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
98 |
99 | ajv-keywords@^1.0.0:
100 | version "1.5.1"
101 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
102 |
103 | ajv-keywords@^2.1.0:
104 | version "2.1.1"
105 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
106 |
107 | ajv@^4.7.0:
108 | version "4.11.8"
109 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
110 | dependencies:
111 | co "^4.6.0"
112 | json-stable-stringify "^1.0.1"
113 |
114 | ajv@^5.2.0:
115 | version "5.2.2"
116 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39"
117 | dependencies:
118 | co "^4.6.0"
119 | fast-deep-equal "^1.0.0"
120 | json-schema-traverse "^0.3.0"
121 | json-stable-stringify "^1.0.1"
122 |
123 | ajv@^5.2.3, ajv@^5.3.0:
124 | version "5.5.2"
125 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
126 | dependencies:
127 | co "^4.6.0"
128 | fast-deep-equal "^1.0.0"
129 | fast-json-stable-stringify "^2.0.0"
130 | json-schema-traverse "^0.3.0"
131 |
132 | ansi-colors@^1.0.1:
133 | version "1.1.0"
134 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
135 | dependencies:
136 | ansi-wrap "^0.1.0"
137 |
138 | ansi-escapes@^2.0.0:
139 | version "2.0.0"
140 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
141 |
142 | ansi-gray@^0.1.1:
143 | version "0.1.1"
144 | resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
145 | dependencies:
146 | ansi-wrap "0.1.0"
147 |
148 | ansi-regex@^2.0.0:
149 | version "2.1.1"
150 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
151 |
152 | ansi-regex@^3.0.0:
153 | version "3.0.0"
154 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
155 |
156 | ansi-styles@^2.2.1:
157 | version "2.2.1"
158 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
159 |
160 | ansi-styles@^3.1.0:
161 | version "3.1.0"
162 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750"
163 | dependencies:
164 | color-convert "^1.0.0"
165 |
166 | ansi-styles@^3.2.1:
167 | version "3.2.1"
168 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
169 | dependencies:
170 | color-convert "^1.9.0"
171 |
172 | ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
173 | version "0.1.0"
174 | resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
175 |
176 | ap@~0.2.0:
177 | version "0.2.0"
178 | resolved "https://registry.yarnpkg.com/ap/-/ap-0.2.0.tgz#ae0942600b29912f0d2b14ec60c45e8f330b6110"
179 |
180 | archy@^1.0.0:
181 | version "1.0.0"
182 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
183 |
184 | argparse@^1.0.7:
185 | version "1.0.9"
186 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
187 | dependencies:
188 | sprintf-js "~1.0.2"
189 |
190 | arr-diff@^2.0.0:
191 | version "2.0.0"
192 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
193 | dependencies:
194 | arr-flatten "^1.0.1"
195 |
196 | arr-diff@^4.0.0:
197 | version "4.0.0"
198 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
199 |
200 | arr-flatten@^1.0.1:
201 | version "1.1.0"
202 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
203 |
204 | arr-union@^3.1.0:
205 | version "3.1.0"
206 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
207 |
208 | array-differ@^1.0.0:
209 | version "1.0.0"
210 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
211 |
212 | array-each@^1.0.1:
213 | version "1.0.1"
214 | resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
215 |
216 | array-slice@^1.0.0:
217 | version "1.0.0"
218 | resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f"
219 |
220 | array-union@^1.0.1:
221 | version "1.0.2"
222 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
223 | dependencies:
224 | array-uniq "^1.0.1"
225 |
226 | array-uniq@^1.0.1, array-uniq@^1.0.2:
227 | version "1.0.3"
228 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
229 |
230 | array-unique@^0.2.1:
231 | version "0.2.1"
232 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
233 |
234 | arrify@^1.0.0:
235 | version "1.0.1"
236 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
237 |
238 | assertion-error@^1.0.1:
239 | version "1.0.2"
240 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
241 |
242 | assign-symbols@^1.0.0:
243 | version "1.0.0"
244 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
245 |
246 | babel-code-frame@^6.22.0:
247 | version "6.22.0"
248 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
249 | dependencies:
250 | chalk "^1.1.0"
251 | esutils "^2.0.2"
252 | js-tokens "^3.0.0"
253 |
254 | babel-core@^6.24.1, babel-core@^6.25.0:
255 | version "6.25.0"
256 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
257 | dependencies:
258 | babel-code-frame "^6.22.0"
259 | babel-generator "^6.25.0"
260 | babel-helpers "^6.24.1"
261 | babel-messages "^6.23.0"
262 | babel-register "^6.24.1"
263 | babel-runtime "^6.22.0"
264 | babel-template "^6.25.0"
265 | babel-traverse "^6.25.0"
266 | babel-types "^6.25.0"
267 | babylon "^6.17.2"
268 | convert-source-map "^1.1.0"
269 | debug "^2.1.1"
270 | json5 "^0.5.0"
271 | lodash "^4.2.0"
272 | minimatch "^3.0.2"
273 | path-is-absolute "^1.0.0"
274 | private "^0.1.6"
275 | slash "^1.0.0"
276 | source-map "^0.5.0"
277 |
278 | babel-eslint@^8.0.1:
279 | version "8.2.6"
280 | resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9"
281 | dependencies:
282 | "@babel/code-frame" "7.0.0-beta.44"
283 | "@babel/traverse" "7.0.0-beta.44"
284 | "@babel/types" "7.0.0-beta.44"
285 | babylon "7.0.0-beta.44"
286 | eslint-scope "3.7.1"
287 | eslint-visitor-keys "^1.0.0"
288 |
289 | babel-generator@^6.25.0:
290 | version "6.25.0"
291 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
292 | dependencies:
293 | babel-messages "^6.23.0"
294 | babel-runtime "^6.22.0"
295 | babel-types "^6.25.0"
296 | detect-indent "^4.0.0"
297 | jsesc "^1.3.0"
298 | lodash "^4.2.0"
299 | source-map "^0.5.0"
300 | trim-right "^1.0.1"
301 |
302 | babel-helper-bindify-decorators@^6.24.1:
303 | version "6.24.1"
304 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
305 | dependencies:
306 | babel-runtime "^6.22.0"
307 | babel-traverse "^6.24.1"
308 | babel-types "^6.24.1"
309 |
310 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
311 | version "6.24.1"
312 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
313 | dependencies:
314 | babel-helper-explode-assignable-expression "^6.24.1"
315 | babel-runtime "^6.22.0"
316 | babel-types "^6.24.1"
317 |
318 | babel-helper-call-delegate@^6.24.1:
319 | version "6.24.1"
320 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
321 | dependencies:
322 | babel-helper-hoist-variables "^6.24.1"
323 | babel-runtime "^6.22.0"
324 | babel-traverse "^6.24.1"
325 | babel-types "^6.24.1"
326 |
327 | babel-helper-explode-assignable-expression@^6.24.1:
328 | version "6.24.1"
329 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
330 | dependencies:
331 | babel-runtime "^6.22.0"
332 | babel-traverse "^6.24.1"
333 | babel-types "^6.24.1"
334 |
335 | babel-helper-explode-class@^6.24.1:
336 | version "6.24.1"
337 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
338 | dependencies:
339 | babel-helper-bindify-decorators "^6.24.1"
340 | babel-runtime "^6.22.0"
341 | babel-traverse "^6.24.1"
342 | babel-types "^6.24.1"
343 |
344 | babel-helper-function-name@^6.24.1:
345 | version "6.24.1"
346 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
347 | dependencies:
348 | babel-helper-get-function-arity "^6.24.1"
349 | babel-runtime "^6.22.0"
350 | babel-template "^6.24.1"
351 | babel-traverse "^6.24.1"
352 | babel-types "^6.24.1"
353 |
354 | babel-helper-get-function-arity@^6.24.1:
355 | version "6.24.1"
356 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
357 | dependencies:
358 | babel-runtime "^6.22.0"
359 | babel-types "^6.24.1"
360 |
361 | babel-helper-hoist-variables@^6.24.1:
362 | version "6.24.1"
363 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
364 | dependencies:
365 | babel-runtime "^6.22.0"
366 | babel-types "^6.24.1"
367 |
368 | babel-helper-regex@^6.24.1:
369 | version "6.24.1"
370 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
371 | dependencies:
372 | babel-runtime "^6.22.0"
373 | babel-types "^6.24.1"
374 | lodash "^4.2.0"
375 |
376 | babel-helper-remap-async-to-generator@^6.24.1:
377 | version "6.24.1"
378 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
379 | dependencies:
380 | babel-helper-function-name "^6.24.1"
381 | babel-runtime "^6.22.0"
382 | babel-template "^6.24.1"
383 | babel-traverse "^6.24.1"
384 | babel-types "^6.24.1"
385 |
386 | babel-helpers@^6.24.1:
387 | version "6.24.1"
388 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
389 | dependencies:
390 | babel-runtime "^6.22.0"
391 | babel-template "^6.24.1"
392 |
393 | babel-messages@^6.23.0:
394 | version "6.23.0"
395 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
396 | dependencies:
397 | babel-runtime "^6.22.0"
398 |
399 | babel-plugin-add-module-exports@^0.2.1:
400 | version "0.2.1"
401 | resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25"
402 |
403 | babel-plugin-syntax-async-functions@^6.8.0:
404 | version "6.13.0"
405 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
406 |
407 | babel-plugin-syntax-async-generators@^6.5.0:
408 | version "6.13.0"
409 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
410 |
411 | babel-plugin-syntax-class-constructor-call@^6.18.0:
412 | version "6.18.0"
413 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416"
414 |
415 | babel-plugin-syntax-class-properties@^6.8.0:
416 | version "6.13.0"
417 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
418 |
419 | babel-plugin-syntax-decorators@^6.13.0:
420 | version "6.13.0"
421 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
422 |
423 | babel-plugin-syntax-dynamic-import@^6.18.0:
424 | version "6.18.0"
425 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
426 |
427 | babel-plugin-syntax-exponentiation-operator@^6.8.0:
428 | version "6.13.0"
429 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
430 |
431 | babel-plugin-syntax-export-extensions@^6.8.0:
432 | version "6.13.0"
433 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
434 |
435 | babel-plugin-syntax-object-rest-spread@^6.8.0:
436 | version "6.13.0"
437 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
438 |
439 | babel-plugin-syntax-trailing-function-commas@^6.22.0:
440 | version "6.22.0"
441 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
442 |
443 | babel-plugin-transform-async-generator-functions@^6.24.1:
444 | version "6.24.1"
445 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
446 | dependencies:
447 | babel-helper-remap-async-to-generator "^6.24.1"
448 | babel-plugin-syntax-async-generators "^6.5.0"
449 | babel-runtime "^6.22.0"
450 |
451 | babel-plugin-transform-async-to-generator@^6.24.1:
452 | version "6.24.1"
453 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
454 | dependencies:
455 | babel-helper-remap-async-to-generator "^6.24.1"
456 | babel-plugin-syntax-async-functions "^6.8.0"
457 | babel-runtime "^6.22.0"
458 |
459 | babel-plugin-transform-class-constructor-call@^6.24.1:
460 | version "6.24.1"
461 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9"
462 | dependencies:
463 | babel-plugin-syntax-class-constructor-call "^6.18.0"
464 | babel-runtime "^6.22.0"
465 | babel-template "^6.24.1"
466 |
467 | babel-plugin-transform-class-properties@^6.24.1:
468 | version "6.24.1"
469 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
470 | dependencies:
471 | babel-helper-function-name "^6.24.1"
472 | babel-plugin-syntax-class-properties "^6.8.0"
473 | babel-runtime "^6.22.0"
474 | babel-template "^6.24.1"
475 |
476 | babel-plugin-transform-decorators@^6.24.1:
477 | version "6.24.1"
478 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d"
479 | dependencies:
480 | babel-helper-explode-class "^6.24.1"
481 | babel-plugin-syntax-decorators "^6.13.0"
482 | babel-runtime "^6.22.0"
483 | babel-template "^6.24.1"
484 | babel-types "^6.24.1"
485 |
486 | babel-plugin-transform-es2015-destructuring@^6.6.5:
487 | version "6.23.0"
488 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
489 | dependencies:
490 | babel-runtime "^6.22.0"
491 |
492 | babel-plugin-transform-es2015-function-name@^6.5.0:
493 | version "6.24.1"
494 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
495 | dependencies:
496 | babel-helper-function-name "^6.24.1"
497 | babel-runtime "^6.22.0"
498 | babel-types "^6.24.1"
499 |
500 | babel-plugin-transform-es2015-modules-commonjs@^6.7.0:
501 | version "6.24.1"
502 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
503 | dependencies:
504 | babel-plugin-transform-strict-mode "^6.24.1"
505 | babel-runtime "^6.22.0"
506 | babel-template "^6.24.1"
507 | babel-types "^6.24.1"
508 |
509 | babel-plugin-transform-es2015-parameters@^6.7.0:
510 | version "6.24.1"
511 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
512 | dependencies:
513 | babel-helper-call-delegate "^6.24.1"
514 | babel-helper-get-function-arity "^6.24.1"
515 | babel-runtime "^6.22.0"
516 | babel-template "^6.24.1"
517 | babel-traverse "^6.24.1"
518 | babel-types "^6.24.1"
519 |
520 | babel-plugin-transform-es2015-shorthand-properties@^6.5.0:
521 | version "6.24.1"
522 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
523 | dependencies:
524 | babel-runtime "^6.22.0"
525 | babel-types "^6.24.1"
526 |
527 | babel-plugin-transform-es2015-sticky-regex@^6.5.0:
528 | version "6.24.1"
529 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
530 | dependencies:
531 | babel-helper-regex "^6.24.1"
532 | babel-runtime "^6.22.0"
533 | babel-types "^6.24.1"
534 |
535 | babel-plugin-transform-es2015-unicode-regex@^6.5.0:
536 | version "6.24.1"
537 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
538 | dependencies:
539 | babel-helper-regex "^6.24.1"
540 | babel-runtime "^6.22.0"
541 | regexpu-core "^2.0.0"
542 |
543 | babel-plugin-transform-exponentiation-operator@^6.24.1:
544 | version "6.24.1"
545 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
546 | dependencies:
547 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
548 | babel-plugin-syntax-exponentiation-operator "^6.8.0"
549 | babel-runtime "^6.22.0"
550 |
551 | babel-plugin-transform-export-extensions@^6.22.0:
552 | version "6.22.0"
553 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653"
554 | dependencies:
555 | babel-plugin-syntax-export-extensions "^6.8.0"
556 | babel-runtime "^6.22.0"
557 |
558 | babel-plugin-transform-object-rest-spread@^6.22.0:
559 | version "6.23.0"
560 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921"
561 | dependencies:
562 | babel-plugin-syntax-object-rest-spread "^6.8.0"
563 | babel-runtime "^6.22.0"
564 |
565 | babel-plugin-transform-strict-mode@^6.24.1:
566 | version "6.24.1"
567 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
568 | dependencies:
569 | babel-runtime "^6.22.0"
570 | babel-types "^6.24.1"
571 |
572 | babel-preset-es2015-node5@^1.2.0:
573 | version "1.2.0"
574 | resolved "https://registry.yarnpkg.com/babel-preset-es2015-node5/-/babel-preset-es2015-node5-1.2.0.tgz#dedc38178d5873a07be3065b5f669fc90677eb8b"
575 | dependencies:
576 | babel-plugin-transform-es2015-destructuring "^6.6.5"
577 | babel-plugin-transform-es2015-function-name "^6.5.0"
578 | babel-plugin-transform-es2015-modules-commonjs "^6.7.0"
579 | babel-plugin-transform-es2015-parameters "^6.7.0"
580 | babel-plugin-transform-es2015-shorthand-properties "^6.5.0"
581 | babel-plugin-transform-es2015-sticky-regex "^6.5.0"
582 | babel-plugin-transform-es2015-unicode-regex "^6.5.0"
583 |
584 | babel-preset-stage-1@^6.24.1:
585 | version "6.24.1"
586 | resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0"
587 | dependencies:
588 | babel-plugin-transform-class-constructor-call "^6.24.1"
589 | babel-plugin-transform-export-extensions "^6.22.0"
590 | babel-preset-stage-2 "^6.24.1"
591 |
592 | babel-preset-stage-2@^6.24.1:
593 | version "6.24.1"
594 | resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
595 | dependencies:
596 | babel-plugin-syntax-dynamic-import "^6.18.0"
597 | babel-plugin-transform-class-properties "^6.24.1"
598 | babel-plugin-transform-decorators "^6.24.1"
599 | babel-preset-stage-3 "^6.24.1"
600 |
601 | babel-preset-stage-3@^6.24.1:
602 | version "6.24.1"
603 | resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395"
604 | dependencies:
605 | babel-plugin-syntax-trailing-function-commas "^6.22.0"
606 | babel-plugin-transform-async-generator-functions "^6.24.1"
607 | babel-plugin-transform-async-to-generator "^6.24.1"
608 | babel-plugin-transform-exponentiation-operator "^6.24.1"
609 | babel-plugin-transform-object-rest-spread "^6.22.0"
610 |
611 | babel-register@^6.24.1:
612 | version "6.24.1"
613 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
614 | dependencies:
615 | babel-core "^6.24.1"
616 | babel-runtime "^6.22.0"
617 | core-js "^2.4.0"
618 | home-or-tmp "^2.0.0"
619 | lodash "^4.2.0"
620 | mkdirp "^0.5.1"
621 | source-map-support "^0.4.2"
622 |
623 | babel-runtime@^6.22.0:
624 | version "6.23.0"
625 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
626 | dependencies:
627 | core-js "^2.4.0"
628 | regenerator-runtime "^0.10.0"
629 |
630 | babel-template@^6.24.1, babel-template@^6.25.0:
631 | version "6.25.0"
632 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
633 | dependencies:
634 | babel-runtime "^6.22.0"
635 | babel-traverse "^6.25.0"
636 | babel-types "^6.25.0"
637 | babylon "^6.17.2"
638 | lodash "^4.2.0"
639 |
640 | babel-traverse@^6.24.1, babel-traverse@^6.25.0:
641 | version "6.25.0"
642 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
643 | dependencies:
644 | babel-code-frame "^6.22.0"
645 | babel-messages "^6.23.0"
646 | babel-runtime "^6.22.0"
647 | babel-types "^6.25.0"
648 | babylon "^6.17.2"
649 | debug "^2.2.0"
650 | globals "^9.0.0"
651 | invariant "^2.2.0"
652 | lodash "^4.2.0"
653 |
654 | babel-types@^6.24.1, babel-types@^6.25.0:
655 | version "6.25.0"
656 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
657 | dependencies:
658 | babel-runtime "^6.22.0"
659 | esutils "^2.0.2"
660 | lodash "^4.2.0"
661 | to-fast-properties "^1.0.1"
662 |
663 | babel@^6.23.0:
664 | version "6.23.0"
665 | resolved "https://registry.yarnpkg.com/babel/-/babel-6.23.0.tgz#d0d1e7d803e974765beea3232d4e153c0efb90f4"
666 |
667 | babylon@7.0.0-beta.44:
668 | version "7.0.0-beta.44"
669 | resolved "http://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
670 |
671 | babylon@^6.17.2:
672 | version "6.17.4"
673 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
674 |
675 | balanced-match@^1.0.0:
676 | version "1.0.0"
677 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
678 |
679 | beeper@^1.0.0:
680 | version "1.1.1"
681 | resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
682 |
683 | bindings@1.2.1:
684 | version "1.2.1"
685 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
686 |
687 | bluebird@^3.5.0:
688 | version "3.5.0"
689 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
690 |
691 | brace-expansion@^1.0.0, brace-expansion@^1.1.7:
692 | version "1.1.8"
693 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
694 | dependencies:
695 | balanced-match "^1.0.0"
696 | concat-map "0.0.1"
697 |
698 | braces@^1.8.2:
699 | version "1.8.5"
700 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
701 | dependencies:
702 | expand-range "^1.8.1"
703 | preserve "^0.2.0"
704 | repeat-element "^1.1.2"
705 |
706 | browser-stdout@1.3.0:
707 | version "1.3.0"
708 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
709 |
710 | buffer-writer@1.0.1:
711 | version "1.0.1"
712 | resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08"
713 |
714 | builtin-modules@^1.0.0, builtin-modules@^1.1.1:
715 | version "1.1.1"
716 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
717 |
718 | caller-path@^0.1.0:
719 | version "0.1.0"
720 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
721 | dependencies:
722 | callsites "^0.2.0"
723 |
724 | callsites@^0.2.0:
725 | version "0.2.0"
726 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
727 |
728 | chai@^4.1.2:
729 | version "4.1.2"
730 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
731 | dependencies:
732 | assertion-error "^1.0.1"
733 | check-error "^1.0.1"
734 | deep-eql "^3.0.0"
735 | get-func-name "^2.0.0"
736 | pathval "^1.0.0"
737 | type-detect "^4.0.0"
738 |
739 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
740 | version "1.1.3"
741 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
742 | dependencies:
743 | ansi-styles "^2.2.1"
744 | escape-string-regexp "^1.0.2"
745 | has-ansi "^2.0.0"
746 | strip-ansi "^3.0.0"
747 | supports-color "^2.0.0"
748 |
749 | chalk@^2.0.0:
750 | version "2.0.1"
751 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d"
752 | dependencies:
753 | ansi-styles "^3.1.0"
754 | escape-string-regexp "^1.0.5"
755 | supports-color "^4.0.0"
756 |
757 | chalk@^2.1.0:
758 | version "2.4.1"
759 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
760 | dependencies:
761 | ansi-styles "^3.2.1"
762 | escape-string-regexp "^1.0.5"
763 | supports-color "^5.3.0"
764 |
765 | check-error@^1.0.1:
766 | version "1.0.2"
767 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
768 |
769 | circular-json@^0.3.1:
770 | version "0.3.1"
771 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
772 |
773 | cli-cursor@^2.1.0:
774 | version "2.1.0"
775 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
776 | dependencies:
777 | restore-cursor "^2.0.0"
778 |
779 | cli-width@^2.0.0:
780 | version "2.1.0"
781 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
782 |
783 | clone-stats@^0.0.1:
784 | version "0.0.1"
785 | resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
786 |
787 | clone@^0.2.0:
788 | version "0.2.0"
789 | resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"
790 |
791 | clone@^1.0.0, clone@^1.0.2:
792 | version "1.0.2"
793 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
794 |
795 | co@^4.6.0:
796 | version "4.6.0"
797 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
798 |
799 | color-convert@^1.0.0:
800 | version "1.9.0"
801 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
802 | dependencies:
803 | color-name "^1.1.1"
804 |
805 | color-convert@^1.9.0:
806 | version "1.9.3"
807 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
808 | dependencies:
809 | color-name "1.1.3"
810 |
811 | color-name@1.1.3, color-name@^1.1.1:
812 | version "1.1.3"
813 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
814 |
815 | color-support@^1.1.3:
816 | version "1.1.3"
817 | resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
818 |
819 | commander@2.9.0:
820 | version "2.9.0"
821 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
822 | dependencies:
823 | graceful-readlink ">= 1.0.0"
824 |
825 | concat-map@0.0.1:
826 | version "0.0.1"
827 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
828 |
829 | concat-stream@^1.6.0:
830 | version "1.6.0"
831 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
832 | dependencies:
833 | inherits "^2.0.3"
834 | readable-stream "^2.2.2"
835 | typedarray "^0.0.6"
836 |
837 | contains-path@^0.1.0:
838 | version "0.1.0"
839 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
840 |
841 | convert-source-map@^1.1.0:
842 | version "1.5.0"
843 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
844 |
845 | core-js@^2.4.0:
846 | version "2.4.1"
847 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
848 |
849 | core-util-is@~1.0.0:
850 | version "1.0.2"
851 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
852 |
853 | cross-spawn@^5.1.0:
854 | version "5.1.0"
855 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
856 | dependencies:
857 | lru-cache "^4.0.1"
858 | shebang-command "^1.2.0"
859 | which "^1.2.9"
860 |
861 | dateformat@^2.0.0:
862 | version "2.0.0"
863 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17"
864 |
865 | debug@2.6.0:
866 | version "2.6.0"
867 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b"
868 | dependencies:
869 | ms "0.7.2"
870 |
871 | debug@^2.1.1, debug@^2.2.0, debug@^2.6.8:
872 | version "2.6.8"
873 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
874 | dependencies:
875 | ms "2.0.0"
876 |
877 | debug@^3.1.0:
878 | version "3.2.4"
879 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.4.tgz#82123737c51afbe9609a2b5dfe9664e7487171f0"
880 | dependencies:
881 | ms "^2.1.1"
882 |
883 | debug@^4.0.0:
884 | version "4.0.0"
885 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.0.tgz#ef7592a30b1c5e05a78e96926df2e6b36b5544e7"
886 | dependencies:
887 | ms "^2.1.1"
888 |
889 | deep-eql@^3.0.0:
890 | version "3.0.1"
891 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
892 | dependencies:
893 | type-detect "^4.0.0"
894 |
895 | deep-is@~0.1.3:
896 | version "0.1.3"
897 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
898 |
899 | defaults@^1.0.0:
900 | version "1.0.3"
901 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
902 | dependencies:
903 | clone "^1.0.2"
904 |
905 | del@^2.0.2:
906 | version "2.2.2"
907 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
908 | dependencies:
909 | globby "^5.0.0"
910 | is-path-cwd "^1.0.0"
911 | is-path-in-cwd "^1.0.0"
912 | object-assign "^4.0.1"
913 | pify "^2.0.0"
914 | pinkie-promise "^2.0.0"
915 | rimraf "^2.2.8"
916 |
917 | del@^3.0.0:
918 | version "3.0.0"
919 | resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
920 | dependencies:
921 | globby "^6.1.0"
922 | is-path-cwd "^1.0.0"
923 | is-path-in-cwd "^1.0.0"
924 | p-map "^1.1.1"
925 | pify "^3.0.0"
926 | rimraf "^2.2.8"
927 |
928 | deprecated@^0.0.1:
929 | version "0.0.1"
930 | resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19"
931 |
932 | detect-file@^0.1.0:
933 | version "0.1.0"
934 | resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63"
935 | dependencies:
936 | fs-exists-sync "^0.1.0"
937 |
938 | detect-indent@^4.0.0:
939 | version "4.0.0"
940 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
941 | dependencies:
942 | repeating "^2.0.0"
943 |
944 | diff@3.2.0:
945 | version "3.2.0"
946 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
947 |
948 | doctrine@1.5.0:
949 | version "1.5.0"
950 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
951 | dependencies:
952 | esutils "^2.0.2"
953 | isarray "^1.0.0"
954 |
955 | doctrine@^2.0.0:
956 | version "2.0.0"
957 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
958 | dependencies:
959 | esutils "^2.0.2"
960 | isarray "^1.0.0"
961 |
962 | doctrine@^2.1.0:
963 | version "2.1.0"
964 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
965 | dependencies:
966 | esutils "^2.0.2"
967 |
968 | duplexer2@0.0.2:
969 | version "0.0.2"
970 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
971 | dependencies:
972 | readable-stream "~1.1.9"
973 |
974 | end-of-stream@~0.1.5:
975 | version "0.1.5"
976 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf"
977 | dependencies:
978 | once "~1.3.0"
979 |
980 | error-ex@^1.2.0:
981 | version "1.3.1"
982 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
983 | dependencies:
984 | is-arrayish "^0.2.1"
985 |
986 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
987 | version "1.0.5"
988 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
989 |
990 | eslint-config-strict@^14.0.0:
991 | version "14.0.1"
992 | resolved "https://registry.yarnpkg.com/eslint-config-strict/-/eslint-config-strict-14.0.1.tgz#63afcb55fa37b8b539ed946f02ede6fd2002b347"
993 | dependencies:
994 | eslint "^4.1.1"
995 | eslint-plugin-filenames "^1.1.0"
996 |
997 | eslint-import-resolver-node@^0.3.1:
998 | version "0.3.1"
999 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc"
1000 | dependencies:
1001 | debug "^2.6.8"
1002 | resolve "^1.2.0"
1003 |
1004 | eslint-module-utils@^2.1.1:
1005 | version "2.1.1"
1006 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449"
1007 | dependencies:
1008 | debug "^2.6.8"
1009 | pkg-dir "^1.0.0"
1010 |
1011 | eslint-plugin-filenames@^1.1.0:
1012 | version "1.2.0"
1013 | resolved "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.2.0.tgz#aee9c1c90189c95d2e49902c160eceefecd99f53"
1014 | dependencies:
1015 | lodash.camelcase "4.3.0"
1016 | lodash.kebabcase "4.1.1"
1017 | lodash.snakecase "4.1.1"
1018 | lodash.upperfirst "4.3.1"
1019 |
1020 | eslint-plugin-import@^2.7.0:
1021 | version "2.7.0"
1022 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f"
1023 | dependencies:
1024 | builtin-modules "^1.1.1"
1025 | contains-path "^0.1.0"
1026 | debug "^2.6.8"
1027 | doctrine "1.5.0"
1028 | eslint-import-resolver-node "^0.3.1"
1029 | eslint-module-utils "^2.1.1"
1030 | has "^1.0.1"
1031 | lodash.cond "^4.3.0"
1032 | minimatch "^3.0.3"
1033 | read-pkg-up "^2.0.0"
1034 |
1035 | eslint-scope@3.7.1, eslint-scope@^3.7.1:
1036 | version "3.7.1"
1037 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
1038 | dependencies:
1039 | esrecurse "^4.1.0"
1040 | estraverse "^4.1.1"
1041 |
1042 | eslint-visitor-keys@^1.0.0:
1043 | version "1.0.0"
1044 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
1045 |
1046 | eslint@^4.0.0, eslint@^4.1.1:
1047 | version "4.19.1"
1048 | resolved "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
1049 | dependencies:
1050 | ajv "^5.3.0"
1051 | babel-code-frame "^6.22.0"
1052 | chalk "^2.1.0"
1053 | concat-stream "^1.6.0"
1054 | cross-spawn "^5.1.0"
1055 | debug "^3.1.0"
1056 | doctrine "^2.1.0"
1057 | eslint-scope "^3.7.1"
1058 | eslint-visitor-keys "^1.0.0"
1059 | espree "^3.5.4"
1060 | esquery "^1.0.0"
1061 | esutils "^2.0.2"
1062 | file-entry-cache "^2.0.0"
1063 | functional-red-black-tree "^1.0.1"
1064 | glob "^7.1.2"
1065 | globals "^11.0.1"
1066 | ignore "^3.3.3"
1067 | imurmurhash "^0.1.4"
1068 | inquirer "^3.0.6"
1069 | is-resolvable "^1.0.0"
1070 | js-yaml "^3.9.1"
1071 | json-stable-stringify-without-jsonify "^1.0.1"
1072 | levn "^0.3.0"
1073 | lodash "^4.17.4"
1074 | minimatch "^3.0.2"
1075 | mkdirp "^0.5.1"
1076 | natural-compare "^1.4.0"
1077 | optionator "^0.8.2"
1078 | path-is-inside "^1.0.2"
1079 | pluralize "^7.0.0"
1080 | progress "^2.0.0"
1081 | regexpp "^1.0.1"
1082 | require-uncached "^1.0.3"
1083 | semver "^5.3.0"
1084 | strip-ansi "^4.0.0"
1085 | strip-json-comments "~2.0.1"
1086 | table "4.0.2"
1087 | text-table "~0.2.0"
1088 |
1089 | eslint@^4.2.0:
1090 | version "4.3.0"
1091 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.3.0.tgz#fcd7c96376bbf34c85ee67ed0012a299642b108f"
1092 | dependencies:
1093 | ajv "^5.2.0"
1094 | babel-code-frame "^6.22.0"
1095 | chalk "^1.1.3"
1096 | concat-stream "^1.6.0"
1097 | cross-spawn "^5.1.0"
1098 | debug "^2.6.8"
1099 | doctrine "^2.0.0"
1100 | eslint-scope "^3.7.1"
1101 | espree "^3.4.3"
1102 | esquery "^1.0.0"
1103 | estraverse "^4.2.0"
1104 | esutils "^2.0.2"
1105 | file-entry-cache "^2.0.0"
1106 | functional-red-black-tree "^1.0.1"
1107 | glob "^7.1.2"
1108 | globals "^9.17.0"
1109 | ignore "^3.3.3"
1110 | imurmurhash "^0.1.4"
1111 | inquirer "^3.0.6"
1112 | is-resolvable "^1.0.0"
1113 | js-yaml "^3.8.4"
1114 | json-stable-stringify "^1.0.1"
1115 | levn "^0.3.0"
1116 | lodash "^4.17.4"
1117 | minimatch "^3.0.2"
1118 | mkdirp "^0.5.1"
1119 | natural-compare "^1.4.0"
1120 | optionator "^0.8.2"
1121 | path-is-inside "^1.0.2"
1122 | pluralize "^4.0.0"
1123 | progress "^2.0.0"
1124 | require-uncached "^1.0.3"
1125 | semver "^5.3.0"
1126 | strip-json-comments "~2.0.1"
1127 | table "^4.0.1"
1128 | text-table "~0.2.0"
1129 |
1130 | espree@^3.4.3:
1131 | version "3.4.3"
1132 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
1133 | dependencies:
1134 | acorn "^5.0.1"
1135 | acorn-jsx "^3.0.0"
1136 |
1137 | espree@^3.5.4:
1138 | version "3.5.4"
1139 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
1140 | dependencies:
1141 | acorn "^5.5.0"
1142 | acorn-jsx "^3.0.0"
1143 |
1144 | esprima@^4.0.0:
1145 | version "4.0.0"
1146 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
1147 |
1148 | esquery@^1.0.0:
1149 | version "1.0.0"
1150 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
1151 | dependencies:
1152 | estraverse "^4.0.0"
1153 |
1154 | esrecurse@^4.1.0:
1155 | version "4.2.0"
1156 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
1157 | dependencies:
1158 | estraverse "^4.1.0"
1159 | object-assign "^4.0.1"
1160 |
1161 | estraverse-fb@^1.3.1:
1162 | version "1.3.2"
1163 | resolved "https://registry.yarnpkg.com/estraverse-fb/-/estraverse-fb-1.3.2.tgz#d323a4cb5e5ac331cea033413a9253e1643e07c4"
1164 |
1165 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
1166 | version "4.2.0"
1167 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
1168 |
1169 | esutils@^2.0.2:
1170 | version "2.0.2"
1171 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
1172 |
1173 | expand-brackets@^0.1.4:
1174 | version "0.1.5"
1175 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
1176 | dependencies:
1177 | is-posix-bracket "^0.1.0"
1178 |
1179 | expand-range@^1.8.1:
1180 | version "1.8.2"
1181 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
1182 | dependencies:
1183 | fill-range "^2.1.0"
1184 |
1185 | expand-tilde@^1.2.2:
1186 | version "1.2.2"
1187 | resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
1188 | dependencies:
1189 | os-homedir "^1.0.1"
1190 |
1191 | expand-tilde@^2.0.2:
1192 | version "2.0.2"
1193 | resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
1194 | dependencies:
1195 | homedir-polyfill "^1.0.1"
1196 |
1197 | extend-shallow@^3.0.2:
1198 | version "3.0.2"
1199 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
1200 | dependencies:
1201 | assign-symbols "^1.0.0"
1202 | is-extendable "^1.0.1"
1203 |
1204 | extend@^3.0.0:
1205 | version "3.0.1"
1206 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
1207 |
1208 | external-editor@^2.0.4:
1209 | version "2.0.4"
1210 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972"
1211 | dependencies:
1212 | iconv-lite "^0.4.17"
1213 | jschardet "^1.4.2"
1214 | tmp "^0.0.31"
1215 |
1216 | extglob@^0.3.1:
1217 | version "0.3.2"
1218 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
1219 | dependencies:
1220 | is-extglob "^1.0.0"
1221 |
1222 | fancy-log@^1.1.0:
1223 | version "1.3.0"
1224 | resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948"
1225 | dependencies:
1226 | chalk "^1.1.1"
1227 | time-stamp "^1.0.0"
1228 |
1229 | fancy-log@^1.3.2:
1230 | version "1.3.2"
1231 | resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1"
1232 | dependencies:
1233 | ansi-gray "^0.1.1"
1234 | color-support "^1.1.3"
1235 | time-stamp "^1.0.0"
1236 |
1237 | fast-deep-equal@^1.0.0:
1238 | version "1.0.0"
1239 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
1240 |
1241 | fast-json-stable-stringify@^2.0.0:
1242 | version "2.0.0"
1243 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
1244 |
1245 | fast-levenshtein@~2.0.4:
1246 | version "2.0.6"
1247 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1248 |
1249 | figures@^2.0.0:
1250 | version "2.0.0"
1251 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
1252 | dependencies:
1253 | escape-string-regexp "^1.0.5"
1254 |
1255 | file-entry-cache@^2.0.0:
1256 | version "2.0.0"
1257 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
1258 | dependencies:
1259 | flat-cache "^1.2.1"
1260 | object-assign "^4.0.1"
1261 |
1262 | filename-regex@^2.0.0:
1263 | version "2.0.1"
1264 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
1265 |
1266 | fill-range@^2.1.0:
1267 | version "2.2.3"
1268 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
1269 | dependencies:
1270 | is-number "^2.1.0"
1271 | isobject "^2.0.0"
1272 | randomatic "^1.1.3"
1273 | repeat-element "^1.1.2"
1274 | repeat-string "^1.5.2"
1275 |
1276 | find-index@^0.1.1:
1277 | version "0.1.1"
1278 | resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4"
1279 |
1280 | find-up@^1.0.0:
1281 | version "1.1.2"
1282 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
1283 | dependencies:
1284 | path-exists "^2.0.0"
1285 | pinkie-promise "^2.0.0"
1286 |
1287 | find-up@^2.0.0:
1288 | version "2.1.0"
1289 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
1290 | dependencies:
1291 | locate-path "^2.0.0"
1292 |
1293 | findup-sync@^0.4.2:
1294 | version "0.4.3"
1295 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12"
1296 | dependencies:
1297 | detect-file "^0.1.0"
1298 | is-glob "^2.0.1"
1299 | micromatch "^2.3.7"
1300 | resolve-dir "^0.1.0"
1301 |
1302 | fined@^1.0.1:
1303 | version "1.1.0"
1304 | resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476"
1305 | dependencies:
1306 | expand-tilde "^2.0.2"
1307 | is-plain-object "^2.0.3"
1308 | object.defaults "^1.1.0"
1309 | object.pick "^1.2.0"
1310 | parse-filepath "^1.0.1"
1311 |
1312 | first-chunk-stream@^1.0.0:
1313 | version "1.0.0"
1314 | resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
1315 |
1316 | flagged-respawn@^0.3.2:
1317 | version "0.3.2"
1318 | resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5"
1319 |
1320 | flat-cache@^1.2.1:
1321 | version "1.2.2"
1322 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
1323 | dependencies:
1324 | circular-json "^0.3.1"
1325 | del "^2.0.2"
1326 | graceful-fs "^4.1.2"
1327 | write "^0.2.1"
1328 |
1329 | for-in@^1.0.1:
1330 | version "1.0.2"
1331 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
1332 |
1333 | for-own@^0.1.4:
1334 | version "0.1.5"
1335 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
1336 | dependencies:
1337 | for-in "^1.0.1"
1338 |
1339 | for-own@^1.0.0:
1340 | version "1.0.0"
1341 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
1342 | dependencies:
1343 | for-in "^1.0.1"
1344 |
1345 | fs-exists-sync@^0.1.0:
1346 | version "0.1.0"
1347 | resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
1348 |
1349 | fs.realpath@^1.0.0:
1350 | version "1.0.0"
1351 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1352 |
1353 | function-bind@^1.0.2:
1354 | version "1.1.0"
1355 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
1356 |
1357 | functional-red-black-tree@^1.0.1:
1358 | version "1.0.1"
1359 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
1360 |
1361 | gaze@^0.5.1:
1362 | version "0.5.2"
1363 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f"
1364 | dependencies:
1365 | globule "~0.1.0"
1366 |
1367 | get-func-name@^2.0.0:
1368 | version "2.0.0"
1369 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
1370 |
1371 | glob-base@^0.3.0:
1372 | version "0.3.0"
1373 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
1374 | dependencies:
1375 | glob-parent "^2.0.0"
1376 | is-glob "^2.0.0"
1377 |
1378 | glob-parent@^2.0.0:
1379 | version "2.0.0"
1380 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
1381 | dependencies:
1382 | is-glob "^2.0.0"
1383 |
1384 | glob-stream@^3.1.5:
1385 | version "3.1.18"
1386 | resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b"
1387 | dependencies:
1388 | glob "^4.3.1"
1389 | glob2base "^0.0.12"
1390 | minimatch "^2.0.1"
1391 | ordered-read-streams "^0.1.0"
1392 | through2 "^0.6.1"
1393 | unique-stream "^1.0.0"
1394 |
1395 | glob-watcher@^0.0.6:
1396 | version "0.0.6"
1397 | resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b"
1398 | dependencies:
1399 | gaze "^0.5.1"
1400 |
1401 | glob2base@^0.0.12:
1402 | version "0.0.12"
1403 | resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
1404 | dependencies:
1405 | find-index "^0.1.1"
1406 |
1407 | glob@7.1.1:
1408 | version "7.1.1"
1409 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
1410 | dependencies:
1411 | fs.realpath "^1.0.0"
1412 | inflight "^1.0.4"
1413 | inherits "2"
1414 | minimatch "^3.0.2"
1415 | once "^1.3.0"
1416 | path-is-absolute "^1.0.0"
1417 |
1418 | glob@^4.3.1:
1419 | version "4.5.3"
1420 | resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f"
1421 | dependencies:
1422 | inflight "^1.0.4"
1423 | inherits "2"
1424 | minimatch "^2.0.1"
1425 | once "^1.3.0"
1426 |
1427 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.2:
1428 | version "7.1.2"
1429 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
1430 | dependencies:
1431 | fs.realpath "^1.0.0"
1432 | inflight "^1.0.4"
1433 | inherits "2"
1434 | minimatch "^3.0.4"
1435 | once "^1.3.0"
1436 | path-is-absolute "^1.0.0"
1437 |
1438 | glob@~3.1.21:
1439 | version "3.1.21"
1440 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd"
1441 | dependencies:
1442 | graceful-fs "~1.2.0"
1443 | inherits "1"
1444 | minimatch "~0.2.11"
1445 |
1446 | global-modules@^0.2.3:
1447 | version "0.2.3"
1448 | resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
1449 | dependencies:
1450 | global-prefix "^0.1.4"
1451 | is-windows "^0.2.0"
1452 |
1453 | global-prefix@^0.1.4:
1454 | version "0.1.5"
1455 | resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f"
1456 | dependencies:
1457 | homedir-polyfill "^1.0.0"
1458 | ini "^1.3.4"
1459 | is-windows "^0.2.0"
1460 | which "^1.2.12"
1461 |
1462 | globals@^11.0.1, globals@^11.1.0:
1463 | version "11.7.0"
1464 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
1465 |
1466 | globals@^9.0.0, globals@^9.17.0:
1467 | version "9.18.0"
1468 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
1469 |
1470 | globby@^5.0.0:
1471 | version "5.0.0"
1472 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
1473 | dependencies:
1474 | array-union "^1.0.1"
1475 | arrify "^1.0.0"
1476 | glob "^7.0.3"
1477 | object-assign "^4.0.1"
1478 | pify "^2.0.0"
1479 | pinkie-promise "^2.0.0"
1480 |
1481 | globby@^6.1.0:
1482 | version "6.1.0"
1483 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
1484 | dependencies:
1485 | array-union "^1.0.1"
1486 | glob "^7.0.3"
1487 | object-assign "^4.0.1"
1488 | pify "^2.0.0"
1489 | pinkie-promise "^2.0.0"
1490 |
1491 | globule@~0.1.0:
1492 | version "0.1.0"
1493 | resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
1494 | dependencies:
1495 | glob "~3.1.21"
1496 | lodash "~1.0.1"
1497 | minimatch "~0.2.11"
1498 |
1499 | glogg@^1.0.0:
1500 | version "1.0.0"
1501 | resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5"
1502 | dependencies:
1503 | sparkles "^1.0.0"
1504 |
1505 | graceful-fs@^3.0.0:
1506 | version "3.0.11"
1507 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
1508 | dependencies:
1509 | natives "^1.1.0"
1510 |
1511 | graceful-fs@^4.1.2:
1512 | version "4.1.11"
1513 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
1514 |
1515 | graceful-fs@~1.2.0:
1516 | version "1.2.3"
1517 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
1518 |
1519 | "graceful-readlink@>= 1.0.0":
1520 | version "1.0.1"
1521 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
1522 |
1523 | growl@1.9.2:
1524 | version "1.9.2"
1525 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
1526 |
1527 | gulp-babel@^7.0.0:
1528 | version "7.0.1"
1529 | resolved "https://registry.yarnpkg.com/gulp-babel/-/gulp-babel-7.0.1.tgz#b9c8e29fa376b36c57989db820fc1c1715bb47cb"
1530 | dependencies:
1531 | plugin-error "^1.0.1"
1532 | replace-ext "0.0.1"
1533 | through2 "^2.0.0"
1534 | vinyl-sourcemaps-apply "^0.2.0"
1535 |
1536 | gulp-eslint@^4.0.0:
1537 | version "4.0.2"
1538 | resolved "https://registry.yarnpkg.com/gulp-eslint/-/gulp-eslint-4.0.2.tgz#18a2a6768e4404cbf3e203239cb57474168fa606"
1539 | dependencies:
1540 | eslint "^4.0.0"
1541 | fancy-log "^1.3.2"
1542 | plugin-error "^1.0.0"
1543 |
1544 | gulp-util@^3.0.0:
1545 | version "3.0.8"
1546 | resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
1547 | dependencies:
1548 | array-differ "^1.0.0"
1549 | array-uniq "^1.0.2"
1550 | beeper "^1.0.0"
1551 | chalk "^1.0.0"
1552 | dateformat "^2.0.0"
1553 | fancy-log "^1.1.0"
1554 | gulplog "^1.0.0"
1555 | has-gulplog "^0.1.0"
1556 | lodash._reescape "^3.0.0"
1557 | lodash._reevaluate "^3.0.0"
1558 | lodash._reinterpolate "^3.0.0"
1559 | lodash.template "^3.0.0"
1560 | minimist "^1.1.0"
1561 | multipipe "^0.1.2"
1562 | object-assign "^3.0.0"
1563 | replace-ext "0.0.1"
1564 | through2 "^2.0.0"
1565 | vinyl "^0.5.0"
1566 |
1567 | gulp@^3.9.1:
1568 | version "3.9.1"
1569 | resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4"
1570 | dependencies:
1571 | archy "^1.0.0"
1572 | chalk "^1.0.0"
1573 | deprecated "^0.0.1"
1574 | gulp-util "^3.0.0"
1575 | interpret "^1.0.0"
1576 | liftoff "^2.1.0"
1577 | minimist "^1.1.0"
1578 | orchestrator "^0.3.0"
1579 | pretty-hrtime "^1.0.0"
1580 | semver "^4.1.0"
1581 | tildify "^1.0.0"
1582 | v8flags "^2.0.2"
1583 | vinyl-fs "^0.3.0"
1584 |
1585 | gulplog@^1.0.0:
1586 | version "1.0.0"
1587 | resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
1588 | dependencies:
1589 | glogg "^1.0.0"
1590 |
1591 | has-ansi@^2.0.0:
1592 | version "2.0.0"
1593 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1594 | dependencies:
1595 | ansi-regex "^2.0.0"
1596 |
1597 | has-flag@^1.0.0:
1598 | version "1.0.0"
1599 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
1600 |
1601 | has-flag@^2.0.0:
1602 | version "2.0.0"
1603 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
1604 |
1605 | has-flag@^3.0.0:
1606 | version "3.0.0"
1607 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1608 |
1609 | has-gulplog@^0.1.0:
1610 | version "0.1.0"
1611 | resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
1612 | dependencies:
1613 | sparkles "^1.0.0"
1614 |
1615 | has@^1.0.1:
1616 | version "1.0.1"
1617 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
1618 | dependencies:
1619 | function-bind "^1.0.2"
1620 |
1621 | home-or-tmp@^2.0.0:
1622 | version "2.0.0"
1623 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
1624 | dependencies:
1625 | os-homedir "^1.0.0"
1626 | os-tmpdir "^1.0.1"
1627 |
1628 | homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
1629 | version "1.0.1"
1630 | resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
1631 | dependencies:
1632 | parse-passwd "^1.0.0"
1633 |
1634 | hosted-git-info@^2.1.4:
1635 | version "2.5.0"
1636 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
1637 |
1638 | iconv-lite@^0.4.17:
1639 | version "0.4.18"
1640 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
1641 |
1642 | ignore@^3.3.3:
1643 | version "3.3.3"
1644 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
1645 |
1646 | imurmurhash@^0.1.4:
1647 | version "0.1.4"
1648 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1649 |
1650 | inflight@^1.0.4:
1651 | version "1.0.6"
1652 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1653 | dependencies:
1654 | once "^1.3.0"
1655 | wrappy "1"
1656 |
1657 | inherits@1:
1658 | version "1.0.2"
1659 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
1660 |
1661 | inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
1662 | version "2.0.3"
1663 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1664 |
1665 | ini@^1.3.4:
1666 | version "1.3.4"
1667 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
1668 |
1669 | inquirer@^3.0.6:
1670 | version "3.2.0"
1671 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.0.tgz#45b44c2160c729d7578c54060b3eed94487bb42b"
1672 | dependencies:
1673 | ansi-escapes "^2.0.0"
1674 | chalk "^2.0.0"
1675 | cli-cursor "^2.1.0"
1676 | cli-width "^2.0.0"
1677 | external-editor "^2.0.4"
1678 | figures "^2.0.0"
1679 | lodash "^4.3.0"
1680 | mute-stream "0.0.7"
1681 | run-async "^2.2.0"
1682 | rx-lite "^4.0.8"
1683 | rx-lite-aggregates "^4.0.8"
1684 | string-width "^2.1.0"
1685 | strip-ansi "^4.0.0"
1686 | through "^2.3.6"
1687 |
1688 | interpret@^1.0.0:
1689 | version "1.0.3"
1690 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
1691 |
1692 | invariant@^2.2.0:
1693 | version "2.2.2"
1694 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
1695 | dependencies:
1696 | loose-envify "^1.0.0"
1697 |
1698 | is-absolute@^0.2.3:
1699 | version "0.2.6"
1700 | resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb"
1701 | dependencies:
1702 | is-relative "^0.2.1"
1703 | is-windows "^0.2.0"
1704 |
1705 | is-arrayish@^0.2.1:
1706 | version "0.2.1"
1707 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1708 |
1709 | is-buffer@^1.1.5:
1710 | version "1.1.5"
1711 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
1712 |
1713 | is-builtin-module@^1.0.0:
1714 | version "1.0.0"
1715 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
1716 | dependencies:
1717 | builtin-modules "^1.0.0"
1718 |
1719 | is-dotfile@^1.0.0:
1720 | version "1.0.3"
1721 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
1722 |
1723 | is-equal-shallow@^0.1.3:
1724 | version "0.1.3"
1725 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
1726 | dependencies:
1727 | is-primitive "^2.0.0"
1728 |
1729 | is-extendable@^0.1.1:
1730 | version "0.1.1"
1731 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1732 |
1733 | is-extendable@^1.0.1:
1734 | version "1.0.1"
1735 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
1736 | dependencies:
1737 | is-plain-object "^2.0.4"
1738 |
1739 | is-extglob@^1.0.0:
1740 | version "1.0.0"
1741 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
1742 |
1743 | is-finite@^1.0.0:
1744 | version "1.0.2"
1745 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
1746 | dependencies:
1747 | number-is-nan "^1.0.0"
1748 |
1749 | is-fullwidth-code-point@^2.0.0:
1750 | version "2.0.0"
1751 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1752 |
1753 | is-glob@^2.0.0, is-glob@^2.0.1:
1754 | version "2.0.1"
1755 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
1756 | dependencies:
1757 | is-extglob "^1.0.0"
1758 |
1759 | is-number@^2.1.0:
1760 | version "2.1.0"
1761 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
1762 | dependencies:
1763 | kind-of "^3.0.2"
1764 |
1765 | is-number@^3.0.0:
1766 | version "3.0.0"
1767 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1768 | dependencies:
1769 | kind-of "^3.0.2"
1770 |
1771 | is-path-cwd@^1.0.0:
1772 | version "1.0.0"
1773 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
1774 |
1775 | is-path-in-cwd@^1.0.0:
1776 | version "1.0.0"
1777 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
1778 | dependencies:
1779 | is-path-inside "^1.0.0"
1780 |
1781 | is-path-inside@^1.0.0:
1782 | version "1.0.0"
1783 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
1784 | dependencies:
1785 | path-is-inside "^1.0.1"
1786 |
1787 | is-plain-object@^2.0.3, is-plain-object@^2.0.4:
1788 | version "2.0.4"
1789 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1790 | dependencies:
1791 | isobject "^3.0.1"
1792 |
1793 | is-posix-bracket@^0.1.0:
1794 | version "0.1.1"
1795 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
1796 |
1797 | is-primitive@^2.0.0:
1798 | version "2.0.0"
1799 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
1800 |
1801 | is-promise@^2.1.0:
1802 | version "2.1.0"
1803 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
1804 |
1805 | is-relative@^0.2.1:
1806 | version "0.2.1"
1807 | resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5"
1808 | dependencies:
1809 | is-unc-path "^0.1.1"
1810 |
1811 | is-resolvable@^1.0.0:
1812 | version "1.0.0"
1813 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
1814 | dependencies:
1815 | tryit "^1.0.1"
1816 |
1817 | is-unc-path@^0.1.1:
1818 | version "0.1.2"
1819 | resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9"
1820 | dependencies:
1821 | unc-path-regex "^0.1.0"
1822 |
1823 | is-utf8@^0.2.0:
1824 | version "0.2.1"
1825 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
1826 |
1827 | is-windows@^0.2.0:
1828 | version "0.2.0"
1829 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
1830 |
1831 | isarray@0.0.1:
1832 | version "0.0.1"
1833 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
1834 |
1835 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
1836 | version "1.0.0"
1837 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1838 |
1839 | isexe@^2.0.0:
1840 | version "2.0.0"
1841 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1842 |
1843 | isobject@^2.0.0, isobject@^2.1.0:
1844 | version "2.1.0"
1845 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1846 | dependencies:
1847 | isarray "1.0.0"
1848 |
1849 | isobject@^3.0.0, isobject@^3.0.1:
1850 | version "3.0.1"
1851 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1852 |
1853 | js-tokens@^3.0.0:
1854 | version "3.0.2"
1855 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
1856 |
1857 | js-yaml@^3.8.4:
1858 | version "3.9.0"
1859 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.0.tgz#4ffbbf25c2ac963b8299dc74da7e3740de1c18ce"
1860 | dependencies:
1861 | argparse "^1.0.7"
1862 | esprima "^4.0.0"
1863 |
1864 | js-yaml@^3.9.1:
1865 | version "3.12.0"
1866 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
1867 | dependencies:
1868 | argparse "^1.0.7"
1869 | esprima "^4.0.0"
1870 |
1871 | jschardet@^1.4.2:
1872 | version "1.5.0"
1873 | resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.0.tgz#a61f310306a5a71188e1b1acd08add3cfbb08b1e"
1874 |
1875 | jsesc@^1.3.0:
1876 | version "1.3.0"
1877 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
1878 |
1879 | jsesc@^2.5.1:
1880 | version "2.5.1"
1881 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe"
1882 |
1883 | jsesc@~0.5.0:
1884 | version "0.5.0"
1885 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1886 |
1887 | json-schema-traverse@^0.3.0:
1888 | version "0.3.1"
1889 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
1890 |
1891 | json-stable-stringify-without-jsonify@^1.0.1:
1892 | version "1.0.1"
1893 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1894 |
1895 | json-stable-stringify@^1.0.1:
1896 | version "1.0.1"
1897 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
1898 | dependencies:
1899 | jsonify "~0.0.0"
1900 |
1901 | json3@3.3.2:
1902 | version "3.3.2"
1903 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
1904 |
1905 | json5@^0.5.0:
1906 | version "0.5.1"
1907 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
1908 |
1909 | jsonify@~0.0.0:
1910 | version "0.0.0"
1911 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
1912 |
1913 | kind-of@^3.0.2:
1914 | version "3.2.2"
1915 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
1916 | dependencies:
1917 | is-buffer "^1.1.5"
1918 |
1919 | kind-of@^4.0.0:
1920 | version "4.0.0"
1921 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
1922 | dependencies:
1923 | is-buffer "^1.1.5"
1924 |
1925 | levn@^0.3.0, levn@~0.3.0:
1926 | version "0.3.0"
1927 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1928 | dependencies:
1929 | prelude-ls "~1.1.2"
1930 | type-check "~0.3.2"
1931 |
1932 | libpq@^1.7.0:
1933 | version "1.8.7"
1934 | resolved "https://registry.yarnpkg.com/libpq/-/libpq-1.8.7.tgz#c2deb121e28f7f84bd3b2451afff68b6663e74f9"
1935 | dependencies:
1936 | bindings "1.2.1"
1937 | nan "^2.3.0"
1938 |
1939 | liftoff@^2.1.0:
1940 | version "2.3.0"
1941 | resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385"
1942 | dependencies:
1943 | extend "^3.0.0"
1944 | findup-sync "^0.4.2"
1945 | fined "^1.0.1"
1946 | flagged-respawn "^0.3.2"
1947 | lodash.isplainobject "^4.0.4"
1948 | lodash.isstring "^4.0.1"
1949 | lodash.mapvalues "^4.4.0"
1950 | rechoir "^0.6.2"
1951 | resolve "^1.1.7"
1952 |
1953 | load-json-file@^2.0.0:
1954 | version "2.0.0"
1955 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
1956 | dependencies:
1957 | graceful-fs "^4.1.2"
1958 | parse-json "^2.2.0"
1959 | pify "^2.0.0"
1960 | strip-bom "^3.0.0"
1961 |
1962 | locate-path@^2.0.0:
1963 | version "2.0.0"
1964 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
1965 | dependencies:
1966 | p-locate "^2.0.0"
1967 | path-exists "^3.0.0"
1968 |
1969 | lodash._baseassign@^3.0.0:
1970 | version "3.2.0"
1971 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
1972 | dependencies:
1973 | lodash._basecopy "^3.0.0"
1974 | lodash.keys "^3.0.0"
1975 |
1976 | lodash._basecopy@^3.0.0:
1977 | version "3.0.1"
1978 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
1979 |
1980 | lodash._basecreate@^3.0.0:
1981 | version "3.0.3"
1982 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
1983 |
1984 | lodash._basetostring@^3.0.0:
1985 | version "3.0.1"
1986 | resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
1987 |
1988 | lodash._basevalues@^3.0.0:
1989 | version "3.0.0"
1990 | resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
1991 |
1992 | lodash._getnative@^3.0.0:
1993 | version "3.9.1"
1994 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
1995 |
1996 | lodash._isiterateecall@^3.0.0:
1997 | version "3.0.9"
1998 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
1999 |
2000 | lodash._reescape@^3.0.0:
2001 | version "3.0.0"
2002 | resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
2003 |
2004 | lodash._reevaluate@^3.0.0:
2005 | version "3.0.0"
2006 | resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
2007 |
2008 | lodash._reinterpolate@^3.0.0:
2009 | version "3.0.0"
2010 | resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
2011 |
2012 | lodash._root@^3.0.0:
2013 | version "3.0.1"
2014 | resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
2015 |
2016 | lodash.camelcase@4.3.0:
2017 | version "4.3.0"
2018 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
2019 |
2020 | lodash.cond@^4.3.0:
2021 | version "4.5.2"
2022 | resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
2023 |
2024 | lodash.create@3.1.1:
2025 | version "3.1.1"
2026 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
2027 | dependencies:
2028 | lodash._baseassign "^3.0.0"
2029 | lodash._basecreate "^3.0.0"
2030 | lodash._isiterateecall "^3.0.0"
2031 |
2032 | lodash.escape@^3.0.0:
2033 | version "3.2.0"
2034 | resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
2035 | dependencies:
2036 | lodash._root "^3.0.0"
2037 |
2038 | lodash.isarguments@^3.0.0:
2039 | version "3.1.0"
2040 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
2041 |
2042 | lodash.isarray@^3.0.0:
2043 | version "3.0.4"
2044 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
2045 |
2046 | lodash.isplainobject@^4.0.4:
2047 | version "4.0.6"
2048 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
2049 |
2050 | lodash.isstring@^4.0.1:
2051 | version "4.0.1"
2052 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
2053 |
2054 | lodash.kebabcase@4.1.1:
2055 | version "4.1.1"
2056 | resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
2057 |
2058 | lodash.keys@^3.0.0:
2059 | version "3.1.2"
2060 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
2061 | dependencies:
2062 | lodash._getnative "^3.0.0"
2063 | lodash.isarguments "^3.0.0"
2064 | lodash.isarray "^3.0.0"
2065 |
2066 | lodash.mapvalues@^4.4.0:
2067 | version "4.6.0"
2068 | resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c"
2069 |
2070 | lodash.restparam@^3.0.0:
2071 | version "3.6.1"
2072 | resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
2073 |
2074 | lodash.snakecase@4.1.1:
2075 | version "4.1.1"
2076 | resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
2077 |
2078 | lodash.template@^3.0.0:
2079 | version "3.6.2"
2080 | resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
2081 | dependencies:
2082 | lodash._basecopy "^3.0.0"
2083 | lodash._basetostring "^3.0.0"
2084 | lodash._basevalues "^3.0.0"
2085 | lodash._isiterateecall "^3.0.0"
2086 | lodash._reinterpolate "^3.0.0"
2087 | lodash.escape "^3.0.0"
2088 | lodash.keys "^3.0.0"
2089 | lodash.restparam "^3.0.0"
2090 | lodash.templatesettings "^3.0.0"
2091 |
2092 | lodash.templatesettings@^3.0.0:
2093 | version "3.1.1"
2094 | resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
2095 | dependencies:
2096 | lodash._reinterpolate "^3.0.0"
2097 | lodash.escape "^3.0.0"
2098 |
2099 | lodash.upperfirst@4.3.1:
2100 | version "4.3.1"
2101 | resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce"
2102 |
2103 | lodash@^4.0.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0:
2104 | version "4.17.4"
2105 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
2106 |
2107 | lodash@~1.0.1:
2108 | version "1.0.2"
2109 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551"
2110 |
2111 | loose-envify@^1.0.0:
2112 | version "1.3.1"
2113 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
2114 | dependencies:
2115 | js-tokens "^3.0.0"
2116 |
2117 | lru-cache@2:
2118 | version "2.7.3"
2119 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
2120 |
2121 | lru-cache@^4.0.1:
2122 | version "4.1.1"
2123 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
2124 | dependencies:
2125 | pseudomap "^1.0.2"
2126 | yallist "^2.1.2"
2127 |
2128 | map-cache@^0.2.0:
2129 | version "0.2.2"
2130 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
2131 |
2132 | micromatch@^2.3.7:
2133 | version "2.3.11"
2134 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
2135 | dependencies:
2136 | arr-diff "^2.0.0"
2137 | array-unique "^0.2.1"
2138 | braces "^1.8.2"
2139 | expand-brackets "^0.1.4"
2140 | extglob "^0.3.1"
2141 | filename-regex "^2.0.0"
2142 | is-extglob "^1.0.0"
2143 | is-glob "^2.0.1"
2144 | kind-of "^3.0.2"
2145 | normalize-path "^2.0.1"
2146 | object.omit "^2.0.0"
2147 | parse-glob "^3.0.4"
2148 | regex-cache "^0.4.2"
2149 |
2150 | mimic-fn@^1.0.0:
2151 | version "1.1.0"
2152 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
2153 |
2154 | minimatch@^2.0.1:
2155 | version "2.0.10"
2156 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
2157 | dependencies:
2158 | brace-expansion "^1.0.0"
2159 |
2160 | minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
2161 | version "3.0.4"
2162 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
2163 | dependencies:
2164 | brace-expansion "^1.1.7"
2165 |
2166 | minimatch@~0.2.11:
2167 | version "0.2.14"
2168 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
2169 | dependencies:
2170 | lru-cache "2"
2171 | sigmund "~1.0.0"
2172 |
2173 | minimist@0.0.8:
2174 | version "0.0.8"
2175 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
2176 |
2177 | minimist@^1.1.0:
2178 | version "1.2.0"
2179 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
2180 |
2181 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1:
2182 | version "0.5.1"
2183 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
2184 | dependencies:
2185 | minimist "0.0.8"
2186 |
2187 | mocha@^3.4.2:
2188 | version "3.4.2"
2189 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594"
2190 | dependencies:
2191 | browser-stdout "1.3.0"
2192 | commander "2.9.0"
2193 | debug "2.6.0"
2194 | diff "3.2.0"
2195 | escape-string-regexp "1.0.5"
2196 | glob "7.1.1"
2197 | growl "1.9.2"
2198 | json3 "3.3.2"
2199 | lodash.create "3.1.1"
2200 | mkdirp "0.5.1"
2201 | supports-color "3.1.2"
2202 |
2203 | ms@0.7.2:
2204 | version "0.7.2"
2205 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
2206 |
2207 | ms@2.0.0:
2208 | version "2.0.0"
2209 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
2210 |
2211 | ms@^2.1.1:
2212 | version "2.1.1"
2213 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
2214 |
2215 | multipipe@^0.1.2:
2216 | version "0.1.2"
2217 | resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
2218 | dependencies:
2219 | duplexer2 "0.0.2"
2220 |
2221 | mute-stream@0.0.7:
2222 | version "0.0.7"
2223 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
2224 |
2225 | nan@^2.3.0:
2226 | version "2.6.2"
2227 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
2228 |
2229 | natives@^1.1.0:
2230 | version "1.1.0"
2231 | resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31"
2232 |
2233 | natural-compare@^1.4.0:
2234 | version "1.4.0"
2235 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
2236 |
2237 | normalize-package-data@^2.3.2:
2238 | version "2.4.0"
2239 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
2240 | dependencies:
2241 | hosted-git-info "^2.1.4"
2242 | is-builtin-module "^1.0.0"
2243 | semver "2 || 3 || 4 || 5"
2244 | validate-npm-package-license "^3.0.1"
2245 |
2246 | normalize-path@^2.0.1:
2247 | version "2.1.1"
2248 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
2249 | dependencies:
2250 | remove-trailing-separator "^1.0.1"
2251 |
2252 | number-is-nan@^1.0.0:
2253 | version "1.0.1"
2254 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
2255 |
2256 | object-assign@^3.0.0:
2257 | version "3.0.0"
2258 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
2259 |
2260 | object-assign@^4.0.1:
2261 | version "4.1.1"
2262 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
2263 |
2264 | object.defaults@^1.1.0:
2265 | version "1.1.0"
2266 | resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
2267 | dependencies:
2268 | array-each "^1.0.1"
2269 | array-slice "^1.0.0"
2270 | for-own "^1.0.0"
2271 | isobject "^3.0.0"
2272 |
2273 | object.omit@^2.0.0:
2274 | version "2.0.1"
2275 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
2276 | dependencies:
2277 | for-own "^0.1.4"
2278 | is-extendable "^0.1.1"
2279 |
2280 | object.pick@^1.2.0:
2281 | version "1.2.0"
2282 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.2.0.tgz#b5392bee9782da6d9fb7d6afaf539779f1234c2b"
2283 | dependencies:
2284 | isobject "^2.1.0"
2285 |
2286 | once@^1.3.0:
2287 | version "1.4.0"
2288 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
2289 | dependencies:
2290 | wrappy "1"
2291 |
2292 | once@~1.3.0:
2293 | version "1.3.3"
2294 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
2295 | dependencies:
2296 | wrappy "1"
2297 |
2298 | onetime@^2.0.0:
2299 | version "2.0.1"
2300 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
2301 | dependencies:
2302 | mimic-fn "^1.0.0"
2303 |
2304 | optionator@^0.8.2:
2305 | version "0.8.2"
2306 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
2307 | dependencies:
2308 | deep-is "~0.1.3"
2309 | fast-levenshtein "~2.0.4"
2310 | levn "~0.3.0"
2311 | prelude-ls "~1.1.2"
2312 | type-check "~0.3.2"
2313 | wordwrap "~1.0.0"
2314 |
2315 | orchestrator@^0.3.0:
2316 | version "0.3.8"
2317 | resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e"
2318 | dependencies:
2319 | end-of-stream "~0.1.5"
2320 | sequencify "~0.0.7"
2321 | stream-consume "~0.1.0"
2322 |
2323 | ordered-read-streams@^0.1.0:
2324 | version "0.1.0"
2325 | resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126"
2326 |
2327 | os-homedir@^1.0.0, os-homedir@^1.0.1:
2328 | version "1.0.2"
2329 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
2330 |
2331 | os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
2332 | version "1.0.2"
2333 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
2334 |
2335 | p-limit@^1.1.0:
2336 | version "1.1.0"
2337 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
2338 |
2339 | p-locate@^2.0.0:
2340 | version "2.0.0"
2341 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
2342 | dependencies:
2343 | p-limit "^1.1.0"
2344 |
2345 | p-map@^1.1.1:
2346 | version "1.1.1"
2347 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a"
2348 |
2349 | packet-reader@0.3.1:
2350 | version "0.3.1"
2351 | resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz#cd62e60af8d7fea8a705ec4ff990871c46871f27"
2352 |
2353 | parse-filepath@^1.0.1:
2354 | version "1.0.1"
2355 | resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73"
2356 | dependencies:
2357 | is-absolute "^0.2.3"
2358 | map-cache "^0.2.0"
2359 | path-root "^0.1.1"
2360 |
2361 | parse-glob@^3.0.4:
2362 | version "3.0.4"
2363 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
2364 | dependencies:
2365 | glob-base "^0.3.0"
2366 | is-dotfile "^1.0.0"
2367 | is-extglob "^1.0.0"
2368 | is-glob "^2.0.0"
2369 |
2370 | parse-json@^2.2.0:
2371 | version "2.2.0"
2372 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
2373 | dependencies:
2374 | error-ex "^1.2.0"
2375 |
2376 | parse-passwd@^1.0.0:
2377 | version "1.0.0"
2378 | resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
2379 |
2380 | path-exists@^2.0.0:
2381 | version "2.1.0"
2382 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
2383 | dependencies:
2384 | pinkie-promise "^2.0.0"
2385 |
2386 | path-exists@^3.0.0:
2387 | version "3.0.0"
2388 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
2389 |
2390 | path-is-absolute@^1.0.0:
2391 | version "1.0.1"
2392 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2393 |
2394 | path-is-inside@^1.0.1, path-is-inside@^1.0.2:
2395 | version "1.0.2"
2396 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
2397 |
2398 | path-parse@^1.0.5:
2399 | version "1.0.5"
2400 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
2401 |
2402 | path-root-regex@^0.1.0:
2403 | version "0.1.2"
2404 | resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
2405 |
2406 | path-root@^0.1.1:
2407 | version "0.1.1"
2408 | resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7"
2409 | dependencies:
2410 | path-root-regex "^0.1.0"
2411 |
2412 | path-type@^2.0.0:
2413 | version "2.0.0"
2414 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
2415 | dependencies:
2416 | pify "^2.0.0"
2417 |
2418 | pathval@^1.0.0:
2419 | version "1.1.0"
2420 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
2421 |
2422 | pg-connection-string@0.1.3:
2423 | version "0.1.3"
2424 | resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7"
2425 |
2426 | pg-native@^2.0.1:
2427 | version "2.0.1"
2428 | resolved "https://registry.yarnpkg.com/pg-native/-/pg-native-2.0.1.tgz#f7139360e001f522f44192dc2c19fb6a55e2cf18"
2429 | dependencies:
2430 | libpq "^1.7.0"
2431 | pg-types "1.6.0"
2432 | readable-stream "1.0.31"
2433 |
2434 | pg-pool@2.*:
2435 | version "2.0.1"
2436 | resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.1.tgz#8b12541df271b57f7020c50a3f5566471f82c77e"
2437 |
2438 | pg-types@1.*:
2439 | version "1.12.0"
2440 | resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-1.12.0.tgz#8ad3b7b897e3fd463e62de241ad5fc640b4a66f0"
2441 | dependencies:
2442 | ap "~0.2.0"
2443 | postgres-array "~1.0.0"
2444 | postgres-bytea "~1.0.0"
2445 | postgres-date "~1.0.0"
2446 | postgres-interval "^1.1.0"
2447 |
2448 | pg-types@1.6.0:
2449 | version "1.6.0"
2450 | resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-1.6.0.tgz#3872a0f199143025497f4ee2a65fdaf00d7ea8b3"
2451 |
2452 | pg@^7.0.2:
2453 | version "7.0.2"
2454 | resolved "https://registry.yarnpkg.com/pg/-/pg-7.0.2.tgz#b9c2fe8168e7edfe9343aebe6fc48591e766ada7"
2455 | dependencies:
2456 | buffer-writer "1.0.1"
2457 | packet-reader "0.3.1"
2458 | pg-connection-string "0.1.3"
2459 | pg-pool "2.*"
2460 | pg-types "1.*"
2461 | pgpass "1.x"
2462 | semver "4.3.2"
2463 |
2464 | pgpass@1.x:
2465 | version "1.0.2"
2466 | resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306"
2467 | dependencies:
2468 | split "^1.0.0"
2469 |
2470 | pify@^2.0.0:
2471 | version "2.3.0"
2472 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
2473 |
2474 | pify@^3.0.0:
2475 | version "3.0.0"
2476 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
2477 |
2478 | pinkie-promise@^2.0.0:
2479 | version "2.0.1"
2480 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
2481 | dependencies:
2482 | pinkie "^2.0.0"
2483 |
2484 | pinkie@^2.0.0:
2485 | version "2.0.4"
2486 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
2487 |
2488 | pkg-dir@^1.0.0:
2489 | version "1.0.0"
2490 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
2491 | dependencies:
2492 | find-up "^1.0.0"
2493 |
2494 | plugin-error@^1.0.0, plugin-error@^1.0.1:
2495 | version "1.0.1"
2496 | resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
2497 | dependencies:
2498 | ansi-colors "^1.0.1"
2499 | arr-diff "^4.0.0"
2500 | arr-union "^3.1.0"
2501 | extend-shallow "^3.0.2"
2502 |
2503 | pluralize@^4.0.0:
2504 | version "4.0.0"
2505 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762"
2506 |
2507 | pluralize@^7.0.0:
2508 | version "7.0.0"
2509 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
2510 |
2511 | postgres-array@~1.0.0:
2512 | version "1.0.2"
2513 | resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.2.tgz#8e0b32eb03bf77a5c0a7851e0441c169a256a238"
2514 |
2515 | postgres-bytea@~1.0.0:
2516 | version "1.0.0"
2517 | resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35"
2518 |
2519 | postgres-date@~1.0.0:
2520 | version "1.0.3"
2521 | resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz#e2d89702efdb258ff9d9cee0fe91bd06975257a8"
2522 |
2523 | postgres-interval@^1.1.0:
2524 | version "1.1.1"
2525 | resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.1.tgz#acdb0f897b4b1c6e496d9d4e0a853e1c428f06f0"
2526 | dependencies:
2527 | xtend "^4.0.0"
2528 |
2529 | prelude-ls@~1.1.2:
2530 | version "1.1.2"
2531 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
2532 |
2533 | preserve@^0.2.0:
2534 | version "0.2.0"
2535 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
2536 |
2537 | pretty-hrtime@^1.0.0:
2538 | version "1.0.3"
2539 | resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
2540 |
2541 | private@^0.1.6:
2542 | version "0.1.7"
2543 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
2544 |
2545 | process-nextick-args@~1.0.6:
2546 | version "1.0.7"
2547 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
2548 |
2549 | progress@^2.0.0:
2550 | version "2.0.0"
2551 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
2552 |
2553 | pseudomap@^1.0.2:
2554 | version "1.0.2"
2555 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
2556 |
2557 | randomatic@^1.1.3:
2558 | version "1.1.7"
2559 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
2560 | dependencies:
2561 | is-number "^3.0.0"
2562 | kind-of "^4.0.0"
2563 |
2564 | read-pkg-up@^2.0.0:
2565 | version "2.0.0"
2566 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
2567 | dependencies:
2568 | find-up "^2.0.0"
2569 | read-pkg "^2.0.0"
2570 |
2571 | read-pkg@^2.0.0:
2572 | version "2.0.0"
2573 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
2574 | dependencies:
2575 | load-json-file "^2.0.0"
2576 | normalize-package-data "^2.3.2"
2577 | path-type "^2.0.0"
2578 |
2579 | readable-stream@1.0.31:
2580 | version "1.0.31"
2581 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.31.tgz#8f2502e0bc9e3b0da1b94520aabb4e2603ecafae"
2582 | dependencies:
2583 | core-util-is "~1.0.0"
2584 | inherits "~2.0.1"
2585 | isarray "0.0.1"
2586 | string_decoder "~0.10.x"
2587 |
2588 | "readable-stream@>=1.0.33-1 <1.1.0-0":
2589 | version "1.0.34"
2590 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
2591 | dependencies:
2592 | core-util-is "~1.0.0"
2593 | inherits "~2.0.1"
2594 | isarray "0.0.1"
2595 | string_decoder "~0.10.x"
2596 |
2597 | readable-stream@^2.1.5, readable-stream@^2.2.2:
2598 | version "2.3.3"
2599 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
2600 | dependencies:
2601 | core-util-is "~1.0.0"
2602 | inherits "~2.0.3"
2603 | isarray "~1.0.0"
2604 | process-nextick-args "~1.0.6"
2605 | safe-buffer "~5.1.1"
2606 | string_decoder "~1.0.3"
2607 | util-deprecate "~1.0.1"
2608 |
2609 | readable-stream@~1.1.9:
2610 | version "1.1.14"
2611 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
2612 | dependencies:
2613 | core-util-is "~1.0.0"
2614 | inherits "~2.0.1"
2615 | isarray "0.0.1"
2616 | string_decoder "~0.10.x"
2617 |
2618 | rechoir@^0.6.2:
2619 | version "0.6.2"
2620 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
2621 | dependencies:
2622 | resolve "^1.1.6"
2623 |
2624 | regenerate@^1.2.1:
2625 | version "1.3.2"
2626 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
2627 |
2628 | regenerator-runtime@^0.10.0:
2629 | version "0.10.5"
2630 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
2631 |
2632 | regex-cache@^0.4.2:
2633 | version "0.4.3"
2634 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
2635 | dependencies:
2636 | is-equal-shallow "^0.1.3"
2637 | is-primitive "^2.0.0"
2638 |
2639 | regexpp@^1.0.1:
2640 | version "1.1.0"
2641 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
2642 |
2643 | regexpu-core@^2.0.0:
2644 | version "2.0.0"
2645 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
2646 | dependencies:
2647 | regenerate "^1.2.1"
2648 | regjsgen "^0.2.0"
2649 | regjsparser "^0.1.4"
2650 |
2651 | regjsgen@^0.2.0:
2652 | version "0.2.0"
2653 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
2654 |
2655 | regjsparser@^0.1.4:
2656 | version "0.1.5"
2657 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
2658 | dependencies:
2659 | jsesc "~0.5.0"
2660 |
2661 | remove-trailing-separator@^1.0.1:
2662 | version "1.0.2"
2663 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"
2664 |
2665 | repeat-element@^1.1.2:
2666 | version "1.1.2"
2667 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
2668 |
2669 | repeat-string@^1.5.2:
2670 | version "1.6.1"
2671 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
2672 |
2673 | repeating@^2.0.0:
2674 | version "2.0.1"
2675 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
2676 | dependencies:
2677 | is-finite "^1.0.0"
2678 |
2679 | replace-ext@0.0.1:
2680 | version "0.0.1"
2681 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
2682 |
2683 | require-uncached@^1.0.3:
2684 | version "1.0.3"
2685 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
2686 | dependencies:
2687 | caller-path "^0.1.0"
2688 | resolve-from "^1.0.0"
2689 |
2690 | resolve-dir@^0.1.0:
2691 | version "0.1.1"
2692 | resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
2693 | dependencies:
2694 | expand-tilde "^1.2.2"
2695 | global-modules "^0.2.3"
2696 |
2697 | resolve-from@^1.0.0:
2698 | version "1.0.1"
2699 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
2700 |
2701 | resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0:
2702 | version "1.3.3"
2703 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
2704 | dependencies:
2705 | path-parse "^1.0.5"
2706 |
2707 | restore-cursor@^2.0.0:
2708 | version "2.0.0"
2709 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
2710 | dependencies:
2711 | onetime "^2.0.0"
2712 | signal-exit "^3.0.2"
2713 |
2714 | rimraf@^2.2.8:
2715 | version "2.6.1"
2716 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
2717 | dependencies:
2718 | glob "^7.0.5"
2719 |
2720 | run-async@^2.2.0:
2721 | version "2.3.0"
2722 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
2723 | dependencies:
2724 | is-promise "^2.1.0"
2725 |
2726 | rx-lite-aggregates@^4.0.8:
2727 | version "4.0.8"
2728 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
2729 | dependencies:
2730 | rx-lite "*"
2731 |
2732 | rx-lite@*, rx-lite@^4.0.8:
2733 | version "4.0.8"
2734 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
2735 |
2736 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2737 | version "5.1.1"
2738 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
2739 |
2740 | "semver@2 || 3 || 4 || 5", semver@^5.3.0:
2741 | version "5.3.0"
2742 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
2743 |
2744 | semver@4.3.2:
2745 | version "4.3.2"
2746 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7"
2747 |
2748 | semver@^4.1.0:
2749 | version "4.3.6"
2750 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
2751 |
2752 | sequencify@~0.0.7:
2753 | version "0.0.7"
2754 | resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c"
2755 |
2756 | shebang-command@^1.2.0:
2757 | version "1.2.0"
2758 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
2759 | dependencies:
2760 | shebang-regex "^1.0.0"
2761 |
2762 | shebang-regex@^1.0.0:
2763 | version "1.0.0"
2764 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
2765 |
2766 | sigmund@~1.0.0:
2767 | version "1.0.1"
2768 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
2769 |
2770 | signal-exit@^3.0.2:
2771 | version "3.0.2"
2772 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
2773 |
2774 | slash@^1.0.0:
2775 | version "1.0.0"
2776 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
2777 |
2778 | slice-ansi@0.0.4:
2779 | version "0.0.4"
2780 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
2781 |
2782 | slice-ansi@1.0.0:
2783 | version "1.0.0"
2784 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
2785 | dependencies:
2786 | is-fullwidth-code-point "^2.0.0"
2787 |
2788 | source-map-support@^0.4.2:
2789 | version "0.4.15"
2790 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
2791 | dependencies:
2792 | source-map "^0.5.6"
2793 |
2794 | source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6:
2795 | version "0.5.6"
2796 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
2797 |
2798 | sparkles@^1.0.0:
2799 | version "1.0.0"
2800 | resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
2801 |
2802 | spdx-correct@~1.0.0:
2803 | version "1.0.2"
2804 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
2805 | dependencies:
2806 | spdx-license-ids "^1.0.2"
2807 |
2808 | spdx-expression-parse@~1.0.0:
2809 | version "1.0.4"
2810 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
2811 |
2812 | spdx-license-ids@^1.0.2:
2813 | version "1.2.2"
2814 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
2815 |
2816 | split@^1.0.0:
2817 | version "1.0.0"
2818 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.0.tgz#c4395ce683abcd254bc28fe1dabb6e5c27dcffae"
2819 | dependencies:
2820 | through "2"
2821 |
2822 | sprintf-js@~1.0.2:
2823 | version "1.0.3"
2824 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
2825 |
2826 | stream-consume@~0.1.0:
2827 | version "0.1.0"
2828 | resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f"
2829 |
2830 | string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
2831 | version "2.1.1"
2832 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
2833 | dependencies:
2834 | is-fullwidth-code-point "^2.0.0"
2835 | strip-ansi "^4.0.0"
2836 |
2837 | string_decoder@~0.10.x:
2838 | version "0.10.31"
2839 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
2840 |
2841 | string_decoder@~1.0.3:
2842 | version "1.0.3"
2843 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
2844 | dependencies:
2845 | safe-buffer "~5.1.0"
2846 |
2847 | strip-ansi@^3.0.0:
2848 | version "3.0.1"
2849 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
2850 | dependencies:
2851 | ansi-regex "^2.0.0"
2852 |
2853 | strip-ansi@^4.0.0:
2854 | version "4.0.0"
2855 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
2856 | dependencies:
2857 | ansi-regex "^3.0.0"
2858 |
2859 | strip-bom@^1.0.0:
2860 | version "1.0.0"
2861 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794"
2862 | dependencies:
2863 | first-chunk-stream "^1.0.0"
2864 | is-utf8 "^0.2.0"
2865 |
2866 | strip-bom@^3.0.0:
2867 | version "3.0.0"
2868 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
2869 |
2870 | strip-json-comments@~2.0.1:
2871 | version "2.0.1"
2872 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2873 |
2874 | supports-color@3.1.2:
2875 | version "3.1.2"
2876 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
2877 | dependencies:
2878 | has-flag "^1.0.0"
2879 |
2880 | supports-color@^2.0.0:
2881 | version "2.0.0"
2882 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
2883 |
2884 | supports-color@^4.0.0:
2885 | version "4.2.1"
2886 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836"
2887 | dependencies:
2888 | has-flag "^2.0.0"
2889 |
2890 | supports-color@^5.3.0:
2891 | version "5.5.0"
2892 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2893 | dependencies:
2894 | has-flag "^3.0.0"
2895 |
2896 | table@4.0.2:
2897 | version "4.0.2"
2898 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
2899 | dependencies:
2900 | ajv "^5.2.3"
2901 | ajv-keywords "^2.1.0"
2902 | chalk "^2.1.0"
2903 | lodash "^4.17.4"
2904 | slice-ansi "1.0.0"
2905 | string-width "^2.1.1"
2906 |
2907 | table@^4.0.1:
2908 | version "4.0.1"
2909 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435"
2910 | dependencies:
2911 | ajv "^4.7.0"
2912 | ajv-keywords "^1.0.0"
2913 | chalk "^1.1.1"
2914 | lodash "^4.0.0"
2915 | slice-ansi "0.0.4"
2916 | string-width "^2.0.0"
2917 |
2918 | text-table@~0.2.0:
2919 | version "0.2.0"
2920 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
2921 |
2922 | through2@^0.6.1:
2923 | version "0.6.5"
2924 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
2925 | dependencies:
2926 | readable-stream ">=1.0.33-1 <1.1.0-0"
2927 | xtend ">=4.0.0 <4.1.0-0"
2928 |
2929 | through2@^2.0.0:
2930 | version "2.0.3"
2931 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
2932 | dependencies:
2933 | readable-stream "^2.1.5"
2934 | xtend "~4.0.1"
2935 |
2936 | through@2, through@^2.3.6:
2937 | version "2.3.8"
2938 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2939 |
2940 | tildify@^1.0.0:
2941 | version "1.2.0"
2942 | resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a"
2943 | dependencies:
2944 | os-homedir "^1.0.0"
2945 |
2946 | time-stamp@^1.0.0:
2947 | version "1.1.0"
2948 | resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
2949 |
2950 | tmp@^0.0.31:
2951 | version "0.0.31"
2952 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
2953 | dependencies:
2954 | os-tmpdir "~1.0.1"
2955 |
2956 | to-fast-properties@^1.0.1:
2957 | version "1.0.3"
2958 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
2959 |
2960 | to-fast-properties@^2.0.0:
2961 | version "2.0.0"
2962 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
2963 |
2964 | trim-right@^1.0.1:
2965 | version "1.0.1"
2966 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
2967 |
2968 | tryit@^1.0.1:
2969 | version "1.0.3"
2970 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
2971 |
2972 | type-check@~0.3.2:
2973 | version "0.3.2"
2974 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
2975 | dependencies:
2976 | prelude-ls "~1.1.2"
2977 |
2978 | type-detect@^4.0.0:
2979 | version "4.0.8"
2980 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
2981 |
2982 | typedarray@^0.0.6:
2983 | version "0.0.6"
2984 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
2985 |
2986 | unc-path-regex@^0.1.0:
2987 | version "0.1.2"
2988 | resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
2989 |
2990 | unique-stream@^1.0.0:
2991 | version "1.0.0"
2992 | resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b"
2993 |
2994 | user-home@^1.1.1:
2995 | version "1.1.1"
2996 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
2997 |
2998 | util-deprecate@~1.0.1:
2999 | version "1.0.2"
3000 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
3001 |
3002 | v8flags@^2.0.2:
3003 | version "2.1.1"
3004 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
3005 | dependencies:
3006 | user-home "^1.1.1"
3007 |
3008 | validate-npm-package-license@^3.0.1:
3009 | version "3.0.1"
3010 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
3011 | dependencies:
3012 | spdx-correct "~1.0.0"
3013 | spdx-expression-parse "~1.0.0"
3014 |
3015 | vinyl-fs@^0.3.0:
3016 | version "0.3.14"
3017 | resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6"
3018 | dependencies:
3019 | defaults "^1.0.0"
3020 | glob-stream "^3.1.5"
3021 | glob-watcher "^0.0.6"
3022 | graceful-fs "^3.0.0"
3023 | mkdirp "^0.5.0"
3024 | strip-bom "^1.0.0"
3025 | through2 "^0.6.1"
3026 | vinyl "^0.4.0"
3027 |
3028 | vinyl-sourcemaps-apply@^0.2.0:
3029 | version "0.2.1"
3030 | resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705"
3031 | dependencies:
3032 | source-map "^0.5.1"
3033 |
3034 | vinyl@^0.4.0:
3035 | version "0.4.6"
3036 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847"
3037 | dependencies:
3038 | clone "^0.2.0"
3039 | clone-stats "^0.0.1"
3040 |
3041 | vinyl@^0.5.0:
3042 | version "0.5.3"
3043 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde"
3044 | dependencies:
3045 | clone "^1.0.0"
3046 | clone-stats "^0.0.1"
3047 | replace-ext "0.0.1"
3048 |
3049 | which@^1.2.12, which@^1.2.9:
3050 | version "1.2.14"
3051 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
3052 | dependencies:
3053 | isexe "^2.0.0"
3054 |
3055 | wordwrap@~1.0.0:
3056 | version "1.0.0"
3057 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
3058 |
3059 | wrappy@1:
3060 | version "1.0.2"
3061 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
3062 |
3063 | write@^0.2.1:
3064 | version "0.2.1"
3065 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
3066 | dependencies:
3067 | mkdirp "^0.5.1"
3068 |
3069 | "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1:
3070 | version "4.0.1"
3071 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
3072 |
3073 | yallist@^2.1.2:
3074 | version "2.1.2"
3075 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
3076 |
--------------------------------------------------------------------------------