From ec332d7497004173846cab6b3145624ea6b0e486 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Sun, 27 Jan 2019 19:13:02 -0800 Subject: [PATCH 01/24] Changed count to be approximate. Should help with postgres slowness --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index a24aad0e87..8763ac1ec8 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1962,7 +1962,8 @@ export class PostgresStorageAdapter implements StorageAdapter { const wherePattern = where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; - const qs = `SELECT count(*) FROM $1:name ${wherePattern}`; + // const qs = `SELECT count(*) FROM $1:name ${wherePattern}`; + const qs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1:name ${wherePattern}`; return this._client .one(qs, values, a => +a.count) .catch(error => { From 9e2e8cd6cf74029f1c52af8930881492a44b8b97 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Sun, 27 Jan 2019 22:40:55 -0800 Subject: [PATCH 02/24] refactored last commit to only fall back to estimate if no complex query --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 8763ac1ec8..964962d9d4 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1962,8 +1962,13 @@ export class PostgresStorageAdapter implements StorageAdapter { const wherePattern = where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; - // const qs = `SELECT count(*) FROM $1:name ${wherePattern}`; - const qs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1:name ${wherePattern}`; + + if (where.pattern.lenth > 0){ + const qs = `SELECT count(*) FROM $1:name ${wherePattern}`; + } else { + const qs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = ${className}`; + } + return this._client .one(qs, values, a => +a.count) .catch(error => { From 2ac2e82e9af7e7e0e78a90258273bcd15574cfcf Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Sun, 27 Jan 2019 23:31:25 -0800 Subject: [PATCH 03/24] handlign variables correctly --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 964962d9d4..b128fb23f9 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1963,12 +1963,16 @@ export class PostgresStorageAdapter implements StorageAdapter { const wherePattern = where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; + let tempQs = ''; + if (where.pattern.lenth > 0){ - const qs = `SELECT count(*) FROM $1:name ${wherePattern}`; + tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - const qs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = ${className}`; + tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = ${className}`; } + const qs = tempQs; + return this._client .one(qs, values, a => +a.count) .catch(error => { From 7bf3679087f399ecd96d86647c9b470e9b57504a Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Mon, 28 Jan 2019 10:44:41 -0800 Subject: [PATCH 04/24] Trying again because it was casting to lowercase table names which doesnt work for us/ --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index b128fb23f9..09128a63e3 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1968,7 +1968,7 @@ export class PostgresStorageAdapter implements StorageAdapter { if (where.pattern.lenth > 0){ tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = ${className}`; + tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1name`; } const qs = tempQs; From bd6e816694a1a168925eb542b19866c22218c0b6 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Mon, 28 Jan 2019 11:40:33 -0800 Subject: [PATCH 05/24] syntax error --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 09128a63e3..6a4d44929c 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1968,7 +1968,7 @@ export class PostgresStorageAdapter implements StorageAdapter { if (where.pattern.lenth > 0){ tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1name`; + tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1:name`; } const qs = tempQs; From 3209b5d50892f2ca75c12b79d8afb06c20747209 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Mon, 28 Jan 2019 12:03:06 -0800 Subject: [PATCH 06/24] Adding quotations to pg query --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 6a4d44929c..c125e8d93d 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1968,7 +1968,7 @@ export class PostgresStorageAdapter implements StorageAdapter { if (where.pattern.lenth > 0){ tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1:name`; + tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = \"$1:name\"`; } const qs = tempQs; From fb47e0f040e039b8a3e3befe9e6b4c1ebb18955c Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Mon, 28 Jan 2019 14:14:30 -0800 Subject: [PATCH 07/24] hopefully final pg fix --- .../Postgres/PostgresStorageAdapter.js | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index c125e8d93d..b5c9014b19 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1953,34 +1953,40 @@ export class PostgresStorageAdapter implements StorageAdapter { }); } - // Executes a count. - count(className: string, schema: SchemaType, query: QueryType) { + count(className, schema, query) { debug('count', className, query); const values = [className]; - const where = buildWhereClause({ schema, query, index: 2 }); - values.push(...where.values); - const wherePattern = - where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; + const where = buildWhereClause({ + schema, + query, + index: 2 + }); + values.push(...where.values); + const wherePattern = where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; let tempQs = ''; - - if (where.pattern.lenth > 0){ - tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; + if (where.pattern.lenth > 0) { + tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = \"$1:name\"`; + tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = '` + className + "'"; } const qs = tempQs; - - return this._client - .one(qs, values, a => +a.count) - .catch(error => { - if (error.code !== PostgresRelationDoesNotExistError) { - throw error; + return this._client.one(qs, values, a => { + console.log(a.approximate_row_count); + if(a.approximate_row_count){ + return +a.approximate_row_count + } else { + return +a.count } - return 0; - }); + }).catch(error => { + if (error.code !== PostgresRelationDoesNotExistError) { + throw error; + } + + return 0; + }); } distinct( From 1d90ed43f45e46e52972ba7f9438d30eb9794a3a Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Mon, 28 Jan 2019 15:17:21 -0800 Subject: [PATCH 08/24] Postgres will now use an approximate count unless there is a more complex query specified --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index b5c9014b19..9786584b18 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1956,7 +1956,6 @@ export class PostgresStorageAdapter implements StorageAdapter { count(className, schema, query) { debug('count', className, query); const values = [className]; - const where = buildWhereClause({ schema, query, @@ -1964,8 +1963,8 @@ export class PostgresStorageAdapter implements StorageAdapter { }); values.push(...where.values); const wherePattern = where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; - let tempQs = ''; + if (where.pattern.lenth > 0) { tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { @@ -1974,7 +1973,6 @@ export class PostgresStorageAdapter implements StorageAdapter { const qs = tempQs; return this._client.one(qs, values, a => { - console.log(a.approximate_row_count); if(a.approximate_row_count){ return +a.approximate_row_count } else { From 87f9addf2e41faea5877deb9769b25dd947b70e3 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Mon, 28 Jan 2019 17:29:01 -0800 Subject: [PATCH 09/24] handling edge case --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 9786584b18..b29f46e9bf 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1973,7 +1973,7 @@ export class PostgresStorageAdapter implements StorageAdapter { const qs = tempQs; return this._client.one(qs, values, a => { - if(a.approximate_row_count){ + if(a.approximate_row_count!=null){ return +a.approximate_row_count } else { return +a.count From 909243df1936c4d1d275ae01954e7767354a1b8d Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Tue, 29 Jan 2019 14:33:30 -0800 Subject: [PATCH 10/24] Fix for count being very slow on large Parse Classes' collections in Postgres. Replicating fix for Mongo in issue 5264 --- .../Postgres/PostgresStorageAdapter.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index b29f46e9bf..f270cb0736 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1953,25 +1953,24 @@ export class PostgresStorageAdapter implements StorageAdapter { }); } - count(className, schema, query) { + // Executes a count. + count(className: string, schema: SchemaType, query: QueryType) { debug('count', className, query); const values = [className]; - const where = buildWhereClause({ - schema, - query, - index: 2 - }); + const where = buildWhereClause({ schema, query, index: 2 }); values.push(...where.values); - const wherePattern = where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; + + const wherePattern = + where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; let tempQs = ''; - + if (where.pattern.lenth > 0) { tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = '` + className + "'"; } - const qs = tempQs; + return this._client.one(qs, values, a => { if(a.approximate_row_count!=null){ return +a.approximate_row_count @@ -1982,9 +1981,9 @@ export class PostgresStorageAdapter implements StorageAdapter { if (error.code !== PostgresRelationDoesNotExistError) { throw error; } - return 0; }); + } distinct( From 6be92f11a5dfe14e4152447fdbf238b606cceac8 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Tue, 29 Jan 2019 15:02:45 -0800 Subject: [PATCH 11/24] Fixed silly spelling error resulting from copying over notes --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index f270cb0736..15178c4e35 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1964,7 +1964,7 @@ export class PostgresStorageAdapter implements StorageAdapter { where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; let tempQs = ''; - if (where.pattern.lenth > 0) { + if (where.pattern.length > 0) { tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = '` + className + "'"; From f464f5113f9b6e31df9a65563f41162ebab7f395 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Tue, 29 Jan 2019 15:16:17 -0800 Subject: [PATCH 12/24] Lint fixes --- .../Storage/Postgres/PostgresStorageAdapter.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 15178c4e35..3d9c2d3ef4 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1972,12 +1972,12 @@ export class PostgresStorageAdapter implements StorageAdapter { const qs = tempQs; return this._client.one(qs, values, a => { - if(a.approximate_row_count!=null){ - return +a.approximate_row_count - } else { - return +a.count - } - }).catch(error => { + if(a.approximate_row_count != null){ + return +a.approximate_row_count + } else { + return +a.count + } + }).catch(error => { if (error.code !== PostgresRelationDoesNotExistError) { throw error; } From 7b55d87aafdcc8f4769112d585b28cb09a4ac849 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Wed, 30 Jan 2019 10:25:46 -0800 Subject: [PATCH 13/24] limiting results to 1 on approximation --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 3d9c2d3ef4..4cc98567df 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1967,7 +1967,7 @@ export class PostgresStorageAdapter implements StorageAdapter { if (where.pattern.length > 0) { tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = '` + className + "'"; + tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = '` + className + "' LIMIT 1"; } const qs = tempQs; From 662ed81fd279cc8c401a54a4fd931ff97ece2509 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Wed, 30 Jan 2019 14:38:17 -0800 Subject: [PATCH 14/24] suppress test that we can no longer run for postgres --- spec/AudienceRouter.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/AudienceRouter.spec.js b/spec/AudienceRouter.spec.js index 10686fdd37..85b84ffebf 100644 --- a/spec/AudienceRouter.spec.js +++ b/spec/AudienceRouter.spec.js @@ -145,7 +145,7 @@ describe('AudiencesRouter', () => { }); }); - it('query installations with count = 1', done => { + it_exclude_dbs(['postgres'])('query installations with count = 1', done => { const config = Config.get('test'); const androidAudienceRequest = { name: 'Android Users', @@ -189,7 +189,7 @@ describe('AudiencesRouter', () => { }); }); - it('query installations with limit = 0 and count = 1', done => { + it_exclude_dbs(['postgres'])('query installations with limit = 0 and count = 1', done => { const config = Config.get('test'); const androidAudienceRequest = { name: 'Android Users', From b29d93b1455e4dff94660ed2f4d19734d0eb8e45 Mon Sep 17 00:00:00 2001 From: Sagar Malhi Date: Wed, 30 Jan 2019 14:50:24 -0800 Subject: [PATCH 15/24] removed tests from Postgres that no longer apply --- spec/InstallationsRouter.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/InstallationsRouter.spec.js b/spec/InstallationsRouter.spec.js index 18103762e6..1196230e8d 100644 --- a/spec/InstallationsRouter.spec.js +++ b/spec/InstallationsRouter.spec.js @@ -160,7 +160,7 @@ describe('InstallationsRouter', () => { }); }); - it('query installations with count = 1', done => { + it_exclude_dbs(['postgres'])('query installations with count = 1', done => { const config = Config.get('test'); const androidDeviceRequest = { installationId: '12345678-abcd-abcd-abcd-123456789abc', @@ -209,7 +209,7 @@ describe('InstallationsRouter', () => { }); }); - it('query installations with limit = 0 and count = 1', done => { + it_exclude_dbs(['postgres'])('query installations with limit = 0 and count = 1', done => { const config = Config.get('test'); const androidDeviceRequest = { installationId: '12345678-abcd-abcd-abcd-123456789abc', From 15991a34eaa6a353e483929ee2dc3288673054a9 Mon Sep 17 00:00:00 2001 From: behrang Date: Thu, 31 Jan 2019 16:36:34 -0800 Subject: [PATCH 16/24] made changes requested by dplewis --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 4cc98567df..7636e7e23a 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1967,12 +1967,12 @@ export class PostgresStorageAdapter implements StorageAdapter { if (where.pattern.length > 0) { tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = `SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = '` + className + "' LIMIT 1"; + tempQs = 'SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1'; } const qs = tempQs; return this._client.one(qs, values, a => { - if(a.approximate_row_count != null){ + if (a.approximate_row_count != null) { return +a.approximate_row_count } else { return +a.count From 7401970a5e1806a08d75754224ffe037d53e3168 Mon Sep 17 00:00:00 2001 From: behrang Date: Tue, 26 Mar 2019 21:37:35 -0700 Subject: [PATCH 17/24] fixed count errors --- package-lock.json | 799 ++++++------------ package.json | 4 +- .../Postgres/PostgresStorageAdapter.js | 32 +- 3 files changed, 270 insertions(+), 565 deletions(-) diff --git a/package-lock.json b/package-lock.json index d316dd9aa4..8a4a70829d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1257,57 +1257,6 @@ "any-observable": "^0.3.0" } }, - "@semantic-release/error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", - "dev": true - }, - "@semantic-release/git": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-4.0.3.tgz", - "integrity": "sha512-XvW9mq4eegS5kQ4nNbgQjMC6AOO+9Oy6H+8iRTPCRkpJElhtecPUu/gqriZXEF/qqGXF891JKA3onCUjEwwWuQ==", - "dev": true, - "requires": { - "@semantic-release/error": "^2.1.0", - "aggregate-error": "^1.0.0", - "debug": "^3.1.0", - "dir-glob": "^2.0.0", - "execa": "^0.10.0", - "fs-extra": "^6.0.0", - "lodash": "^4.17.4", - "micromatch": "^3.1.4", - "p-reduce": "^1.0.0" - }, - "dependencies": { - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, "accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", @@ -1337,16 +1286,6 @@ "es6-promisify": "^5.0.0" } }, - "aggregate-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", - "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", - "dev": true, - "requires": { - "clean-stack": "^1.0.0", - "indent-string": "^3.0.0" - } - }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -2595,12 +2534,6 @@ } } }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, "cli-color": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.2.tgz", @@ -2983,9 +2916,9 @@ } }, "css-what": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", "dev": true }, "cycle": { @@ -3257,15 +3190,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, "docopt": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", @@ -3282,21 +3206,13 @@ } }, "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, "domelementtype": { @@ -3468,14 +3384,14 @@ } }, "es5-ext": { - "version": "0.10.47", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz", - "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==", + "version": "0.10.49", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz", + "integrity": "sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg==", "dev": true, "requires": { "es6-iterator": "~2.0.3", "es6-symbol": "~3.1.1", - "next-tick": "1" + "next-tick": "^1.0.0" } }, "es6-iterator": { @@ -5195,9 +5111,9 @@ }, "dependencies": { "ajv": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", - "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -5294,23 +5210,23 @@ "dev": true }, "htmlparser2": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", - "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, "requires": { - "domelementtype": "^1.3.0", + "domelementtype": "^1.3.1", "domhandler": "^2.3.0", "domutils": "^1.5.1", "entities": "^1.1.1", "inherits": "^2.0.1", - "readable-stream": "^3.0.6" + "readable-stream": "^3.1.1" }, "dependencies": { "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", + "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -5728,82 +5644,26 @@ } }, "is-mongodb-running": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-mongodb-running/-/is-mongodb-running-0.2.0.tgz", - "integrity": "sha512-FCIXo+fxq9n1YVtwNqAHXbnhzp3cvADKooqAuCjvFlBZ1Jnwur9C0kHwtxPgJTOsci/kin0Cii08ZHQomBkdBA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-mongodb-running/-/is-mongodb-running-1.0.1.tgz", + "integrity": "sha512-gyUmdhGKLHuDv+JGma70b1P1WLBMy8bvt9QLSEojSSi3/5FbUKuOKCNzHmto9ftMjyLtzlUtfCoSGdkPvx6H5w==", "dev": true, "requires": { - "chalk": "^1.1.1", - "debug": "^2.2.0", - "figures": "^1.4.0", - "lodash": "^3.10.1", + "chalk": "^2.4.1", + "debug": ">= 2.6.9", + "figures": "^2.0.0", + "lodash": "^4.17.10", "lsof": "^0.1.0", "minimist": "^1.2.0", "node-netstat": "^1.4.2", - "ps-node": "0.0.5" + "ps-node": "^0.1.6" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, @@ -5956,15 +5816,15 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", "dev": true }, "istanbul-lib-instrument": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz", - "integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", + "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", "dev": true, "requires": { "@babel/generator": "^7.0.0", @@ -5972,7 +5832,7 @@ "@babel/template": "^7.0.0", "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-coverage": "^2.0.3", "semver": "^5.5.0" } }, @@ -6055,9 +5915,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -7022,23 +6882,23 @@ } }, "mongodb-runner": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.3.2.tgz", - "integrity": "sha512-GvSicmQvzXI5aUEHt56WY8Bnb61eHwMnLe+wDa3fE/yDbVw8EVQvvpwL1MxBC758VsVdynMqQsaQZ9sdW/YbYA==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.7.1.tgz", + "integrity": "sha512-lPirvESMpk/MZYdmo8hmSM8+8ApnIUasImAB3zRCfMKki7uCqOLzvsV/+R6rFzBjeyTFpYZZCKTSormh9qCmNQ==", "dev": true, "requires": { "async": "^2.0.0", "clui": "^0.3.1", - "debug": "^3.0.1", + "debug": ">= 2.6.9 < 3.0.0 || >= 3.1.0", "fs-extra": "^4.0.2", - "is-mongodb-running": "^0.2.0", + "is-mongodb-running": "^1.0.1", "lodash.defaults": "^4.0.1", "minimist": "^1.2.0", "mkdirp": "^0.5.1", - "mongodb": "^3.1.4", + "mongodb": "^3.1.9", "mongodb-dbpath": "^0.0.1", - "mongodb-tools": "github:mongodb-js/mongodb-tools#194bdd6ac7922f8dcf3853de1aece0b0fdda93cf", - "mongodb-version-manager": "^1.1.3", + "mongodb-tools": "github:mongodb-js/mongodb-tools#b461a4c41cdf92e0c80402b2893b3b11c0ed616c", + "mongodb-version-manager": "^1.3.0", "untildify": "^3.0.0", "which": "^1.2.4" }, @@ -7052,23 +6912,17 @@ } }, "mongodb-tools": { - "version": "github:mongodb-js/mongodb-tools#194bdd6ac7922f8dcf3853de1aece0b0fdda93cf", - "from": "github:mongodb-js/mongodb-tools#194bdd6ac7922f8dcf3853de1aece0b0fdda93cf", + "version": "github:mongodb-js/mongodb-tools#b461a4c41cdf92e0c80402b2893b3b11c0ed616c", + "from": "github:mongodb-js/mongodb-tools#b461a4c41cdf92e0c80402b2893b3b11c0ed616c", "dev": true, "requires": { "debug": "^2.2.0", "lodash": "^3.10.1", "mkdirp": "0.5.0", - "mongodb-core": "^2.1.8", + "mongodb-core": "*", "rimraf": "2.2.6" }, "dependencies": { - "bson": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz", - "integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -7093,16 +6947,6 @@ "minimist": "0.0.8" } }, - "mongodb-core": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.20.tgz", - "integrity": "sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ==", - "dev": true, - "requires": { - "bson": "~1.0.4", - "require_optional": "~1.0.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -7389,54 +7233,37 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.1.0.tgz", - "integrity": "sha512-3GyY6TpQ58z9Frpv4GMExE1SV2tAgYqC7HSy2omEhNiCT3mhT9NyiOvIE8zkbuJVFzmvvNTnE4h/7/wQae7xLg==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz", + "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", - "caching-transform": "^2.0.0", + "caching-transform": "^3.0.1", "convert-source-map": "^1.6.0", - "debug-log": "^1.0.1", "find-cache-dir": "^2.0.0", "find-up": "^3.0.0", "foreground-child": "^1.5.6", "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.1", - "istanbul-lib-hook": "^2.0.1", - "istanbul-lib-instrument": "^3.0.0", - "istanbul-lib-report": "^2.0.2", - "istanbul-lib-source-maps": "^2.0.1", - "istanbul-reports": "^2.0.1", + "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-hook": "^2.0.3", + "istanbul-lib-instrument": "^3.1.0", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.2", + "istanbul-reports": "^2.1.1", "make-dir": "^1.3.0", "merge-source-map": "^1.1.0", "resolve-from": "^4.0.0", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^5.0.0", + "test-exclude": "^5.1.0", "uuid": "^3.3.2", - "yargs": "11.1.0", - "yargs-parser": "^9.0.2" + "yargs": "^12.0.5", + "yargs-parser": "^11.1.1" }, "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "ansi-regex": { "version": "3.0.0", "bundled": true, @@ -7461,9 +7288,12 @@ "dev": true }, "async": { - "version": "1.5.2", + "version": "2.6.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lodash": "^4.17.11" + } }, "balanced-match": { "version": "1.0.0", @@ -7479,55 +7309,30 @@ "concat-map": "0.0.1" } }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, "caching-transform": { - "version": "2.0.0", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { - "make-dir": "^1.0.0", - "md5-hex": "^2.0.0", - "package-hash": "^2.0.0", - "write-file-atomic": "^2.0.0" + "hasha": "^3.0.0", + "make-dir": "^1.3.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.3.0" } }, "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", + "version": "5.0.0", "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } + "dev": true }, "cliui": { - "version": "2.1.0", + "version": "4.1.0", "bundled": true, "dev": true, - "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "code-point-at": { @@ -7535,6 +7340,12 @@ "bundled": true, "dev": true }, + "commander": { + "version": "2.17.1", + "bundled": true, + "dev": true, + "optional": true + }, "commondir": { "version": "1.0.1", "bundled": true, @@ -7563,18 +7374,13 @@ } }, "debug": { - "version": "3.1.0", + "version": "4.1.1", "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "decamelize": { "version": "1.2.0", "bundled": true, @@ -7588,6 +7394,14 @@ "strip-bom": "^3.0.0" } }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "error-ex": { "version": "1.3.2", "bundled": true, @@ -7602,12 +7416,12 @@ "dev": true }, "execa": { - "version": "0.7.0", + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -7616,11 +7430,13 @@ }, "dependencies": { "cross-spawn": { - "version": "5.1.0", + "version": "6.0.5", "bundled": true, "dev": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -7665,9 +7481,12 @@ "dev": true }, "get-stream": { - "version": "3.0.0", + "version": "4.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "pump": "^3.0.0" + } }, "glob": { "version": "7.1.3", @@ -7683,28 +7502,25 @@ } }, "graceful-fs": { - "version": "4.1.11", + "version": "4.1.15", "bundled": true, "dev": true }, "handlebars": { - "version": "4.0.11", + "version": "4.1.0", "bundled": true, "dev": true, "requires": { - "async": "^1.4.0", + "async": "^2.5.0", "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" }, "dependencies": { "source-map": { - "version": "0.4.4", + "version": "0.6.1", "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } + "dev": true } } }, @@ -7713,6 +7529,14 @@ "bundled": true, "dev": true }, + "hasha": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-stream": "^1.0.1" + } + }, "hosted-git-info": { "version": "2.7.1", "bundled": true, @@ -7738,7 +7562,7 @@ "dev": true }, "invert-kv": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true }, @@ -7747,20 +7571,6 @@ "bundled": true, "dev": true }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "optional": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "bundled": true, @@ -7777,12 +7587,12 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.1", + "version": "2.0.3", "bundled": true, "dev": true }, "istanbul-lib-hook": { - "version": "2.0.1", + "version": "2.0.3", "bundled": true, "dev": true, "requires": { @@ -7790,22 +7600,32 @@ } }, "istanbul-lib-report": { - "version": "2.0.2", + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-coverage": "^2.0.3", "make-dir": "^1.3.0", - "supports-color": "^5.4.0" + "supports-color": "^6.0.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "istanbul-lib-source-maps": { - "version": "2.0.1", + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^2.0.1", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.3", "make-dir": "^1.3.0", "rimraf": "^2.6.2", "source-map": "^0.6.1" @@ -7819,11 +7639,11 @@ } }, "istanbul-reports": { - "version": "2.0.1", + "version": "2.1.1", "bundled": true, "dev": true, "requires": { - "handlebars": "^4.0.11" + "handlebars": "^4.1.0" } }, "json-parse-better-errors": { @@ -7831,27 +7651,12 @@ "bundled": true, "dev": true }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, "lcid": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "^2.0.0" } }, "load-json-file": { @@ -7874,19 +7679,18 @@ "path-exists": "^3.0.0" } }, - "lodash.flattendeep": { - "version": "4.4.0", + "lodash": { + "version": "4.17.11", "bundled": true, "dev": true }, - "longest": { - "version": "1.0.1", + "lodash.flattendeep": { + "version": "4.4.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "lru-cache": { - "version": "4.1.3", + "version": "4.1.5", "bundled": true, "dev": true, "requires": { @@ -7902,25 +7706,22 @@ "pify": "^3.0.0" } }, - "md5-hex": { - "version": "2.0.0", + "map-age-cleaner": { + "version": "0.1.3", "bundled": true, "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "p-defer": "^1.0.0" } }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, "mem": { - "version": "1.1.0", + "version": "4.1.0", "bundled": true, "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" } }, "merge-source-map": { @@ -7972,17 +7773,22 @@ } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "nice-try": { + "version": "1.0.5", "bundled": true, "dev": true }, "normalize-package-data": { - "version": "2.4.0", + "version": "2.5.0", "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -8023,23 +7829,33 @@ "dev": true }, "os-locale": { - "version": "2.1.0", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, + "p-defer": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "p-finally": { "version": "1.0.0", "bundled": true, "dev": true }, - "p-limit": { + "p-is-promise": { "version": "2.0.0", "bundled": true, + "dev": true + }, + "p-limit": { + "version": "2.1.0", + "bundled": true, "dev": true, "requires": { "p-try": "^2.0.0" @@ -8059,13 +7875,13 @@ "dev": true }, "package-hash": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.11", + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", "lodash.flattendeep": "^4.4.0", - "md5-hex": "^2.0.0", "release-zalgo": "^1.0.0" } }, @@ -8093,6 +7909,11 @@ "bundled": true, "dev": true }, + "path-parse": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, "path-type": { "version": "3.0.0", "bundled": true, @@ -8119,6 +7940,15 @@ "bundled": true, "dev": true }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "read-pkg": { "version": "3.0.0", "bundled": true, @@ -8146,12 +7976,6 @@ "es6-error": "^4.0.1" } }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true, - "optional": true - }, "require-directory": { "version": "2.1.1", "bundled": true, @@ -8162,26 +7986,25 @@ "bundled": true, "dev": true }, - "resolve-from": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", + "resolve": { + "version": "1.10.0", "bundled": true, "dev": true, - "optional": true, "requires": { - "align-text": "^0.1.1" + "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { @@ -8190,7 +8013,7 @@ "dev": true }, "semver": { - "version": "5.5.0", + "version": "5.6.0", "bundled": true, "dev": true }, @@ -8217,12 +8040,6 @@ "bundled": true, "dev": true }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true, - "optional": true - }, "spawn-wrap": { "version": "1.4.2", "bundled": true, @@ -8237,7 +8054,7 @@ } }, "spdx-correct": { - "version": "3.0.0", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { @@ -8246,7 +8063,7 @@ } }, "spdx-exceptions": { - "version": "2.1.0", + "version": "2.2.0", "bundled": true, "dev": true }, @@ -8260,7 +8077,7 @@ } }, "spdx-license-ids": { - "version": "3.0.0", + "version": "3.0.3", "bundled": true, "dev": true }, @@ -8291,16 +8108,8 @@ "bundled": true, "dev": true }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "test-exclude": { - "version": "5.0.0", + "version": "5.1.0", "bundled": true, "dev": true, "requires": { @@ -8311,43 +8120,30 @@ } }, "uglify-js": { - "version": "2.8.29", + "version": "3.4.9", "bundled": true, "dev": true, "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "commander": "~2.17.1", + "source-map": "~0.6.1" }, "dependencies": { - "yargs": { - "version": "3.10.0", + "source-map": { + "version": "0.6.1", "bundled": true, "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } + "optional": true } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, "uuid": { "version": "3.3.2", "bundled": true, "dev": true }, "validate-npm-package-license": { - "version": "3.0.3", + "version": "3.0.4", "bundled": true, "dev": true, "requires": { @@ -8368,12 +8164,6 @@ "bundled": true, "dev": true }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, "wordwrap": { "version": "0.0.3", "bundled": true, @@ -8427,7 +8217,7 @@ "dev": true }, "write-file-atomic": { - "version": "2.3.0", + "version": "2.4.2", "bundled": true, "dev": true, "requires": { @@ -8437,7 +8227,7 @@ } }, "y18n": { - "version": "3.2.1", + "version": "4.0.0", "bundled": true, "dev": true }, @@ -8447,87 +8237,31 @@ "dev": true }, "yargs": { - "version": "11.1.0", + "version": "12.0.5", "bundled": true, "dev": true, "requires": { "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "os-locale": "^3.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - } + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } }, "yargs-parser": { - "version": "9.0.2", + "version": "11.1.1", "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -8748,12 +8482,6 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, "p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", @@ -8908,23 +8636,6 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -9189,12 +8900,12 @@ "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" }, "ps-node": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/ps-node/-/ps-node-0.0.5.tgz", - "integrity": "sha1-hWe8VKX4MbRd2eAOWpwJVqr58ZY=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ps-node/-/ps-node-0.1.6.tgz", + "integrity": "sha1-mvZ6mdex0BMuUaUDCZ04qNKs4sM=", "dev": true, "requires": { - "table-parser": "*" + "table-parser": "^0.1.3" } }, "pseudomap": { @@ -10260,12 +9971,11 @@ } }, "table-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/table-parser/-/table-parser-1.0.1.tgz", - "integrity": "sha512-LtOZVj3mBWk9ChtZmYy1NCSgWshClqoCzgcj0r0VRY+xm9N4ii2NZyLHVbFhGrWsxVt5uPiVeaZDePoD3krrGA==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/table-parser/-/table-parser-0.1.3.tgz", + "integrity": "sha1-BEHPzhallIFoTCfRtaZ/8VpDx7A=", "dev": true, "requires": { - "@semantic-release/git": "^4.0.1", "connected-domain": "^1.0.0" } }, @@ -10513,30 +10223,23 @@ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, "unbzip2-stream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.1.tgz", - "integrity": "sha512-fIZnvdjblYs7Cru/xC6tCPVhz7JkYcVQQkePwMLyQELzYTds2Xn8QefPVnvdVhhZqubxNA1cASXEH5wcK0Bucw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", + "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", "dev": true, "requires": { - "buffer": "^3.0.1", - "through": "^2.3.6" + "buffer": "^5.2.1", + "through": "^2.3.8" }, "dependencies": { - "base64-js": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", - "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", - "dev": true - }, "buffer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", - "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "dev": true, "requires": { - "base64-js": "0.0.8", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } } } diff --git a/package.json b/package.json index a1872816c0..cf05c1282d 100644 --- a/package.json +++ b/package.json @@ -65,8 +65,8 @@ "jsdoc": "^3.5.5", "jsdoc-babel": "^0.5.0", "lint-staged": "^8.1.0", - "mongodb-runner": "4.3.2", - "nyc": "^13.1.0", + "mongodb-runner": "^4.7.1", + "nyc": "^13.3.0", "prettier": "1.16.1", "supports-color": "^6.0.0" }, diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 7636e7e23a..cb470bf504 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1964,26 +1964,28 @@ export class PostgresStorageAdapter implements StorageAdapter { where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; let tempQs = ''; - if (where.pattern.length > 0) { + if (where.pattern.length > 0 || !query) { tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = 'SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1'; + tempQs = + 'SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1'; } const qs = tempQs; - return this._client.one(qs, values, a => { - if (a.approximate_row_count != null) { - return +a.approximate_row_count - } else { - return +a.count - } - }).catch(error => { - if (error.code !== PostgresRelationDoesNotExistError) { - throw error; - } - return 0; - }); - + return this._client + .one(qs, values, a => { + if (a.approximate_row_count != null) { + return +a.approximate_row_count; + } else { + return +a.count; + } + }) + .catch(error => { + if (error.code !== PostgresRelationDoesNotExistError) { + throw error; + } + return 0; + }); } distinct( From 9136b20bb07671f3d857bd8920d70f6c2e4d6d23 Mon Sep 17 00:00:00 2001 From: behrang Date: Tue, 26 Mar 2019 21:41:55 -0700 Subject: [PATCH 18/24] updated package.json --- package-lock.json | 990 +++++++++++++++++++++++++++------------------- package.json | 16 +- 2 files changed, 582 insertions(+), 424 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a4a70829d..e1bfbeb71f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1064,68 +1064,6 @@ "to-fast-properties": "^2.0.0" } }, - "@iamstarkov/listr-update-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@iamstarkov/listr-update-renderer/-/listr-update-renderer-0.4.1.tgz", - "integrity": "sha512-IJyxQWsYDEkf8C8QthBn5N8tIUR9V9je6j3sMIpAkonaadjbvxmRC6RAhpa3RKxndhNnU2M6iNbtJwd7usQYIA==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "@parse/fs-files-adapter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@parse/fs-files-adapter/-/fs-files-adapter-1.0.1.tgz", @@ -1257,6 +1195,57 @@ "any-observable": "^0.3.0" } }, + "@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", + "dev": true + }, + "@semantic-release/git": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-4.0.3.tgz", + "integrity": "sha512-XvW9mq4eegS5kQ4nNbgQjMC6AOO+9Oy6H+8iRTPCRkpJElhtecPUu/gqriZXEF/qqGXF891JKA3onCUjEwwWuQ==", + "dev": true, + "requires": { + "@semantic-release/error": "^2.1.0", + "aggregate-error": "^1.0.0", + "debug": "^3.1.0", + "dir-glob": "^2.0.0", + "execa": "^0.10.0", + "fs-extra": "^6.0.0", + "lodash": "^4.17.4", + "micromatch": "^3.1.4", + "p-reduce": "^1.0.0" + }, + "dependencies": { + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fs-extra": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", + "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, "accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", @@ -1286,6 +1275,16 @@ "es6-promisify": "^5.0.0" } }, + "aggregate-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", + "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", + "dev": true, + "requires": { + "clean-stack": "^1.0.0", + "indent-string": "^3.0.0" + } + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -2534,6 +2533,12 @@ } } }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, "cli-color": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.2.tgz", @@ -2862,13 +2867,14 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", - "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", + "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", "dev": true, "requires": { + "import-fresh": "^2.0.0", "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", + "js-yaml": "^3.13.0", "parse-json": "^4.0.0" } }, @@ -2988,6 +2994,14 @@ "make-dir": "^1.0.0", "pify": "^2.3.0", "strip-dirs": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "decompress-response": { @@ -3069,6 +3083,12 @@ "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true } } }, @@ -3160,14 +3180,6 @@ "p-map": "^1.1.1", "pify": "^3.0.0", "rimraf": "^2.2.8" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "delayed-stream": { @@ -3190,6 +3202,15 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, "docopt": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", @@ -3303,14 +3324,6 @@ "make-dir": "^1.0.0", "p-event": "^1.0.0", "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "duplexer3": { @@ -4177,6 +4190,12 @@ "integrity": "sha512-j+L+xNiUYnZZ27MjVI0y2c9474ZHOvdSQq0Tjwh56mEA7tfxYqp5Dcb6aZSwvs3tGMTjCrZow9aUlZf3OoRyDQ==", "dev": true }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, "follow-redirects": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", @@ -5039,7 +5058,7 @@ }, "globby": { "version": "6.1.0", - "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { @@ -5048,6 +5067,14 @@ "object-assign": "^4.0.1", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "globule": { @@ -5644,26 +5671,82 @@ } }, "is-mongodb-running": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-mongodb-running/-/is-mongodb-running-1.0.1.tgz", - "integrity": "sha512-gyUmdhGKLHuDv+JGma70b1P1WLBMy8bvt9QLSEojSSi3/5FbUKuOKCNzHmto9ftMjyLtzlUtfCoSGdkPvx6H5w==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-mongodb-running/-/is-mongodb-running-0.2.0.tgz", + "integrity": "sha512-FCIXo+fxq9n1YVtwNqAHXbnhzp3cvADKooqAuCjvFlBZ1Jnwur9C0kHwtxPgJTOsci/kin0Cii08ZHQomBkdBA==", "dev": true, "requires": { - "chalk": "^2.4.1", - "debug": ">= 2.6.9", - "figures": "^2.0.0", - "lodash": "^4.17.10", + "chalk": "^1.1.1", + "debug": "^2.2.0", + "figures": "^1.4.0", + "lodash": "^3.10.1", "lsof": "^0.1.0", "minimist": "^1.2.0", "node-netstat": "^1.4.2", - "ps-node": "^0.1.6" + "ps-node": "0.0.5" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -5695,7 +5778,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, @@ -5879,24 +5962,6 @@ } } }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", - "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.6.0" - } - }, "jmespath": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", @@ -6118,12 +6183,6 @@ "invert-kv": "^1.0.0" } }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -6140,15 +6199,14 @@ "dev": true }, "lint-staged": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.0.tgz", - "integrity": "sha512-yfSkyJy7EuVsaoxtUSEhrD81spdJOe/gMTGea3XaV7HyoRhTb9Gdlp6/JppRZERvKSEYXP9bjcmq6CA5oL2lYQ==", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.5.tgz", + "integrity": "sha512-e5ZavfnSLcBJE1BTzRTqw6ly8OkqVyO3GL2M6teSmTBYQ/2BuueD5GIt2RPsP31u/vjKdexUyDCxSyK75q4BDA==", "dev": true, "requires": { - "@iamstarkov/listr-update-renderer": "0.4.1", "chalk": "^2.3.1", "commander": "^2.14.1", - "cosmiconfig": "5.0.6", + "cosmiconfig": "^5.0.2", "debug": "^3.1.0", "dedent": "^0.7.0", "del": "^3.0.0", @@ -6157,9 +6215,9 @@ "g-status": "^2.0.2", "is-glob": "^4.0.0", "is-windows": "^1.0.2", - "jest-validate": "^23.5.0", "listr": "^0.14.2", - "lodash": "^4.17.5", + "listr-update-renderer": "^0.5.0", + "lodash": "^4.17.11", "log-symbols": "^2.2.0", "micromatch": "^3.1.8", "npm-which": "^3.0.1", @@ -6169,39 +6227,8 @@ "please-upgrade-node": "^3.0.2", "staged-git-files": "1.1.2", "string-argv": "^0.0.2", - "stringify-object": "^3.2.2" - }, - "dependencies": { - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "stringify-object": "^3.2.2", + "yup": "^0.26.10" } }, "listr": { @@ -6226,15 +6253,6 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz", "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==", "dev": true - }, - "rxjs": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } } } }, @@ -6580,14 +6598,6 @@ "dev": true, "requires": { "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "manakin": { @@ -6882,23 +6892,23 @@ } }, "mongodb-runner": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.7.1.tgz", - "integrity": "sha512-lPirvESMpk/MZYdmo8hmSM8+8ApnIUasImAB3zRCfMKki7uCqOLzvsV/+R6rFzBjeyTFpYZZCKTSormh9qCmNQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.3.2.tgz", + "integrity": "sha512-GvSicmQvzXI5aUEHt56WY8Bnb61eHwMnLe+wDa3fE/yDbVw8EVQvvpwL1MxBC758VsVdynMqQsaQZ9sdW/YbYA==", "dev": true, "requires": { "async": "^2.0.0", "clui": "^0.3.1", - "debug": ">= 2.6.9 < 3.0.0 || >= 3.1.0", + "debug": "^3.0.1", "fs-extra": "^4.0.2", - "is-mongodb-running": "^1.0.1", + "is-mongodb-running": "^0.2.0", "lodash.defaults": "^4.0.1", "minimist": "^1.2.0", "mkdirp": "^0.5.1", - "mongodb": "^3.1.9", + "mongodb": "^3.1.4", "mongodb-dbpath": "^0.0.1", - "mongodb-tools": "github:mongodb-js/mongodb-tools#b461a4c41cdf92e0c80402b2893b3b11c0ed616c", - "mongodb-version-manager": "^1.3.0", + "mongodb-tools": "github:mongodb-js/mongodb-tools#194bdd6ac7922f8dcf3853de1aece0b0fdda93cf", + "mongodb-version-manager": "^1.1.3", "untildify": "^3.0.0", "which": "^1.2.4" }, @@ -6912,17 +6922,23 @@ } }, "mongodb-tools": { - "version": "github:mongodb-js/mongodb-tools#b461a4c41cdf92e0c80402b2893b3b11c0ed616c", - "from": "github:mongodb-js/mongodb-tools#b461a4c41cdf92e0c80402b2893b3b11c0ed616c", + "version": "github:mongodb-js/mongodb-tools#194bdd6ac7922f8dcf3853de1aece0b0fdda93cf", + "from": "github:mongodb-js/mongodb-tools#194bdd6ac7922f8dcf3853de1aece0b0fdda93cf", "dev": true, "requires": { "debug": "^2.2.0", "lodash": "^3.10.1", "mkdirp": "0.5.0", - "mongodb-core": "*", + "mongodb-core": "^2.1.8", "rimraf": "2.2.6" }, "dependencies": { + "bson": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz", + "integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -6947,8 +6963,18 @@ "minimist": "0.0.8" } }, - "ms": { - "version": "2.0.0", + "mongodb-core": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.20.tgz", + "integrity": "sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ==", + "dev": true, + "requires": { + "bson": "~1.0.4", + "require_optional": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true @@ -7168,14 +7194,6 @@ "requires": { "config-chain": "^1.1.11", "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "npm-path": { @@ -7233,37 +7251,54 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz", - "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.1.0.tgz", + "integrity": "sha512-3GyY6TpQ58z9Frpv4GMExE1SV2tAgYqC7HSy2omEhNiCT3mhT9NyiOvIE8zkbuJVFzmvvNTnE4h/7/wQae7xLg==", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", - "caching-transform": "^3.0.1", + "caching-transform": "^2.0.0", "convert-source-map": "^1.6.0", + "debug-log": "^1.0.1", "find-cache-dir": "^2.0.0", "find-up": "^3.0.0", "foreground-child": "^1.5.6", "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.3", - "istanbul-lib-hook": "^2.0.3", - "istanbul-lib-instrument": "^3.1.0", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.2", - "istanbul-reports": "^2.1.1", + "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-hook": "^2.0.1", + "istanbul-lib-instrument": "^3.0.0", + "istanbul-lib-report": "^2.0.2", + "istanbul-lib-source-maps": "^2.0.1", + "istanbul-reports": "^2.0.1", "make-dir": "^1.3.0", "merge-source-map": "^1.1.0", "resolve-from": "^4.0.0", - "rimraf": "^2.6.3", + "rimraf": "^2.6.2", "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^5.1.0", + "test-exclude": "^5.0.0", "uuid": "^3.3.2", - "yargs": "^12.0.5", - "yargs-parser": "^11.1.1" + "yargs": "11.1.0", + "yargs-parser": "^9.0.2" }, "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, "ansi-regex": { "version": "3.0.0", "bundled": true, @@ -7288,12 +7323,9 @@ "dev": true }, "async": { - "version": "2.6.2", + "version": "1.5.2", "bundled": true, - "dev": true, - "requires": { - "lodash": "^4.17.11" - } + "dev": true }, "balanced-match": { "version": "1.0.0", @@ -7309,30 +7341,55 @@ "concat-map": "0.0.1" } }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, "caching-transform": { - "version": "3.0.1", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "hasha": "^3.0.0", - "make-dir": "^1.3.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.3.0" + "make-dir": "^1.0.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "write-file-atomic": "^2.0.0" } }, "camelcase": { - "version": "5.0.0", + "version": "1.2.1", "bundled": true, - "dev": true + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } }, "cliui": { - "version": "4.1.0", + "version": "2.1.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } } }, "code-point-at": { @@ -7340,12 +7397,6 @@ "bundled": true, "dev": true }, - "commander": { - "version": "2.17.1", - "bundled": true, - "dev": true, - "optional": true - }, "commondir": { "version": "1.0.1", "bundled": true, @@ -7374,13 +7425,18 @@ } }, "debug": { - "version": "4.1.1", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.0.0" } }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, "decamelize": { "version": "1.2.0", "bundled": true, @@ -7394,14 +7450,6 @@ "strip-bom": "^3.0.0" } }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "error-ex": { "version": "1.3.2", "bundled": true, @@ -7416,12 +7464,12 @@ "dev": true }, "execa": { - "version": "1.0.0", + "version": "0.7.0", "bundled": true, "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -7430,13 +7478,11 @@ }, "dependencies": { "cross-spawn": { - "version": "6.0.5", + "version": "5.1.0", "bundled": true, "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", + "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -7481,12 +7527,9 @@ "dev": true }, "get-stream": { - "version": "4.1.0", + "version": "3.0.0", "bundled": true, - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "dev": true }, "glob": { "version": "7.1.3", @@ -7502,25 +7545,28 @@ } }, "graceful-fs": { - "version": "4.1.15", + "version": "4.1.11", "bundled": true, "dev": true }, "handlebars": { - "version": "4.1.0", + "version": "4.0.11", "bundled": true, "dev": true, "requires": { - "async": "^2.5.0", + "async": "^1.4.0", "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "source-map": { - "version": "0.6.1", + "version": "0.4.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } } } }, @@ -7529,14 +7575,6 @@ "bundled": true, "dev": true }, - "hasha": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-stream": "^1.0.1" - } - }, "hosted-git-info": { "version": "2.7.1", "bundled": true, @@ -7562,7 +7600,7 @@ "dev": true }, "invert-kv": { - "version": "2.0.0", + "version": "1.0.0", "bundled": true, "dev": true }, @@ -7571,6 +7609,20 @@ "bundled": true, "dev": true }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "optional": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "bundled": true, @@ -7587,12 +7639,12 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.3", + "version": "2.0.1", "bundled": true, "dev": true }, "istanbul-lib-hook": { - "version": "2.0.3", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { @@ -7600,32 +7652,22 @@ } }, "istanbul-lib-report": { - "version": "2.0.4", + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-coverage": "^2.0.1", "make-dir": "^1.3.0", - "supports-color": "^6.0.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "supports-color": "^5.4.0" } }, "istanbul-lib-source-maps": { - "version": "3.0.2", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.3", + "debug": "^3.1.0", + "istanbul-lib-coverage": "^2.0.1", "make-dir": "^1.3.0", "rimraf": "^2.6.2", "source-map": "^0.6.1" @@ -7639,11 +7681,11 @@ } }, "istanbul-reports": { - "version": "2.1.1", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "handlebars": "^4.1.0" + "handlebars": "^4.0.11" } }, "json-parse-better-errors": { @@ -7651,12 +7693,27 @@ "bundled": true, "dev": true }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, "lcid": { - "version": "2.0.0", + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "invert-kv": "^2.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -7679,18 +7736,19 @@ "path-exists": "^3.0.0" } }, - "lodash": { - "version": "4.17.11", - "bundled": true, - "dev": true - }, "lodash.flattendeep": { "version": "4.4.0", "bundled": true, "dev": true }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, "lru-cache": { - "version": "4.1.5", + "version": "4.1.3", "bundled": true, "dev": true, "requires": { @@ -7706,22 +7764,25 @@ "pify": "^3.0.0" } }, - "map-age-cleaner": { - "version": "0.1.3", + "md5-hex": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "p-defer": "^1.0.0" + "md5-o-matic": "^0.1.1" } }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, "mem": { - "version": "4.1.0", + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" + "mimic-fn": "^1.0.0" } }, "merge-source-map": { @@ -7773,22 +7834,17 @@ } }, "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "nice-try": { - "version": "1.0.5", + "version": "2.0.0", "bundled": true, "dev": true }, "normalize-package-data": { - "version": "2.5.0", + "version": "2.4.0", "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", + "is-builtin-module": "^1.0.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -7829,32 +7885,22 @@ "dev": true }, "os-locale": { - "version": "3.1.0", + "version": "2.1.0", "bundled": true, "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, - "p-defer": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "p-finally": { "version": "1.0.0", "bundled": true, "dev": true }, - "p-is-promise": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "p-limit": { - "version": "2.1.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { @@ -7875,13 +7921,13 @@ "dev": true }, "package-hash": { - "version": "3.0.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", + "graceful-fs": "^4.1.11", "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", "release-zalgo": "^1.0.0" } }, @@ -7909,11 +7955,6 @@ "bundled": true, "dev": true }, - "path-parse": { - "version": "1.0.6", - "bundled": true, - "dev": true - }, "path-type": { "version": "3.0.0", "bundled": true, @@ -7940,15 +7981,6 @@ "bundled": true, "dev": true }, - "pump": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "read-pkg": { "version": "3.0.0", "bundled": true, @@ -7976,6 +8008,12 @@ "es6-error": "^4.0.1" } }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true, + "optional": true + }, "require-directory": { "version": "2.1.1", "bundled": true, @@ -7986,25 +8024,26 @@ "bundled": true, "dev": true }, - "resolve": { - "version": "1.10.0", - "bundled": true, - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, "resolve-from": { "version": "4.0.0", "bundled": true, "dev": true }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, "rimraf": { - "version": "2.6.3", + "version": "2.6.2", "bundled": true, "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -8013,7 +8052,7 @@ "dev": true }, "semver": { - "version": "5.6.0", + "version": "5.5.0", "bundled": true, "dev": true }, @@ -8040,6 +8079,12 @@ "bundled": true, "dev": true }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true, + "optional": true + }, "spawn-wrap": { "version": "1.4.2", "bundled": true, @@ -8054,7 +8099,7 @@ } }, "spdx-correct": { - "version": "3.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { @@ -8063,7 +8108,7 @@ } }, "spdx-exceptions": { - "version": "2.2.0", + "version": "2.1.0", "bundled": true, "dev": true }, @@ -8077,7 +8122,7 @@ } }, "spdx-license-ids": { - "version": "3.0.3", + "version": "3.0.0", "bundled": true, "dev": true }, @@ -8108,8 +8153,16 @@ "bundled": true, "dev": true }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "test-exclude": { - "version": "5.1.0", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { @@ -8120,30 +8173,43 @@ } }, "uglify-js": { - "version": "3.4.9", + "version": "2.8.29", "bundled": true, "dev": true, "optional": true, "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", + "yargs": { + "version": "3.10.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } } } }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, "uuid": { "version": "3.3.2", "bundled": true, "dev": true }, "validate-npm-package-license": { - "version": "3.0.4", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { @@ -8164,6 +8230,12 @@ "bundled": true, "dev": true }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, "wordwrap": { "version": "0.0.3", "bundled": true, @@ -8217,7 +8289,7 @@ "dev": true }, "write-file-atomic": { - "version": "2.4.2", + "version": "2.3.0", "bundled": true, "dev": true, "requires": { @@ -8227,7 +8299,7 @@ } }, "y18n": { - "version": "4.0.0", + "version": "3.2.1", "bundled": true, "dev": true }, @@ -8237,31 +8309,87 @@ "dev": true }, "yargs": { - "version": "12.0.5", + "version": "11.1.0", "bundled": true, "dev": true, "requires": { "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "os-locale": "^2.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + } } }, "yargs-parser": { - "version": "11.1.1", + "version": "9.0.2", "bundled": true, "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + } } } } @@ -8482,6 +8610,12 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, "p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", @@ -8636,6 +8770,15 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -8720,9 +8863,9 @@ } }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pinkie": { @@ -8805,29 +8948,11 @@ "dev": true }, "prettier": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.1.tgz", - "integrity": "sha512-XXUITwIkGb3CPJ2hforHah/zTINRyie5006Jd2HKy2qz7snEJXl0KLfsJZW/wst9g6R2rFvqba3VpNYdu1hDcA==", + "version": "1.16.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", + "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", "dev": true }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -8853,6 +8978,12 @@ "with-callback": "^1.0.2" } }, + "property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==", + "dev": true + }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -8900,12 +9031,12 @@ "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" }, "ps-node": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ps-node/-/ps-node-0.1.6.tgz", - "integrity": "sha1-mvZ6mdex0BMuUaUDCZ04qNKs4sM=", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/ps-node/-/ps-node-0.0.5.tgz", + "integrity": "sha1-hWe8VKX4MbRd2eAOWpwJVqr58ZY=", "dev": true, "requires": { - "table-parser": "^0.1.3" + "table-parser": "*" } }, "pseudomap": { @@ -9453,18 +9584,18 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-git": { - "version": "1.107.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.107.0.tgz", - "integrity": "sha512-t4OK1JRlp4ayKRfcW6owrWcRVLyHRUlhGd0uN6ZZTqfDq8a5XpcUdOKiGRNobHEuMtNqzp0vcJNvhYWwh5PsQA==", + "version": "1.110.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.110.0.tgz", + "integrity": "sha512-UYY0rQkknk0P5eb+KW+03F4TevZ9ou0H+LoGaj7iiVgpnZH4wdj/HTViy/1tNNkmIPcmtxuBqXWiYt2YwlRKOQ==", "dev": true, "requires": { "debug": "^4.0.1" }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -9887,9 +10018,9 @@ } }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -9901,6 +10032,12 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, + "synchronous-promise": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.6.tgz", + "integrity": "sha512-TyOuWLwkmtPL49LHCX1caIwHjRzcVd62+GF6h8W/jHOeZUFHpnd2XJDVuUlaTaLPH1nuu2M69mfHr5XbQJnf/g==", + "dev": true + }, "table": { "version": "5.2.2", "resolved": "http://registry.npmjs.org/table/-/table-5.2.2.tgz", @@ -9971,11 +10108,12 @@ } }, "table-parser": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/table-parser/-/table-parser-0.1.3.tgz", - "integrity": "sha1-BEHPzhallIFoTCfRtaZ/8VpDx7A=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/table-parser/-/table-parser-1.0.1.tgz", + "integrity": "sha512-LtOZVj3mBWk9ChtZmYy1NCSgWshClqoCzgcj0r0VRY+xm9N4ii2NZyLHVbFhGrWsxVt5uPiVeaZDePoD3krrGA==", "dev": true, "requires": { + "@semantic-release/git": "^4.0.1", "connected-domain": "^1.0.0" } }, @@ -10140,6 +10278,12 @@ "repeat-string": "^1.6.1" } }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=", + "dev": true + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -10793,6 +10937,20 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "yup": { + "version": "0.26.10", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.26.10.tgz", + "integrity": "sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw==", + "dev": true, + "requires": { + "@babel/runtime": "7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.10", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.5", + "toposort": "^2.0.2" + } } } } diff --git a/package.json b/package.json index cf05c1282d..6b6b472a0a 100644 --- a/package.json +++ b/package.json @@ -61,14 +61,14 @@ "gaze": "1.1.3", "husky": "^1.0.0-rc.13", "jasmine": "3.1.0", - "jasmine-spec-reporter": "^4.1.0", - "jsdoc": "^3.5.5", - "jsdoc-babel": "^0.5.0", - "lint-staged": "^8.1.0", - "mongodb-runner": "^4.7.1", - "nyc": "^13.3.0", - "prettier": "1.16.1", - "supports-color": "^6.0.0" + "jasmine-spec-reporter": "4.2.1", + "jsdoc": "3.5.5", + "jsdoc-babel": "0.5.0", + "lint-staged": "8.1.5", + "mongodb-runner": "4.3.2", + "nyc": "13.1.0", + "prettier": "1.16.4", + "supports-color": "6.0.0" }, "scripts": { "docs": "jsdoc -c ./jsdoc-conf.json", From 25597b048c976b4de4cdb6d5c8558ed078f029b9 Mon Sep 17 00:00:00 2001 From: behrang Date: Tue, 2 Apr 2019 16:17:14 -0700 Subject: [PATCH 19/24] removed test exclude for pg --- spec/InstallationsRouter.spec.js | 99 ++++++++++++++++---------------- 1 file changed, 51 insertions(+), 48 deletions(-) diff --git a/spec/InstallationsRouter.spec.js b/spec/InstallationsRouter.spec.js index 1196230e8d..7df81376b3 100644 --- a/spec/InstallationsRouter.spec.js +++ b/spec/InstallationsRouter.spec.js @@ -160,7 +160,7 @@ describe('InstallationsRouter', () => { }); }); - it_exclude_dbs(['postgres'])('query installations with count = 1', done => { + it('query installations with count = 1', done => { const config = Config.get('test'); const androidDeviceRequest = { installationId: '12345678-abcd-abcd-abcd-123456789abc', @@ -209,55 +209,58 @@ describe('InstallationsRouter', () => { }); }); - it_exclude_dbs(['postgres'])('query installations with limit = 0 and count = 1', done => { - const config = Config.get('test'); - const androidDeviceRequest = { - installationId: '12345678-abcd-abcd-abcd-123456789abc', - deviceType: 'android', - }; - const iosDeviceRequest = { - installationId: '12345678-abcd-abcd-abcd-123456789abd', - deviceType: 'ios', - }; - const request = { - config: config, - auth: auth.master(config), - body: {}, - query: { - limit: 0, - count: 1, - }, - info: {}, - }; + it_exclude_dbs(['postgres'])( + 'query installations with limit = 0 and count = 1', + done => { + const config = Config.get('test'); + const androidDeviceRequest = { + installationId: '12345678-abcd-abcd-abcd-123456789abc', + deviceType: 'android', + }; + const iosDeviceRequest = { + installationId: '12345678-abcd-abcd-abcd-123456789abd', + deviceType: 'ios', + }; + const request = { + config: config, + auth: auth.master(config), + body: {}, + query: { + limit: 0, + count: 1, + }, + info: {}, + }; - const router = new InstallationsRouter(); - rest - .create( - config, - auth.nobody(config), - '_Installation', - androidDeviceRequest - ) - .then(() => { - return rest.create( + const router = new InstallationsRouter(); + rest + .create( config, auth.nobody(config), '_Installation', - iosDeviceRequest - ); - }) - .then(() => { - return router.handleFind(request); - }) - .then(res => { - const response = res.response; - expect(response.results.length).toEqual(0); - expect(response.count).toEqual(2); - done(); - }) - .catch(err => { - fail(JSON.stringify(err)); - done(); - }); - }); + androidDeviceRequest + ) + .then(() => { + return rest.create( + config, + auth.nobody(config), + '_Installation', + iosDeviceRequest + ); + }) + .then(() => { + return router.handleFind(request); + }) + .then(res => { + const response = res.response; + expect(response.results.length).toEqual(0); + expect(response.count).toEqual(2); + done(); + }) + .catch(err => { + fail(JSON.stringify(err)); + done(); + }); + } + ); }); From 9bc37cfd9f038123621f78f1a208cdf5274c2c6a Mon Sep 17 00:00:00 2001 From: behrang Date: Tue, 2 Apr 2019 16:23:20 -0700 Subject: [PATCH 20/24] removed object types from method --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index dd765e7cb8..38684f8e6b 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1962,7 +1962,7 @@ export class PostgresStorageAdapter implements StorageAdapter { } // Executes a count. - count(className: string, schema: SchemaType, query: QueryType) { + count(className, schema, query) { debug('count', className, query); const values = [className]; const where = buildWhereClause({ schema, query, index: 2 }); From 00c23c42dbe85801e62fd5283b3f005d36f0eaf9 Mon Sep 17 00:00:00 2001 From: behrang Date: Tue, 2 Apr 2019 16:38:36 -0700 Subject: [PATCH 21/24] test disabled for postgres --- spec/InstallationsRouter.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/InstallationsRouter.spec.js b/spec/InstallationsRouter.spec.js index 7df81376b3..3a53078e9e 100644 --- a/spec/InstallationsRouter.spec.js +++ b/spec/InstallationsRouter.spec.js @@ -160,7 +160,7 @@ describe('InstallationsRouter', () => { }); }); - it('query installations with count = 1', done => { + it_exclude_dbs(['postgres'])('query installations with count = 1', done => { const config = Config.get('test'); const androidDeviceRequest = { installationId: '12345678-abcd-abcd-abcd-123456789abc', From 7d63f805be90373b794175a75c47e286d743b0c6 Mon Sep 17 00:00:00 2001 From: behrang Date: Tue, 2 Apr 2019 16:48:50 -0700 Subject: [PATCH 22/24] returned type --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 38684f8e6b..dd765e7cb8 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1962,7 +1962,7 @@ export class PostgresStorageAdapter implements StorageAdapter { } // Executes a count. - count(className, schema, query) { + count(className: string, schema: SchemaType, query: QueryType) { debug('count', className, query); const values = [className]; const where = buildWhereClause({ schema, query, index: 2 }); From f397c8ae42dc8b92e840fa592c1449611f8ba89f Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 2 Apr 2019 21:17:36 -0500 Subject: [PATCH 23/24] add estimate count test --- spec/InstallationsRouter.spec.js | 47 +++++++++++++++++++ .../Storage/Mongo/MongoStorageAdapter.js | 11 ++--- .../Postgres/PostgresStorageAdapter.js | 24 +++++++--- src/Adapters/Storage/StorageAdapter.js | 3 +- src/Controllers/DatabaseController.js | 4 +- 5 files changed, 74 insertions(+), 15 deletions(-) diff --git a/spec/InstallationsRouter.spec.js b/spec/InstallationsRouter.spec.js index 3a53078e9e..c7b84effc1 100644 --- a/spec/InstallationsRouter.spec.js +++ b/spec/InstallationsRouter.spec.js @@ -209,6 +209,53 @@ describe('InstallationsRouter', () => { }); }); + it_exclude_dbs(['mongo'])('query installations with count = 1', async () => { + const config = Config.get('test'); + const androidDeviceRequest = { + installationId: '12345678-abcd-abcd-abcd-123456789abc', + deviceType: 'android', + }; + const iosDeviceRequest = { + installationId: '12345678-abcd-abcd-abcd-123456789abd', + deviceType: 'ios', + }; + const request = { + config: config, + auth: auth.master(config), + body: {}, + query: { + count: 1, + }, + info: {}, + }; + + const router = new InstallationsRouter(); + await rest.create( + config, + auth.nobody(config), + '_Installation', + androidDeviceRequest + ); + await rest.create( + config, + auth.nobody(config), + '_Installation', + iosDeviceRequest + ); + let res = await router.handleFind(request); + let response = res.response; + expect(response.results.length).toEqual(2); + expect(response.count).toEqual(0); // estimate count is zero + + const pgAdapter = config.database.adapter; + await pgAdapter.updateEstimatedCount('_Installation'); + + res = await router.handleFind(request); + response = res.response; + expect(response.results.length).toEqual(2); + expect(response.count).toEqual(2); + }); + it_exclude_dbs(['postgres'])( 'query installations with limit = 0 and count = 1', done => { diff --git a/src/Adapters/Storage/Mongo/MongoStorageAdapter.js b/src/Adapters/Storage/Mongo/MongoStorageAdapter.js index b0e3351ee9..0e4c3fe810 100644 --- a/src/Adapters/Storage/Mongo/MongoStorageAdapter.js +++ b/src/Adapters/Storage/Mongo/MongoStorageAdapter.js @@ -152,10 +152,7 @@ export class MongoStorageAdapter implements StorageAdapter { // encoded const encodedUri = formatUrl(parseUrl(this._uri)); - this.connectionPromise = MongoClient.connect( - encodedUri, - this._mongoOptions - ) + this.connectionPromise = MongoClient.connect(encodedUri, this._mongoOptions) .then(client => { // Starting mongoDB 3.0, the MongoClient.connect don't return a DB anymore but a client // Fortunately, we can get back the options and use them to select the proper DB. @@ -385,8 +382,8 @@ export class MongoStorageAdapter implements StorageAdapter { deleteAllClasses(fast: boolean) { return storageAdapterAllCollections(this).then(collections => Promise.all( - collections.map( - collection => (fast ? collection.deleteMany({}) : collection.drop()) + collections.map(collection => + fast ? collection.deleteMany({}) : collection.drop() ) ) ); @@ -952,6 +949,8 @@ export class MongoStorageAdapter implements StorageAdapter { readPreference = ReadPreference.NEAREST; break; case undefined: + case null: + case '': break; default: throw new Parse.Error( diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index dd765e7cb8..70df7d8119 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -1962,23 +1962,28 @@ export class PostgresStorageAdapter implements StorageAdapter { } // Executes a count. - count(className: string, schema: SchemaType, query: QueryType) { - debug('count', className, query); + count( + className: string, + schema: SchemaType, + query: QueryType, + readPreference?: string, + estimate?: boolean = true + ) { + debug('count', className, query, readPreference, estimate); const values = [className]; const where = buildWhereClause({ schema, query, index: 2 }); values.push(...where.values); const wherePattern = where.pattern.length > 0 ? `WHERE ${where.pattern}` : ''; - let tempQs = ''; + let qs = ''; - if (where.pattern.length > 0 || !query) { - tempQs = `SELECT count(*) FROM $1:name ${wherePattern}`; + if (where.pattern.length > 0 || !estimate) { + qs = `SELECT count(*) FROM $1:name ${wherePattern}`; } else { - tempQs = + qs = 'SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = $1'; } - const qs = tempQs; return this._client .one(qs, values, a => { @@ -2342,6 +2347,11 @@ export class PostgresStorageAdapter implements StorageAdapter { updateSchemaWithIndexes(): Promise { return Promise.resolve(); } + + // Used for testing purposes + updateEstimatedCount(className: string) { + return this._client.none('ANALYZE $1:name', [className]); + } } function convertPolygonToSQL(polygon) { diff --git a/src/Adapters/Storage/StorageAdapter.js b/src/Adapters/Storage/StorageAdapter.js index d901452dcd..31afe569c9 100644 --- a/src/Adapters/Storage/StorageAdapter.js +++ b/src/Adapters/Storage/StorageAdapter.js @@ -86,7 +86,8 @@ export interface StorageAdapter { className: string, schema: SchemaType, query: QueryType, - readPreference: ?string + readPreference?: string, + estimate?: boolean ): Promise; distinct( className: string, diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index 9308cb42b9..cbbce0a064 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -1324,7 +1324,9 @@ class DatabaseController { }) .then((schema: any) => { return this.collectionExists(className) - .then(() => this.adapter.count(className, { fields: {} })) + .then(() => + this.adapter.count(className, { fields: {} }, null, '', false) + ) .then(count => { if (count > 0) { throw new Parse.Error( From 895158019fb99dfb730d6e312acf8c553f9d1307 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 2 Apr 2019 21:49:43 -0500 Subject: [PATCH 24/24] fix mongo test --- spec/InstallationsRouter.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/InstallationsRouter.spec.js b/spec/InstallationsRouter.spec.js index c7b84effc1..91935e645a 100644 --- a/spec/InstallationsRouter.spec.js +++ b/spec/InstallationsRouter.spec.js @@ -209,7 +209,7 @@ describe('InstallationsRouter', () => { }); }); - it_exclude_dbs(['mongo'])('query installations with count = 1', async () => { + it_only_db('postgres')('query installations with count = 1', async () => { const config = Config.get('test'); const androidDeviceRequest = { installationId: '12345678-abcd-abcd-abcd-123456789abc',