From b386935830763d606dfe5b9c121643b822b3f925 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 15 Sep 2017 01:58:04 -0700 Subject: [PATCH 001/214] updates tests --- package.json | 8 +- test/actions.js | 14 +- test/basic.js | 303 +++++++++++++----- test/cname.js | 34 +- test/fixtures/cli-test-2.surge.sh/CNAME | 1 - test/fixtures/cli-test-2.surge.sh/index.html | 1 - test/fixtures/cli-test-3.surge.sh/CNAME | 1 - test/fixtures/cli-test-3.surge.sh/index.html | 1 - test/fixtures/cli-test-4.surge.sh/CNAME | 1 - test/fixtures/cli-test-4.surge.sh/index.html | 1 - test/fixtures/cli-test.surge.sh/index.html | 1 - test/fixtures/projects/cname-world/CNAME | 1 + test/fixtures/projects/cname-world/index.html | 1 + test/fixtures/projects/hello-world/index.html | 1 + test/plus.js | 2 +- test/publish.js | 2 +- test/teardown.js | 2 +- test/welcome.js | 10 +- 18 files changed, 270 insertions(+), 115 deletions(-) delete mode 100644 test/fixtures/cli-test-2.surge.sh/CNAME delete mode 100644 test/fixtures/cli-test-2.surge.sh/index.html delete mode 100644 test/fixtures/cli-test-3.surge.sh/CNAME delete mode 100644 test/fixtures/cli-test-3.surge.sh/index.html delete mode 100644 test/fixtures/cli-test-4.surge.sh/CNAME delete mode 100644 test/fixtures/cli-test-4.surge.sh/index.html delete mode 100644 test/fixtures/cli-test.surge.sh/index.html create mode 100644 test/fixtures/projects/cname-world/CNAME create mode 100644 test/fixtures/projects/cname-world/index.html create mode 100644 test/fixtures/projects/hello-world/index.html diff --git a/package.json b/package.json index 6400cdc..8f68ca0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.19.0", + "version": "0.20.0", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", @@ -30,9 +30,11 @@ }, "license": "ISC", "main": "./lib/surge.js", - "ignore": ["test"], + "ignore": [ + "test" + ], "scripts": { - "test": "mocha -t 5000", + "test": "mocha ./test/basic.js -t 5000", "test:local": "ENDPOINT='localhost:5001' ./node_modules/.bin/mocha" }, "repository": { diff --git a/test/actions.js b/test/actions.js index 840a569..e283495 100644 --- a/test/actions.js +++ b/test/actions.js @@ -31,7 +31,7 @@ describe('actions', function (done) { nixt({ colors: false }) .exec(commander + ' logout') .run(commander + ' up') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .on(/.*domain:.*/).respond('\n') .expect(function (result) { @@ -46,10 +46,10 @@ describe('actions', function (done) { nixt({ colors: false }) .exec(commander + ' logout') .run(commander + ' login') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { - should(result.stdout).match(/Logged in as kenneth/) + should(result.stdout).match(/Logged in as brock/) should(result.stdout).match(/surge.sh/) }) .exec(commander + ' logout') @@ -59,10 +59,10 @@ describe('actions', function (done) { it('minimist', function (done) { nixt({ colors: false }) .run(minimist + ' login') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { - should(result.stdout).match(/Logged in as kenneth/) + should(result.stdout).match(/Logged in as brock/) should(result.stdout).match(/surge.sh/) }) .exec(minimist + ' logout') @@ -72,10 +72,10 @@ describe('actions', function (done) { it('yargs', function (done) { nixt({ colors: false }) .run(yargs + ' login') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { - should(result.stdout).match(/Logged in as kenneth/) + should(result.stdout).match(/Logged in as brock/) should(result.stdout).match(/surge.sh/) }) .exec(yargs + ' logout') diff --git a/test/basic.js b/test/basic.js index 45243a6..8517037 100644 --- a/test/basic.js +++ b/test/basic.js @@ -4,47 +4,178 @@ var pkg = require('../package.json') var endpoint = typeof process.env.ENDPOINT !== 'undefined' ? ' -e ' + process.env.ENDPOINT + ' ' : ' ' var surge = 'node ' + pkg.bin + endpoint + var opts = { colors: false, newlines: false } -describe('surge', function () { +var testts = (new Date()).getTime() +var testid = "cli-test-" + testts +var user = "brock+test@chloi.io" +var pass = "12345" + +describe("surge " + testid, function () { - it('should be cool', function (done) { - done() + describe ("prepare", function(){ + it('logout', function (done) { + nixt({ colors: false }) + .run(surge + 'logout') // Logout again afterwards + .expect(function (result) { + should(result.stdout).match(/Token removed from /) + }).end(done) + }) }) - it('should provide an error message when the command isn’t valid', function (done) { - nixt({ colors: false }) - .run(surge + '--deploy') + describe("helpers", function(){ + + it('should catch invalid arguments', function (done) { + nixt({ colors: false }) + .run(surge + '--foo') .expect(function (result) { - // Something like… - // `--deploy` is not a surge command - should(result.stdout).match(/--deploy/) + should(result.stdout).match(/--foo/) should(result.stdout).match(/not/) - }) - .end(done) + }).end(done) + }) + + it('should return version when --version is used', function (done) { + nixt(opts) + .run(surge + '--version') + .expect(function(result) { + should(result.stdout).be.equal(pkg.version) + }).end(done) + }) + + it('should return version when -V is used', function (done) { + nixt(opts) + .run(surge + '-V') + .expect(function(result) { + should(result.stdout).be.equal(pkg.version) + }).end(done) + }) + }) - describe('version', function (done) { + describe("wizards", function(){ + var subdomain = testid + "-one" + var domain = subdomain + ".surge.sh" + var resultedDomain - it('`surge --version`', function (done) { + it('should create project', function (done) { + this.timeout(9999) nixt(opts) - .run(surge + '--version') - .expect(function(result) { - should(result.stdout).be.equal(pkg.version) - }) - .end(done) + .exec(surge + 'logout') // Logout before the test starts + .run(surge) + .on(/.*email:.*/).respond(user + '\n') + .on(/.*password:.*/).respond(pass + '\n') + .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*domain:.*/).respond(domain + "\n") + .expect(function (result) { + should(result.stdout).not.match(pass) + should(result.stdout).match(/1 file/) + should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) + resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + resultedDomain.should.equal(domain) + }).end(done) }) - it('`surge -V`', function (done) { + it('should have project in list', function (done) { + this.timeout(9999) nixt(opts) - .run(surge + '-V') - .expect(function(result) { - should(result.stdout).be.equal(pkg.version) - }) - .end(done) + .exec(surge + 'logout') // Logout before the test starts + .run(surge + 'list') + .on(/.*email:.*/).respond(user + '\n') + .on(/.*password:.*/).respond(pass + '\n') + .expect(function (result) { + should(result.stdout).match(new RegExp(resultedDomain)) + }).end(done) + }) + + it('should update project', function (done) { + this.timeout(9999) + nixt(opts) + .exec(surge + 'logout') // Logout before the test starts + .run(surge) + .on(/.*email:.*/).respond(user + '\n') + .on(/.*password:.*/).respond(pass + '\n') + .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*domain:.*/).respond(domain + "\n") + .expect(function (result) { + should(result.stdout).not.match(pass) + should(result.stdout).match(/1 file/) + should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) + resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + resultedDomain.should.equal(domain) + }).end(done) + }) + + it('should teardown project', function (done) { + this.timeout(9999) + nixt(opts) + .exec(surge + 'logout') // Logout before the test starts + .run(surge + 'teardown') + .on(/.*email:.*/).respond(user + '\n') + .on(/.*password:.*/).respond(pass + '\n') + .on(/.*domain:.*/).respond(domain + '\n') + .expect(function (result) { + should(result.stdout).match(/Success/) + should(result.stdout).match(/has been removed/) + should(result.stdout).match(new RegExp(subdomain)) + should(result.stdout).not.match(subdomain) + }).end(done) + }) + + it('should no longer have project in list', function (done) { + this.timeout(9999) + nixt(opts) + .exec(surge + 'logout') // Logout before the test starts + .run(surge + 'list') + .on(/.*email:.*/).respond(user + '\n') + .on(/.*password:.*/).respond(pass + '\n') + .expect(function (result) { + should(result.stdout).not.match(new RegExp(resultedDomain)) + }).end(done) + }) + + }) + + describe('auth', function (done) { + this.timeout(9999) + + it('should be able to login', function (done) { + nixt({ colors: false }) + .exec(surge + 'logout') // Logout before the test starts + .run(surge + 'login') + .on(/.*email:.*/).respond(user + '\n') + .on(/.*password:.*/).respond(pass + '\n') + .expect(function (result) { + should(result.stdout).match(/Logged in as brock/) + // should(result.code).equal(1) + }).end(done) + }) + + it('should return current user when checking whoami', function (done) { + nixt({ colors: false }) + .run(surge + 'whoami') + .expect(function (result) { + should(result.stdout).match(/Logged in as brock/) + }).end(done) + }) + + it('should logout', function (done) { + nixt({ colors: false }) + .run(surge + 'logout') // Logout again afterwards + .expect(function (result) { + should(result.stdout).match(/Token removed from /) + }).end(done) + }) + + it('should not return user when not authenticated', function (done) { + nixt({ colors: false }) + .run(surge + 'whoami') + .expect(function (result) { + should(result.stdout).match(/Not currently authenticated/) + }).end(done) }) }) @@ -85,79 +216,95 @@ describe('surge', function () { // }) // }) - describe('login', function (done) { - this.timeout(2500) - it('`surge login`', function (done) { - nixt({ colors: false }) - .exec(surge + 'logout') // Logout before the test starts - .run(surge + 'login') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') - .on(/.*password:.*/).respond('12345\n') - .expect(function (result) { - should(result.stdout).match(/Logged in as kenneth/) + describe("session", function(){ + var subdomain = testid + "-two" + var domain = subdomain + ".surge.sh" + var resultedDomain - // Possibly not returning the right codes right now? - // should(result.code).equal(1) - }) - .end(done) - }) - it('`surge whoami`', function (done) { + it('login', function (done) { nixt({ colors: false }) - .run(surge + 'whoami') - .expect(function (result) { - should(result.stdout).match(/Logged in as kenneth/) - }) - .end(done) + .exec(surge + 'logout') // Logout before the test starts + .run(surge + 'login') + .on(/.*email:.*/).respond(user + '\n') + .on(/.*password:.*/).respond(pass + '\n') + .expect(function (result) { + should(result.stdout).match(/Logged in as brock/) + // should(result.code).equal(1) + }).end(done) }) - it('`surge logout`', function (done) { - nixt({ colors: false }) - .run(surge + 'logout') // Logout again afterwards - .expect(function (result) { - should(result.stdout).match(/Token removed from /) - }) - .end(done) + it('should create second project using session', function (done) { + this.timeout(9999) + nixt(opts) + .run(surge) + .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*domain:.*/).respond(domain + "\n") + .expect(function (result) { + should(result.stdout).not.match(pass) + should(result.stdout).match(/1 file/) + should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) + resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + resultedDomain.should.equal(domain) + }).end(done) }) - }) - describe('list', function () { - this.timeout(5000) + it('should have project in list', function (done) { + this.timeout(9999) + nixt(opts) + .run(surge + 'list') + .expect(function (result) { + should(result.stdout).match(new RegExp(resultedDomain)) + }).end(done) + }) - it('`surge list`', function (done) { - nixt({ colors: false, newlines: true }) - .exec(surge + 'logout') // Logout before the test starts - .run(surge + 'list') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') - .on(/.*password:.*/).respond('12345\n') - .expect(function (result) { - should(result.stdout).match(/cli-test-2\.surge\.sh/) - should(result.stdout).match(/cli-test-3\.surge\.sh/) - should(result.stdout).not.match(/www\.cli-test-3\.surge\.sh/) - should(result.stdout).match(/www\.cli-test-4\.surge\.sh/) - should(result.stdout).not.match(/cli-test-0\.surge\.sh/) - }) - .end(done) + it('should update project', function (done) { + this.timeout(9999) + nixt(opts) + .run(surge) + .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*domain:.*/).respond(domain + "\n") + .expect(function (result) { + should(result.stdout).not.match(pass) + should(result.stdout).match(/1 file/) + should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) + resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + resultedDomain.should.equal(domain) + }).end(done) }) - }) - describe('token', function () { + it('should teardown project', function (done) { + this.timeout(9999) + nixt(opts) + .run(surge + 'teardown') + .on(/.*domain:.*/).respond(domain + '\n') + .expect(function (result) { + should(result.stdout).match(/Success/) + should(result.stdout).match(/has been removed/) + should(result.stdout).match(new RegExp(subdomain)) + should(result.stdout).not.match(subdomain) + }).end(done) + }) - before(function (done) { + it('should no longer have project in list', function (done) { + this.timeout(9999) nixt(opts) - .exec(surge + 'logout') // Logout before the test starts - .run(surge + 'login') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') - .on(/.*password:.*/).respond('12345\n') - .end(done) + .run(surge + 'list') + .expect(function (result) { + should(result.stdout).not.match(new RegExp(resultedDomain)) + }).end(done) }) + }) + + describe('token', function () { + it('`surge token`', function (done) { this.timeout(5000) nixt(opts) .run(surge + 'token') .expect(function (result) { - should(result.stdout).match(/.*email: kenneth\+test@chloi\.io/) + should(result.stdout).match(/.*email: brock\+test@chloi\.io/) should(result.stdout).match(/.*token:*./) }) .end(done) diff --git a/test/cname.js b/test/cname.js index 417ac0d..4ada64f 100644 --- a/test/cname.js +++ b/test/cname.js @@ -3,27 +3,37 @@ var should = require('should') var pkg = require('../package.json') var endpoint = typeof process.env.ENDPOINT !== 'undefined' ? ' -e ' + process.env.ENDPOINT + ' ' : ' ' -var surge = 'node ' + pkg.bin + endpoint + + +var user = "brock+test@chloi.io" +var pass = "12345" +var cmd = 'node ' + pkg.bin + endpoint + + var opts = { colors: false, newlines: false } -describe('CNAME', function (done) { +describe('crud', function (done) { + + describe("publish", function(done){ + + }) - it('`surge` with CNAME file', function (done) { + it('should access cname file when no arg present', function (done) { this.timeout(25000) nixt(opts) - .exec(surge + 'logout') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') - .on(/.*password:.*/).respond('12345\n') - .run(surge + './test/fixtures/cli-test-2.surge.sh') - .expect(function (result) { - should(result.stdout).match(/2 file/) - should(result.stdout).match(/Success! Project is published and running at cli-test-2/) - }) - .end(done) + .exec(surge + 'logout') + .on(/.*email:.*/).respond(user + "\n") + .on(/.*password:.*/).respond(pass "\n") + .run(surge + './test/fixtures/projects/hello-cname') + .expect(function (result) { + should(result.stdout).match(/2 file/) + should(result.stdout).match(/Success! Project is published and running at cli-test-2/) + }).end(done) }) + it('`surge` with CNAME file and protocol', function (done) { this.timeout(25000) nixt(opts) diff --git a/test/fixtures/cli-test-2.surge.sh/CNAME b/test/fixtures/cli-test-2.surge.sh/CNAME deleted file mode 100644 index f4166b7..0000000 --- a/test/fixtures/cli-test-2.surge.sh/CNAME +++ /dev/null @@ -1 +0,0 @@ -cli-test-2.surge.sh diff --git a/test/fixtures/cli-test-2.surge.sh/index.html b/test/fixtures/cli-test-2.surge.sh/index.html deleted file mode 100644 index 6166834..0000000 --- a/test/fixtures/cli-test-2.surge.sh/index.html +++ /dev/null @@ -1 +0,0 @@ -

CLI test 2

diff --git a/test/fixtures/cli-test-3.surge.sh/CNAME b/test/fixtures/cli-test-3.surge.sh/CNAME deleted file mode 100644 index 117c7ed..0000000 --- a/test/fixtures/cli-test-3.surge.sh/CNAME +++ /dev/null @@ -1 +0,0 @@ -https://cli-test-3.surge.sh diff --git a/test/fixtures/cli-test-3.surge.sh/index.html b/test/fixtures/cli-test-3.surge.sh/index.html deleted file mode 100644 index 4accd74..0000000 --- a/test/fixtures/cli-test-3.surge.sh/index.html +++ /dev/null @@ -1 +0,0 @@ -

CLI test 3

diff --git a/test/fixtures/cli-test-4.surge.sh/CNAME b/test/fixtures/cli-test-4.surge.sh/CNAME deleted file mode 100644 index 3aaf950..0000000 --- a/test/fixtures/cli-test-4.surge.sh/CNAME +++ /dev/null @@ -1 +0,0 @@ -www.cli-test-4.surge.sh diff --git a/test/fixtures/cli-test-4.surge.sh/index.html b/test/fixtures/cli-test-4.surge.sh/index.html deleted file mode 100644 index 92f27f3..0000000 --- a/test/fixtures/cli-test-4.surge.sh/index.html +++ /dev/null @@ -1 +0,0 @@ -

CLI test 4

diff --git a/test/fixtures/cli-test.surge.sh/index.html b/test/fixtures/cli-test.surge.sh/index.html deleted file mode 100644 index fb7ce48..0000000 --- a/test/fixtures/cli-test.surge.sh/index.html +++ /dev/null @@ -1 +0,0 @@ -

CLI test 1

diff --git a/test/fixtures/projects/cname-world/CNAME b/test/fixtures/projects/cname-world/CNAME new file mode 100644 index 0000000..d83e62a --- /dev/null +++ b/test/fixtures/projects/cname-world/CNAME @@ -0,0 +1 @@ +cname-world.surge.sh diff --git a/test/fixtures/projects/cname-world/index.html b/test/fixtures/projects/cname-world/index.html new file mode 100644 index 0000000..8a185ca --- /dev/null +++ b/test/fixtures/projects/cname-world/index.html @@ -0,0 +1 @@ +

cname world

diff --git a/test/fixtures/projects/hello-world/index.html b/test/fixtures/projects/hello-world/index.html new file mode 100644 index 0000000..b448801 --- /dev/null +++ b/test/fixtures/projects/hello-world/index.html @@ -0,0 +1 @@ +

hello world

diff --git a/test/plus.js b/test/plus.js index ededc06..80c17a4 100644 --- a/test/plus.js +++ b/test/plus.js @@ -21,7 +21,7 @@ var opts = { // nixt(opts) // .exec(surge + 'logout') // Logout before the test starts // .run(surge) -// .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') +// .on(/.*email:.*/).respond('brock+test@chloi.io\n') // .on(/.*password:.*/).respond('12345\n') // .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') // .on(/.*domain:.*/).respond('\n') diff --git a/test/publish.js b/test/publish.js index 02b313f..69e8b63 100644 --- a/test/publish.js +++ b/test/publish.js @@ -23,7 +23,7 @@ describe('publish', function (done) { this.timeout(25000) nixt(opts) .run(surge) - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') .on(/.*domain:.*/).respond('cli-test.surge.sh\n') diff --git a/test/teardown.js b/test/teardown.js index 575f651..a84f5d0 100644 --- a/test/teardown.js +++ b/test/teardown.js @@ -19,7 +19,7 @@ describe('teardown', function () { nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge) - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') .on(/.*domain:.*/).respond('\n') diff --git a/test/welcome.js b/test/welcome.js index fc80460..927c42d 100644 --- a/test/welcome.js +++ b/test/welcome.js @@ -21,7 +21,7 @@ describe('welcome message', function (done) { this.timeout(15000) nixt(opts) .run(surge) - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { should(result.stdout).match(/Welcome/) @@ -34,11 +34,11 @@ describe('welcome message', function (done) { this.timeout(15000) nixt(opts) .run(surge + 'login') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { should(result.stdout).match(/Surge/) - should(result.stdout).match(/kenneth\+test@chloi\.io/) + should(result.stdout).match(/brock\+test@chloi\.io/) }) .end(done) }) @@ -48,11 +48,11 @@ describe('welcome message', function (done) { nixt(opts) .exec(surge + 'logout') .run(surge + 'login') - .on(/.*email:.*/).respond('kenneth+test@chloi.io\n') + .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { should(result.stdout).match(/Surge/) - should(result.stdout).match(/kenneth\+test@chloi\.io/) + should(result.stdout).match(/brock\+test@chloi\.io/) }) .end(done) }) From ff99d617b4a379ee93c194b327bdafedd4b75814 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 15 Sep 2017 02:01:47 -0700 Subject: [PATCH 002/214] adds email to test output --- test/basic.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/basic.js b/test/basic.js index 8517037..78155f2 100644 --- a/test/basic.js +++ b/test/basic.js @@ -15,7 +15,7 @@ var testid = "cli-test-" + testts var user = "brock+test@chloi.io" var pass = "12345" -describe("surge " + testid, function () { +describe("surge " + testid + " using " + user, function () { describe ("prepare", function(){ it('logout', function (done) { From c7da49da4ea064c8f487ba964e24009238625ddd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 5 Mar 2017 05:29:03 -0800 Subject: [PATCH 003/214] adds menu for plan --- lib/middleware/plan.js | 55 ++++++++++++++++++++++++++++++++++ lib/middleware/plans.js | 27 +++++++++++++++++ lib/middleware/subscription.js | 27 +++++++++++++++++ lib/surge.js | 28 ++++++++++++++++- package.json | 9 +++--- 5 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 lib/middleware/plan.js create mode 100644 lib/middleware/plans.js create mode 100644 lib/middleware/subscription.js diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js new file mode 100644 index 0000000..670cbbf --- /dev/null +++ b/lib/middleware/plan.js @@ -0,0 +1,55 @@ + +var request = require("request") +var url = require("url") +var helpers = require("./util/helpers") +var path = require("path") +var fs = require("fs") +var os = require("os") +var inquirer = require('inquirer') + +module.exports = function(req, next, abort){ + + console.log(req.plans) + next() + + var choice = function(plan){ + plan.metadata.regions = plan.metadata.regions || "" + + var price = plan.amount.toString().substring(0, plan.amount.toString().length - 2) + var title = plan.name + " $" + price + "/" + plan.interval + var features = [title] + + if(plan.metadata.projects && plan.metadata.publishings){ + features.push(plan.metadata.projects + " projects, " + plan.metadata.publishings + " publishings/day") + } + + if(plan.metadata.regions){ + features.push("Regions(" + plan.metadata.regions.split(", ").length + "): " + plan.metadata.regions) + } + + if (plan.metadata.ssl && plan.metadata.ssl == "auto"){ + features.push("Custom SSL via LetsEncrypt.org") + } + + return { + short: " " + plan.name, + value: plan.id, + name: " " + features.join("\n - ") + "\n" + } + } + + inquirer.prompt([ + { + type: 'list', + name: 'plan', + message: '\n\n All surge.sh plans include CNAME, AUTH, ROUTER, CORS\n Please select plan...\n\n', + choices: req.plans.map(choice), + pageSize: 20, + separator: true + } + ]).then(function (answers) { + console.log() + console.log(answers) + //console.log(JSON.stringify(answers, null, ' ')) + }) +} diff --git a/lib/middleware/plans.js b/lib/middleware/plans.js new file mode 100644 index 0000000..416ca86 --- /dev/null +++ b/lib/middleware/plans.js @@ -0,0 +1,27 @@ + +var request = require("request") +var url = require("url") +var helpers = require("./util/helpers") +var path = require("path") +var fs = require("fs") +var os = require("os") +var parseUrl = require("url-parse-as-address") + +module.exports = function(req, next, abort){ + + var options = { + 'url': url.resolve(req.endpoint, "plans"), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } + } + + request(options, function(e, r, obj){ + if (r.statusCode == 200) req.plans = JSON.parse(obj) + return next() + }) + +} diff --git a/lib/middleware/subscription.js b/lib/middleware/subscription.js new file mode 100644 index 0000000..7079ffc --- /dev/null +++ b/lib/middleware/subscription.js @@ -0,0 +1,27 @@ + +var request = require("request") +var url = require("url") +var helpers = require("./util/helpers") +var path = require("path") +var fs = require("fs") +var os = require("os") +var parseUrl = require("url-parse-as-address") + +module.exports = function(req, next, abort){ + + var options = { + 'url': url.resolve(req.endpoint, "subscription"), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } + } + + request(options, function(e, r, obj){ + if (r.statusCode == 200) req.subscription = JSON.parse(obj) + return next() + }) + +} diff --git a/lib/surge.js b/lib/surge.js index 2862f9d..4ceb6be 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -31,6 +31,12 @@ var token = require("./middleware/token") var teardown = require("./middleware/teardown") var discovery = require("./middleware/discovery") var plus = require("./middleware/plus") + + +var subscription= require("./middleware/subscription") +var plans = require("./middleware/plans") +var plan = require("./middleware/plan") + var ssl = require("./middleware/ssl") var log = require("./middleware/log") @@ -75,7 +81,7 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - var commands = ["login", "logout", "whoami", "list", "publish", "teardown", "token", "plus", "ssl"] + var commands = ["login", "logout", "whoami", "list", "publish", "teardown", "token", "plus", "ssl", "plan"] if (commands.indexOf(cmd) !== -1) { argv._.shift() @@ -247,6 +253,26 @@ module.exports = function(config){ } } + surge.plan = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, welcome, tokencheck, email, auth, postAuth, + subscription, plans, plan, + space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.ssl = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub diff --git a/package.json b/package.json index 8f68ca0..2e304a9 100644 --- a/package.json +++ b/package.json @@ -7,19 +7,20 @@ "dependencies": { "du": "0.1.0", "fstream-ignore": "1.0.2", + "inquirer": "^3.0.6", "is-domain": "0.0.1", + "minimist": "1.1.1", "moniker": "0.1.2", "netrc": "0.1.4", - "prompt": "~0.2.14", "progress": "1.1.8", + "prompt": "~0.2.14", + "read": "1.0.5", "request": "2.40.0", "split": "0.3.1", "surge-ignore": "0.2.0", "tar": "1.0.0", "tar.gz": "0.1.1", - "url-parse-as-address": "1.0.0", - "read": "1.0.5", - "minimist": "1.1.1" + "url-parse-as-address": "1.0.0" }, "devDependencies": { "commander": "2.9.0", From d8aac44b26cdf430d3a3ba884a00a2c599641f94 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 8 Mar 2017 03:17:38 -0800 Subject: [PATCH 004/214] adds plan selector --- lib/middleware/plan.js | 40 +++++++++++++++++++++++++++++++++------- lib/surge.js | 2 +- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 670cbbf..e167cf7 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -8,15 +8,33 @@ var os = require("os") var inquirer = require('inquirer') module.exports = function(req, next, abort){ - - console.log(req.plans) - next() var choice = function(plan){ plan.metadata.regions = plan.metadata.regions || "" var price = plan.amount.toString().substring(0, plan.amount.toString().length - 2) - var title = plan.name + " $" + price + "/" + plan.interval + + var shortinter = plan.interval == "month" + ? "mo" + : "yr" + + var title = plan.name.underline + + // add price + if (price == "00") { + title += " Free" + }else{ + title += " $" + price + "/" + shortinter + } + + if (plan.trial_period_days){ + title += " (" + plan.trial_period_days + "day trial)" + } + + if (req.subscription && req.subscription.id === plan.id){ + title += " " + "[CURRENT PLAN]".inverse + } + var features = [title] if(plan.metadata.projects && plan.metadata.publishings){ @@ -26,9 +44,15 @@ module.exports = function(req, next, abort){ if(plan.metadata.regions){ features.push("Regions(" + plan.metadata.regions.split(", ").length + "): " + plan.metadata.regions) } + console.log(req) - if (plan.metadata.ssl && plan.metadata.ssl == "auto"){ - features.push("Custom SSL via LetsEncrypt.org") + if (plan.metadata.ssl){ + if (plan.metadata.ssl == "auto"){ + features.push("Automatic SSL via LetsEncrypt.org w/ force https") + }else{ + features.push("Custom SSL (via upload) & ." + req.config.platform + " SSL ") + } + } return { @@ -38,11 +62,13 @@ module.exports = function(req, next, abort){ } } + var choices = req.plans.map(choice) + inquirer.prompt([ { type: 'list', name: 'plan', - message: '\n\n All surge.sh plans include CNAME, AUTH, ROUTER, CORS\n Please select plan...\n\n', + message: '\n\n You may change or cancel plan anytime.\n\n', choices: req.plans.map(choice), pageSize: 20, separator: true diff --git a/lib/surge.js b/lib/surge.js index 4ceb6be..b0b5954 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -259,7 +259,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, tokencheck, email, auth, postAuth, + preAuth, creds, tokencheck, email, auth, postAuth, subscription, plans, plan, space ] From 8838712170003720e9c8dffd9f9aee316229e938 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 8 Mar 2017 03:31:03 -0800 Subject: [PATCH 005/214] reference plan in current subscription --- lib/middleware/plan.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index e167cf7..f800226 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -31,7 +31,7 @@ module.exports = function(req, next, abort){ title += " (" + plan.trial_period_days + "day trial)" } - if (req.subscription && req.subscription.id === plan.id){ + if (req.subscription && req.subscription.plan.id === plan.id){ title += " " + "[CURRENT PLAN]".inverse } From 338ee230212a8ca8ad4c250347fd8d4d73e29449 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 14 Mar 2017 18:38:47 -0700 Subject: [PATCH 006/214] adds plan selector --- lib/middleware/plan.js | 22 +++++++++++++--------- lib/middleware/util/helpers.js | 1 + lib/surge.js | 15 ++++++++++++++- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index f800226..9cec845 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -6,6 +6,7 @@ var path = require("path") var fs = require("fs") var os = require("os") var inquirer = require('inquirer') +var colors = require("colors") module.exports = function(req, next, abort){ @@ -32,7 +33,7 @@ module.exports = function(req, next, abort){ } if (req.subscription && req.subscription.plan.id === plan.id){ - title += " " + "[CURRENT PLAN]".inverse + title += " " + "[CURRENT PLAN]" } var features = [title] @@ -44,7 +45,6 @@ module.exports = function(req, next, abort){ if(plan.metadata.regions){ features.push("Regions(" + plan.metadata.regions.split(", ").length + "): " + plan.metadata.regions) } - console.log(req) if (plan.metadata.ssl){ if (plan.metadata.ssl == "auto"){ @@ -55,27 +55,31 @@ module.exports = function(req, next, abort){ } + if(plan.metadata.perk){ + features.push("Regions(" + plan.metadata.regions.split(", ").length + "): " + plan.metadata.regions) + } + return { - short: " " + plan.name, + short: " ", value: plan.id, - name: " " + features.join("\n - ") + "\n" + name: " " + features.join("\n - ") + "\n" } } - var choices = req.plans.map(choice) + var choices = req.plans.list.map(choice) inquirer.prompt([ { type: 'list', name: 'plan', - message: '\n\n You may change or cancel plan anytime.\n\n', - choices: req.plans.map(choice), + message: ('\n\n ' + req.plans.message + '\n\n You may change your plan at any time.\n\n').yellow, + choices: choices, pageSize: 20, separator: true } ]).then(function (answers) { - console.log() - console.log(answers) + req.selectedPlan = answers + return next() //console.log(JSON.stringify(answers, null, ' ')) }) } diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 4059bcd..0685c39 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -8,6 +8,7 @@ var urlAddy = require("url-parse-as-address") var read = require("read") var isDomain = require("is-domain") + exports.read = read diff --git a/lib/surge.js b/lib/surge.js index b0b5954..a971f7c 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -33,6 +33,7 @@ var discovery = require("./middleware/discovery") var plus = require("./middleware/plus") + var subscription= require("./middleware/subscription") var plans = require("./middleware/plans") var plan = require("./middleware/plan") @@ -40,6 +41,18 @@ var plan = require("./middleware/plan") var ssl = require("./middleware/ssl") var log = require("./middleware/log") +var exitifcurrentplan = function(req, next){ + //"\n plan: ".grey + plan.name.default + + if (req.subscription.plan.id === req.selectedPlan.plan){ + console.log(" plan: ".grey + req.subscription.plan.name) + console.log() + process.exit() + }else{ + return next() + } +} + var space = function(req, next){ console.log(); next() } @@ -260,7 +273,7 @@ module.exports = function(config){ var onion = [ whitelist, endpoint, pkg, help, version, space, preAuth, creds, tokencheck, email, auth, postAuth, - subscription, plans, plan, + subscription, plans, plan, exitifcurrentplan, space ] return function(){ From 7876b58d9bd5e4bf104f68de4df2036a96675f8b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 16 Dec 2017 03:31:52 -0800 Subject: [PATCH 007/214] adds plan selector --- lib/middleware/payment.js | 64 ++ lib/middleware/plan.js | 41 +- lib/middleware/plans.js | 1 + lib/middleware/subscription.js | 1 + lib/middleware/util/helpers.js | 6 +- lib/surge.js | 12 +- package-lock.json | 1023 ++++++++++++++++++++++++++++++++ 7 files changed, 1125 insertions(+), 23 deletions(-) create mode 100644 lib/middleware/payment.js create mode 100644 package-lock.json diff --git a/lib/middleware/payment.js b/lib/middleware/payment.js new file mode 100644 index 0000000..16502cf --- /dev/null +++ b/lib/middleware/payment.js @@ -0,0 +1,64 @@ + +var request = require("request") +var url = require("url") +var helpers = require("./util/helpers") +var path = require("path") +var fs = require("fs") +var os = require("os") +var parseUrl = require("url-parse-as-address") + +module.exports = function(req, next, abort){ + + var subscriptionUrl = url.resolve(req.endpoint, "subscription") + + var collect = function(){ + + request({ + 'url': subscriptionUrl, + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } + }, function(e, r, obj){ + if (e) throw e + var subscription = JSON.parse(obj) + + helpers.payment(req, subscription["stripe_pk"], subscription.card || null)(function(token){ + request({ + uri: subscriptionUrl, + method: "PUT", + auth: { + 'user': 'token', + 'pass': req.creds.token, + 'sendImmediately': true + }, + form: { + plan: subscription.plan, + token: token + } + }, function(e,r,b){ + if (r.statusCode == 201) { + if (token === null) console.log() + var sub = JSON.parse(b) + console.log() + console.log((" You are now upgraded to " + sub.plan.name + "!").green) + console.log() + } else if (r.statusCode == 200) { + var sub = JSON.parse(b) + console.log() + console.log((" No charge created. You are already upgraded to " + sub.plan.name + "!").green) + console.log() + } else { + console.log(r.statusCode) + } + }) + }) + }) + + } + + return collect() + +} diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 9cec845..10fe66c 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -6,7 +6,7 @@ var path = require("path") var fs = require("fs") var os = require("os") var inquirer = require('inquirer') -var colors = require("colors") +var colors = require("colors") module.exports = function(req, next, abort){ @@ -38,21 +38,36 @@ module.exports = function(req, next, abort){ var features = [title] - if(plan.metadata.projects && plan.metadata.publishings){ - features.push(plan.metadata.projects + " projects, " + plan.metadata.publishings + " publishings/day") + if(plan.metadata.includes){ + features.push(plan.metadata.includes) + } + + if(plan.metadata.projects){ + features.push(plan.metadata.projects) + } + + if(plan.metadata.cname){ + features.push(plan.metadata.cname) } if(plan.metadata.regions){ - features.push("Regions(" + plan.metadata.regions.split(", ").length + "): " + plan.metadata.regions) + features.push(plan.metadata.regions) + } + + if (plan.metadata.features){ + features.push(plan.metadata.features) + } + + if(plan.metadata.preview){ + features.push(plan.metadata.preview) } if (plan.metadata.ssl){ - if (plan.metadata.ssl == "auto"){ - features.push("Automatic SSL via LetsEncrypt.org w/ force https") - }else{ - features.push("Custom SSL (via upload) & ." + req.config.platform + " SSL ") - } - + features.push(plan.metadata.ssl) + } + + if (plan.metadata.rollbacks){ + features.push(plan.metadata.rollbacks) } if(plan.metadata.perk){ @@ -67,19 +82,19 @@ module.exports = function(req, next, abort){ } var choices = req.plans.list.map(choice) - + inquirer.prompt([ { type: 'list', name: 'plan', - message: ('\n\n ' + req.plans.message + '\n\n You may change your plan at any time.\n\n').yellow, + message: (req.plans.message).yellow, choices: choices, pageSize: 20, separator: true } ]).then(function (answers) { req.selectedPlan = answers - return next() //console.log(JSON.stringify(answers, null, ' ')) + return next() }) } diff --git a/lib/middleware/plans.js b/lib/middleware/plans.js index 416ca86..ac65697 100644 --- a/lib/middleware/plans.js +++ b/lib/middleware/plans.js @@ -20,6 +20,7 @@ module.exports = function(req, next, abort){ } request(options, function(e, r, obj){ + //console.log("PLANS", JSON.parse(obj)) if (r.statusCode == 200) req.plans = JSON.parse(obj) return next() }) diff --git a/lib/middleware/subscription.js b/lib/middleware/subscription.js index 7079ffc..fddf0fd 100644 --- a/lib/middleware/subscription.js +++ b/lib/middleware/subscription.js @@ -20,6 +20,7 @@ module.exports = function(req, next, abort){ } request(options, function(e, r, obj){ + //console.log("SUBSCRIPTION", JSON.parse(obj)) if (r.statusCode == 200) req.subscription = JSON.parse(obj) return next() }) diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 0685c39..4c5d0c6 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -174,7 +174,7 @@ exports.payment = function(req, stripe_pk, existing){ if (["Y", "y", "Yes", "yes"].indexOf(reply) !== -1){ callback(null) } else { - log() + //log() log(" Please enter new payment method..." + " [all payment transfers are PCI compliant]".grey) card("", "", "", callback) } @@ -182,8 +182,8 @@ exports.payment = function(req, stripe_pk, existing){ } } else { return function(callback){ - log() - log(" Please enter your payment info..." + " [all payment transfers are PCI compliant]".grey) + //log() + //log(" Please enter your payment info..." + " [all payment transfers are PCI compliant]".grey) card("", "", "", callback) } } diff --git a/lib/surge.js b/lib/surge.js index a971f7c..18aab56 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -32,24 +32,21 @@ var teardown = require("./middleware/teardown") var discovery = require("./middleware/discovery") var plus = require("./middleware/plus") - - var subscription= require("./middleware/subscription") var plans = require("./middleware/plans") var plan = require("./middleware/plan") +var payment = require("./middleware/payment") var ssl = require("./middleware/ssl") var log = require("./middleware/log") var exitifcurrentplan = function(req, next){ - //"\n plan: ".grey + plan.name.default - if (req.subscription.plan.id === req.selectedPlan.plan){ - console.log(" plan: ".grey + req.subscription.plan.name) + console.log(" You remain on the", req.subscription.plan.name, "plan.") console.log() process.exit() }else{ - return next() + return next() } } @@ -273,7 +270,8 @@ module.exports = function(config){ var onion = [ whitelist, endpoint, pkg, help, version, space, preAuth, creds, tokencheck, email, auth, postAuth, - subscription, plans, plan, exitifcurrentplan, + subscription, plans, plan, + exitifcurrentplan, payment, space ] return function(){ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d3c1d9f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1023 @@ +{ + "name": "surge", + "version": "0.20.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-escapes": { + "version": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "array-filter": { + "version": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-map": { + "version": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", + "optional": true + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", + "optional": true + }, + "assertion-error": { + "version": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=" + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", + "optional": true + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "block-stream": { + "version": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", + "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" + } + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", + "requires": { + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + }, + "browser-stdout": { + "version": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + }, + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "cli-cursor": { + "version": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + } + }, + "cli-width": { + "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + } + }, + "clone": { + "version": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", + "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=", + "dev": true + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "colors": { + "version": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "optional": true, + "requires": { + "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" + } + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", + "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", + "optional": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz" + } + }, + "ctype": { + "version": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", + "optional": true + }, + "cycle": { + "version": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + }, + "decamelize": { + "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-equal": { + "version": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "optional": true + }, + "diff": { + "version": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "du": { + "version": "https://registry.npmjs.org/du/-/du-0.1.0.tgz", + "integrity": "sha1-8m40CgnHvFtv1pr2263qYPqMb00=", + "requires": { + "async": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" + } + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "external-editor": { + "version": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.1.tgz", + "integrity": "sha1-TFl8bIj6ZBDkHbuqexviM2qjEJU=", + "requires": { + "tmp": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz" + } + }, + "eyes": { + "version": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, + "figures": { + "version": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + } + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=" + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", + "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", + "optional": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "optional": true + } + } + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "integrity": "sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + } + }, + "fstream-ignore": { + "version": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", + "integrity": "sha1-GMiR2wG3gqdKe/+Tag8kmXdBx6s=", + "requires": { + "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" + } + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + }, + "dependencies": { + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "requires": { + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" + } + } + } + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", + "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", + "optional": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "sntp": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz" + } + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=" + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", + "optional": true, + "requires": { + "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "ctype": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + } + }, + "i": { + "version": "https://registry.npmjs.org/i/-/i-0.3.5.tgz", + "integrity": "sha1-HSuFQVjsgWkRPGy39raAHpniEdU=" + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz", + "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", + "requires": { + "ansi-escapes": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "cli-cursor": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "cli-width": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "external-editor": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.1.tgz", + "figures": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "mute-stream": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "run-async": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "rx": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "requires": { + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "invert-kv": { + "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-domain": { + "version": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", + "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=" + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "is-promise": { + "version": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "jsonify": { + "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "keypress": { + "version": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", + "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=" + }, + "lcid": { + "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + } + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash._baseassign": { + "version": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "lodash.keys": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" + } + }, + "lodash._basecopy": { + "version": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "lodash._basecreate": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "lodash._isiterateecall": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" + } + }, + "lodash.isarguments": { + "version": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "lodash.isarguments": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "lodash.isarray": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" + } + }, + "mime": { + "version": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "optional": true + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", + "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=" + }, + "mimic-fn": { + "version": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" + } + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", + "integrity": "sha1-G8K8cWWM3KVxJHVoQ2NhWwtPaVs=" + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mocha": { + "version": "https://registry.npmjs.org/mocha/-/mocha-3.2.0.tgz", + "integrity": "sha1-fcT0XlCIB1FxpoiWgU5q6et6heM=", + "dev": true, + "requires": { + "browser-stdout": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "diff": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "growl": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "json3": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "lodash.create": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" + }, + "dependencies": { + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=", + "dev": true, + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true, + "requires": { + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" + } + } + } + }, + "moniker": { + "version": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", + "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "mute-stream": { + "version": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "natives": { + "version": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=" + }, + "ncp": { + "version": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" + }, + "netrc": { + "version": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" + }, + "nixt": { + "version": "https://registry.npmjs.org/nixt/-/nixt-0.4.1.tgz", + "integrity": "sha1-YjCeuVzSKPeZWCKiHbgXBbbs3Nw=", + "dev": true, + "requires": { + "assertion-error": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "clone": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", + "shell-quote": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "string": "https://registry.npmjs.org/string/-/string-1.9.1.tgz" + } + }, + "node-uuid": { + "version": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "integrity": "sha1-baWhdmjEs91ZYjvaEc9/pMH2Cm8=" + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", + "integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=", + "optional": true + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "onetime": { + "version": "https://registry.npmjs.org/onetime/-/onetime-2.0.0.tgz", + "integrity": "sha1-UqqBEOUvxRJv/GZ72Owhwu0gnOY=", + "requires": { + "mimic-fn": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz" + } + }, + "os-locale": { + "version": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + } + }, + "os-tmpdir": { + "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "pkginfo": { + "version": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", + "integrity": "sha1-NJ27f/04CB/K3AhT32h/DHdEzWU=" + }, + "progress": { + "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" + }, + "prompt": { + "version": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", + "requires": { + "pkginfo": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", + "read": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", + "revalidator": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "utile": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "winston": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz" + } + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz", + "integrity": "sha1-UKk+K1r2aRwxvOpdrnjubqGQN2g=" + }, + "read": { + "version": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", + "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", + "requires": { + "mute-stream": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" + } + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.40.0.tgz", + "integrity": "sha1-TdZw9pbx5uhC5mtLXoOTAaub62c=", + "requires": { + "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "form-data": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", + "hawk": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", + "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", + "node-uuid": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz", + "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + } + }, + "restore-cursor": { + "version": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "https://registry.npmjs.org/onetime/-/onetime-2.0.0.tgz", + "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" + } + }, + "revalidator": { + "version": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" + }, + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz" + } + }, + "run-async": { + "version": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" + } + }, + "rx": { + "version": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" + }, + "shell-quote": { + "version": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "array-map": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "array-reduce": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + } + }, + "should": { + "version": "https://registry.npmjs.org/should/-/should-7.1.0.tgz", + "integrity": "sha1-WUGumqZnW+JAZ9QywCryEMzZx3I=", + "dev": true, + "requires": { + "should-equal": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", + "should-format": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", + "should-type": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz" + } + }, + "should-equal": { + "version": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", + "integrity": "sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=", + "dev": true, + "requires": { + "should-type": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz" + } + }, + "should-format": { + "version": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", + "integrity": "sha1-QgB+wKochupEkUzJER8bnyfTzqw=", + "dev": true, + "requires": { + "should-type": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz" + } + }, + "should-type": { + "version": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", + "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", + "dev": true + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", + "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", + "optional": true, + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" + } + }, + "split": { + "version": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", + "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", + "requires": { + "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + } + }, + "stack-trace": { + "version": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=" + }, + "string": { + "version": "https://registry.npmjs.org/string/-/string-1.9.1.tgz", + "integrity": "sha1-iq4c9WPep2dTjdej8NsiOYacYZ4=", + "dev": true + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "optional": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + } + }, + "surge-ignore": { + "version": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", + "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" + }, + "tar": { + "version": "https://registry.npmjs.org/tar/-/tar-1.0.0.tgz", + "integrity": "sha1-NmNtduiuErS8EalArGBrXKil/h8=", + "requires": { + "block-stream": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "tar.gz": { + "version": "https://registry.npmjs.org/tar.gz/-/tar.gz-0.1.1.tgz", + "integrity": "sha1-6RTOI7L9xidXX72zSFpbIo7VmUc=", + "requires": { + "commander": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", + "fstream": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "tar": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz" + }, + "dependencies": { + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", + "integrity": "sha1-UNFlGGiuYOzP8KLZ80WVN2vGsEE=", + "requires": { + "keypress": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz" + } + }, + "fstream": { + "version": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + } + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "requires": { + "natives": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz" + } + }, + "tar": { + "version": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", + "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=", + "requires": { + "block-stream": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "fstream": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + } + } + }, + "through": { + "version": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "tmp": { + "version": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "requires": { + "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + } + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "optional": true, + "requires": { + "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + } + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "optional": true + }, + "url-parse-as-address": { + "version": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", + "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" + }, + "utile": { + "version": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", + "requires": { + "async": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "deep-equal": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "i": "https://registry.npmjs.org/i/-/i-0.3.5.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "ncp": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + } + } + }, + "window-size": { + "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "winston": { + "version": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "requires": { + "async": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "colors": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "cycle": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "eyes": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "pkginfo": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "stack-trace": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + }, + "pkginfo": { + "version": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" + } + } + }, + "wrap-ansi": { + "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-3.30.0.tgz", + "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", + "dev": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" + } + } + } +} From 9b4bb03db9ac15ea1ef97bc8f13b9d9ff66bdb89 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 17 Dec 2017 05:55:55 -0800 Subject: [PATCH 008/214] changing subscription flow for account plans --- lib/middleware/payment.js | 66 +++++----------------------------- lib/middleware/plan.js | 1 - lib/middleware/subscribe.js | 41 +++++++++++++++++++++ lib/middleware/subscription.js | 6 +++- lib/middleware/util/helpers.js | 4 ++- lib/surge.js | 6 ++-- 6 files changed, 61 insertions(+), 63 deletions(-) create mode 100644 lib/middleware/subscribe.js diff --git a/lib/middleware/payment.js b/lib/middleware/payment.js index 16502cf..0439d13 100644 --- a/lib/middleware/payment.js +++ b/lib/middleware/payment.js @@ -1,64 +1,14 @@ - -var request = require("request") -var url = require("url") var helpers = require("./util/helpers") -var path = require("path") -var fs = require("fs") -var os = require("os") -var parseUrl = require("url-parse-as-address") +// return token to be used for payment module.exports = function(req, next, abort){ - - var subscriptionUrl = url.resolve(req.endpoint, "subscription") - - var collect = function(){ - - request({ - 'url': subscriptionUrl, - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - }, function(e, r, obj){ - if (e) throw e - var subscription = JSON.parse(obj) - - helpers.payment(req, subscription["stripe_pk"], subscription.card || null)(function(token){ - request({ - uri: subscriptionUrl, - method: "PUT", - auth: { - 'user': 'token', - 'pass': req.creds.token, - 'sendImmediately': true - }, - form: { - plan: subscription.plan, - token: token - } - }, function(e,r,b){ - if (r.statusCode == 201) { - if (token === null) console.log() - var sub = JSON.parse(b) - console.log() - console.log((" You are now upgraded to " + sub.plan.name + "!").green) - console.log() - } else if (r.statusCode == 200) { - var sub = JSON.parse(b) - console.log() - console.log((" No charge created. You are already upgraded to " + sub.plan.name + "!").green) - console.log() - } else { - console.log(r.statusCode) - } - }) - }) + if (req.selectedPlan.plan.indexOf("student") !== -1){ + req.paymentToken = null + return next() + } else { + helpers.payment(req, req.stripe_pk, req.subscription.card || null)(function(token){ + req.paymentToken = token + next() }) - } - - return collect() - } diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 10fe66c..c6095ab 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -94,7 +94,6 @@ module.exports = function(req, next, abort){ } ]).then(function (answers) { req.selectedPlan = answers - //console.log(JSON.stringify(answers, null, ' ')) return next() }) } diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js new file mode 100644 index 0000000..91bc8ea --- /dev/null +++ b/lib/middleware/subscribe.js @@ -0,0 +1,41 @@ + +var request = require("request") +var url = require("url") + +module.exports = function(req, next, abort){ + + var fields = { + plan: req.selectedPlan.plan + } + + if (req.paymentToken){ + fields.token = req.paymentToken + } + + request({ + uri: url.resolve(req.endpoint, "subscription"), + method: "PUT", + auth: { + 'user': 'token', + 'pass': req.creds.token, + 'sendImmediately': true + }, + form: fields + }, function(e,r,b){ + if (r.statusCode == 201) { + if (token === null) console.log() + var sub = JSON.parse(b) + console.log() + console.log((" You are now upgraded to " + sub.plan.name + "!").green) + console.log() + } else if (r.statusCode == 200) { + var sub = JSON.parse(b) + console.log() + console.log((" No charge created. You are already upgraded to " + sub.plan.name + "!").green) + console.log() + } else { + console.log(r.statusCode) + } + }) + +} diff --git a/lib/middleware/subscription.js b/lib/middleware/subscription.js index fddf0fd..b5a545e 100644 --- a/lib/middleware/subscription.js +++ b/lib/middleware/subscription.js @@ -21,7 +21,11 @@ module.exports = function(req, next, abort){ request(options, function(e, r, obj){ //console.log("SUBSCRIPTION", JSON.parse(obj)) - if (r.statusCode == 200) req.subscription = JSON.parse(obj) + if (r.statusCode == 200){ + var obj = JSON.parse(obj) + req.subscription = obj.subscription + req.stripe_pk = obj.stripe_pk + } return next() }) diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 4c5d0c6..eff2bcf 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -99,6 +99,7 @@ var abort = function(msg){ } exports.payment = function(req, stripe_pk, existing){ + function card(cc, ep, cv, cb){ read({ silent: false, @@ -131,12 +132,13 @@ exports.payment = function(req, stripe_pk, existing){ } } }, function(e,r,b) { - //console.log("POST TOKEN RSP:", r.statusCode) if (r.statusCode == 417){ console.log() console.log(" Update Required".yellow, "-", obj) console.log() process.exit(1) + } else if (r.statusCode == 401){ + console.log(r) } else if (r.statusCode == 402){ var data = JSON.parse(b) var msg = "Card appears to be invalid" diff --git a/lib/surge.js b/lib/surge.js index 18aab56..ece17cd 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -36,6 +36,7 @@ var subscription= require("./middleware/subscription") var plans = require("./middleware/plans") var plan = require("./middleware/plan") var payment = require("./middleware/payment") +var subscribe = require("./middleware/subscribe") var ssl = require("./middleware/ssl") var log = require("./middleware/log") @@ -270,8 +271,9 @@ module.exports = function(config){ var onion = [ whitelist, endpoint, pkg, help, version, space, preAuth, creds, tokencheck, email, auth, postAuth, - subscription, plans, plan, - exitifcurrentplan, payment, + subscription, plans, plan, + //exitifcurrentplan, + payment, subscribe, space ] return function(){ From 22058ed8428edb20e899d16081bfb14a472c3d65 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 19 Dec 2017 08:02:20 -0800 Subject: [PATCH 009/214] adds payment flow for changing plans --- lib/middleware/payment.js | 2 +- lib/middleware/plan.js | 28 +++++++++++--- lib/middleware/subscribe.js | 12 ++---- lib/middleware/subscription.js | 1 + lib/middleware/util/helpers.js | 67 +++++++++++++++++++++++----------- lib/surge.js | 4 +- 6 files changed, 75 insertions(+), 39 deletions(-) diff --git a/lib/middleware/payment.js b/lib/middleware/payment.js index 0439d13..6ca8449 100644 --- a/lib/middleware/payment.js +++ b/lib/middleware/payment.js @@ -6,7 +6,7 @@ module.exports = function(req, next, abort){ req.paymentToken = null return next() } else { - helpers.payment(req, req.stripe_pk, req.subscription.card || null)(function(token){ + helpers.payment(req, req.stripe_pk, req.card || null)(function(token){ req.paymentToken = token next() }) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index c6095ab..13a9005 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -28,12 +28,14 @@ module.exports = function(req, next, abort){ title += " $" + price + "/" + shortinter } - if (plan.trial_period_days){ - title += " (" + plan.trial_period_days + "day trial)" - } + if (req.subscription && req.subscription.plan.id === plan.id){ title += " " + "[CURRENT PLAN]" + } else { + if (plan.trial_period_days){ + title += " (" + plan.trial_period_days + "day trial)" + } } var features = [title] @@ -74,26 +76,40 @@ module.exports = function(req, next, abort){ features.push("Regions(" + plan.metadata.regions.split(", ").length + "): " + plan.metadata.regions) } - return { + + var obj = { short: " ", value: plan.id, name: " " + features.join("\n - ") + "\n" } + + // checked + if (req.subscription && req.subscription.plan.id === plan.id){ + obj.checked = true + }else{ + obj.checked = false + } + + return obj } var choices = req.plans.list.map(choice) - + inquirer.prompt([ { type: 'list', name: 'plan', - message: (req.plans.message).yellow, + message: ' ', + //message: (req.plans.message).yellow, choices: choices, pageSize: 20, separator: true } ]).then(function (answers) { + //console.log(' You have selected the Foo plan'.grey) req.selectedPlan = answers + var p = answers.plan.split("-")[0] + req.plan = p.charAt(0).toUpperCase() + p.slice(1) return next() }) } diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js index 91bc8ea..049d6ec 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/subscribe.js @@ -22,19 +22,15 @@ module.exports = function(req, next, abort){ }, form: fields }, function(e,r,b){ - if (r.statusCode == 201) { - if (token === null) console.log() + if ([200,201].indexOf(r.statusCode) !== -1) { var sub = JSON.parse(b) console.log() - console.log((" You are now upgraded to " + sub.plan.name + "!").green) + console.log((" " + sub.msg).green) console.log() - } else if (r.statusCode == 200) { - var sub = JSON.parse(b) + } else { console.log() - console.log((" No charge created. You are already upgraded to " + sub.plan.name + "!").green) + console.log((" Error: " + r.statusCode).red) console.log() - } else { - console.log(r.statusCode) } }) diff --git a/lib/middleware/subscription.js b/lib/middleware/subscription.js index b5a545e..5136171 100644 --- a/lib/middleware/subscription.js +++ b/lib/middleware/subscription.js @@ -23,6 +23,7 @@ module.exports = function(req, next, abort){ //console.log("SUBSCRIPTION", JSON.parse(obj)) if (r.statusCode == 200){ var obj = JSON.parse(obj) + req.card = obj.card req.subscription = obj.subscription req.stripe_pk = obj.stripe_pk } diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index eff2bcf..9a0a18a 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -90,16 +90,18 @@ var fetchToken = exports.fetchToken = function(endpoint){ } } -var abort = function(msg){ - console.log() - console.log() - console.log(" Aborted".yellow + " -", msg) - console.log() - process.exit(1) -} + exports.payment = function(req, stripe_pk, existing){ + var abort = function(msg){ + console.log() + console.log() + console.log(" " + "Payment aborted.".grey + " You remain on the ".grey + req.subscription.plan.name.underline.grey + " plan.".grey) + console.log() + process.exit(1) + } + function card(cc, ep, cv, cb){ read({ silent: false, @@ -107,19 +109,19 @@ exports.payment = function(req, stripe_pk, existing){ default: cc, edit: true, }, function(er, cc){ - if (cc === undefined) return abort("Payment not received.") + if (cc === undefined) return abort("Plan not changed.") read({ prompt: " exp (mo/yr):".grey, default: ep, edit: true, }, function(er, ep){ - if (ep === undefined) return abort("Payment not received.") + if (ep === undefined) return abort("Plan not changed.") read({ prompt: " cvc:".grey, default: cv, edit: true, }, function(er, cv){ - if (cv === undefined) return abort("Payment not received.") + if (cv === undefined) return abort("Plan not changed.") request({ uri: "https://"+ stripe_pk +":@api.stripe.com/v1/tokens", method: "POST", @@ -141,20 +143,38 @@ exports.payment = function(req, stripe_pk, existing){ console.log(r) } else if (r.statusCode == 402){ var data = JSON.parse(b) - var msg = "Card appears to be invalid" - - if (data.hasOwnProperty("error")) - msg = data["error"]["param"] + " appears to be invalid. " - - msg += "Please try again." - msg = msg.charAt(0).toUpperCase() + msg.substring(1) + var msg + + if (data.hasOwnProperty("error")){ + msg = data["error"]["message"] + // console.log(data["error"]) + // if (data["error"]["param"] === "number"){ + // msg = 'Invalid "card number". ' + // } else if (data["error"]["param"] === "exp_year"){ + // msg = 'Invalid "exp" year. Please try again.' + // } else if (data["error"]["param"] === "exp_month"){ + // msg = 'Invalid "exp" month. Please try again.' + // } else { + // msg = data["error"]["param"] + "is invalid. " + // } + }else{ + msg = "Card appears to be invalid. Please try again." + } + + //msg = msg.charAt(0).toUpperCase() + msg.substring(1) log() - log(" ", msg.yellow) + log(" ", msg.grey) + log() return card(cc, ep, cv, cb) } else if(r.statusCode == 200) { var data = JSON.parse(b) return cb(data.id) + }else{ + log() + log((" Enter playment info to change to the " + req.plan.underline + " plan.").grey) + log() + card(cc, ep, cv, cb) } }) @@ -164,20 +184,22 @@ exports.payment = function(req, stripe_pk, existing){ } if (existing !== null) { + return function(callback){ read({ - prompt: (" Would you like to charge " + existing.brand + " ending in " + existing.last4.yellow + "?".blue).blue, + prompt: (" Upgrade to " + req.plan.underline + " plan using " + existing.brand.blue + " ending in ".grey + existing.last4.blue + "?".grey).grey, default: "yes", edit: true }, function(err, reply){ if (err) console.log(err) - if (reply === undefined) return abort("Payment not received.") + if (reply === undefined) return abort("Plan not changed.") if (["Y", "y", "Yes", "yes"].indexOf(reply) !== -1){ callback(null) } else { //log() - log(" Please enter new payment method..." + " [all payment transfers are PCI compliant]".grey) + //log(" Enter new payment method.".grey) + log() card("", "", "", callback) } }) @@ -185,7 +207,8 @@ exports.payment = function(req, stripe_pk, existing){ } else { return function(callback){ //log() - //log(" Please enter your payment info..." + " [all payment transfers are PCI compliant]".grey) + log((" Enter playment info to change to the " + req.plan.underline + " plan.").grey) + log() card("", "", "", callback) } } diff --git a/lib/surge.js b/lib/surge.js index ece17cd..510205c 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -43,7 +43,7 @@ var log = require("./middleware/log") var exitifcurrentplan = function(req, next){ if (req.subscription.plan.id === req.selectedPlan.plan){ - console.log(" You remain on the", req.subscription.plan.name, "plan.") + console.log((" You remain on the " + req.subscription.plan.name.underline + " plan.").grey) console.log() process.exit() }else{ @@ -272,7 +272,7 @@ module.exports = function(config){ whitelist, endpoint, pkg, help, version, space, preAuth, creds, tokencheck, email, auth, postAuth, subscription, plans, plan, - //exitifcurrentplan, + exitifcurrentplan, payment, subscribe, space ] From c37ff5e7ef14fbff45f7618774434cf82398d8c2 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 20 Dec 2017 05:09:43 -0800 Subject: [PATCH 010/214] code cleanup --- lib/middleware/plan.js | 1 - lib/middleware/plans.js | 2 +- lib/middleware/subscription.js | 4 +- package-lock.json | 1023 -------------------------------- 4 files changed, 4 insertions(+), 1026 deletions(-) delete mode 100644 package-lock.json diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 13a9005..6fcb3d1 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -6,7 +6,6 @@ var path = require("path") var fs = require("fs") var os = require("os") var inquirer = require('inquirer') -var colors = require("colors") module.exports = function(req, next, abort){ diff --git a/lib/middleware/plans.js b/lib/middleware/plans.js index ac65697..c861e84 100644 --- a/lib/middleware/plans.js +++ b/lib/middleware/plans.js @@ -20,7 +20,7 @@ module.exports = function(req, next, abort){ } request(options, function(e, r, obj){ - //console.log("PLANS", JSON.parse(obj)) + //console.log("PLANS", r.statusCode, JSON.parse(obj)) if (r.statusCode == 200) req.plans = JSON.parse(obj) return next() }) diff --git a/lib/middleware/subscription.js b/lib/middleware/subscription.js index 5136171..a196d8f 100644 --- a/lib/middleware/subscription.js +++ b/lib/middleware/subscription.js @@ -26,7 +26,9 @@ module.exports = function(req, next, abort){ req.card = obj.card req.subscription = obj.subscription req.stripe_pk = obj.stripe_pk - } + } else { + console.log(obj) + } return next() }) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index d3c1d9f..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1023 +0,0 @@ -{ - "name": "surge", - "version": "0.20.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "ansi-escapes": { - "version": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" - }, - "ansi-regex": { - "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "array-filter": { - "version": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-map": { - "version": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "asn1": { - "version": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", - "optional": true - }, - "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", - "optional": true - }, - "assertion-error": { - "version": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, - "async": { - "version": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=" - }, - "aws-sign2": { - "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", - "optional": true - }, - "balanced-match": { - "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - }, - "block-stream": { - "version": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - } - }, - "boom": { - "version": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", - "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", - "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" - } - }, - "brace-expansion": { - "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", - "requires": { - "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - }, - "browser-stdout": { - "version": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "camelcase": { - "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "chalk": { - "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - }, - "dependencies": { - "supports-color": { - "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "cli-cursor": { - "version": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" - } - }, - "cli-width": { - "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" - }, - "cliui": { - "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" - } - }, - "clone": { - "version": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", - "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=", - "dev": true - }, - "code-point-at": { - "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "colors": { - "version": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" - }, - "combined-stream": { - "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", - "optional": true, - "requires": { - "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - } - }, - "commander": { - "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - }, - "concat-map": { - "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "cryptiles": { - "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", - "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", - "optional": true, - "requires": { - "boom": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz" - } - }, - "ctype": { - "version": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", - "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", - "optional": true - }, - "cycle": { - "version": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" - }, - "debug": { - "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - }, - "decamelize": { - "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-equal": { - "version": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "delayed-stream": { - "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", - "optional": true - }, - "diff": { - "version": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true - }, - "du": { - "version": "https://registry.npmjs.org/du/-/du-0.1.0.tgz", - "integrity": "sha1-8m40CgnHvFtv1pr2263qYPqMb00=", - "requires": { - "async": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" - } - }, - "escape-string-regexp": { - "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "external-editor": { - "version": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.1.tgz", - "integrity": "sha1-TFl8bIj6ZBDkHbuqexviM2qjEJU=", - "requires": { - "tmp": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz" - } - }, - "eyes": { - "version": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" - }, - "figures": { - "version": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - } - }, - "forever-agent": { - "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", - "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=" - }, - "form-data": { - "version": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", - "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", - "optional": true, - "requires": { - "async": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "mime": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" - }, - "dependencies": { - "async": { - "version": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "optional": true - } - } - }, - "fs.realpath": { - "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fstream": { - "version": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "integrity": "sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=", - "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" - } - }, - "fstream-ignore": { - "version": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", - "integrity": "sha1-GMiR2wG3gqdKe/+Tag8kmXdBx6s=", - "requires": { - "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" - } - }, - "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "requires": { - "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - }, - "dependencies": { - "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", - "requires": { - "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" - } - } - } - }, - "graceful-fs": { - "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graceful-readlink": { - "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has-ansi": { - "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - } - }, - "has-flag": { - "version": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "hawk": { - "version": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", - "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", - "optional": true, - "requires": { - "boom": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", - "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", - "hoek": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", - "sntp": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz" - } - }, - "hoek": { - "version": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", - "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=" - }, - "http-signature": { - "version": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", - "optional": true, - "requires": { - "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "ctype": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - } - }, - "i": { - "version": "https://registry.npmjs.org/i/-/i-0.3.5.tgz", - "integrity": "sha1-HSuFQVjsgWkRPGy39raAHpniEdU=" - }, - "inflight": { - "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - }, - "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "inquirer": { - "version": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz", - "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", - "requires": { - "ansi-escapes": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "cli-cursor": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "cli-width": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "external-editor": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.1.tgz", - "figures": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "mute-stream": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "run-async": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "rx": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "string-width": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", - "requires": { - "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - } - } - } - }, - "invert-kv": { - "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-domain": { - "version": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", - "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=" - }, - "is-fullwidth-code-point": { - "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - } - }, - "is-promise": { - "version": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "isstream": { - "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "json-stringify-safe": { - "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json3": { - "version": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "jsonify": { - "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "keypress": { - "version": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", - "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=" - }, - "lcid": { - "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - } - }, - "lodash": { - "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash._baseassign": { - "version": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "lodash.keys": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" - } - }, - "lodash._basecopy": { - "version": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.create": { - "version": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "lodash._basecreate": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "lodash._isiterateecall": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" - } - }, - "lodash.isarguments": { - "version": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "lodash.isarguments": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "lodash.isarray": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - } - }, - "mime": { - "version": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", - "optional": true - }, - "mime-types": { - "version": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", - "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=" - }, - "mimic-fn": { - "version": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" - }, - "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "requires": { - "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" - } - }, - "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", - "integrity": "sha1-G8K8cWWM3KVxJHVoQ2NhWwtPaVs=" - }, - "mkdirp": { - "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - }, - "dependencies": { - "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "mocha": { - "version": "https://registry.npmjs.org/mocha/-/mocha-3.2.0.tgz", - "integrity": "sha1-fcT0XlCIB1FxpoiWgU5q6et6heM=", - "dev": true, - "requires": { - "browser-stdout": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "diff": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "glob": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "growl": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "json3": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "lodash.create": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" - }, - "dependencies": { - "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=", - "dev": true, - "requires": { - "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - } - }, - "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", - "dev": true, - "requires": { - "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" - } - } - } - }, - "moniker": { - "version": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", - "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" - }, - "ms": { - "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "mute-stream": { - "version": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "natives": { - "version": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", - "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=" - }, - "ncp": { - "version": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" - }, - "netrc": { - "version": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", - "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" - }, - "nixt": { - "version": "https://registry.npmjs.org/nixt/-/nixt-0.4.1.tgz", - "integrity": "sha1-YjCeuVzSKPeZWCKiHbgXBbbs3Nw=", - "dev": true, - "requires": { - "assertion-error": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "clone": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", - "shell-quote": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "string": "https://registry.npmjs.org/string/-/string-1.9.1.tgz" - } - }, - "node-uuid": { - "version": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "integrity": "sha1-baWhdmjEs91ZYjvaEc9/pMH2Cm8=" - }, - "number-is-nan": { - "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", - "integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=", - "optional": true - }, - "once": { - "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - }, - "onetime": { - "version": "https://registry.npmjs.org/onetime/-/onetime-2.0.0.tgz", - "integrity": "sha1-UqqBEOUvxRJv/GZ72Owhwu0gnOY=", - "requires": { - "mimic-fn": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz" - } - }, - "os-locale": { - "version": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" - } - }, - "os-tmpdir": { - "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "path-is-absolute": { - "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "pkginfo": { - "version": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", - "integrity": "sha1-NJ27f/04CB/K3AhT32h/DHdEzWU=" - }, - "progress": { - "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" - }, - "prompt": { - "version": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", - "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", - "requires": { - "pkginfo": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", - "read": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", - "revalidator": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "utile": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", - "winston": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz" - } - }, - "punycode": { - "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "optional": true - }, - "qs": { - "version": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz", - "integrity": "sha1-UKk+K1r2aRwxvOpdrnjubqGQN2g=" - }, - "read": { - "version": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", - "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", - "requires": { - "mute-stream": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" - } - }, - "request": { - "version": "https://registry.npmjs.org/request/-/request-2.40.0.tgz", - "integrity": "sha1-TdZw9pbx5uhC5mtLXoOTAaub62c=", - "requires": { - "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", - "form-data": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", - "hawk": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", - "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", - "node-uuid": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", - "qs": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz", - "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - } - }, - "restore-cursor": { - "version": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "https://registry.npmjs.org/onetime/-/onetime-2.0.0.tgz", - "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" - } - }, - "revalidator": { - "version": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" - }, - "rimraf": { - "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "requires": { - "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz" - } - }, - "run-async": { - "version": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" - } - }, - "rx": { - "version": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" - }, - "shell-quote": { - "version": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "array-map": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "array-reduce": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - } - }, - "should": { - "version": "https://registry.npmjs.org/should/-/should-7.1.0.tgz", - "integrity": "sha1-WUGumqZnW+JAZ9QywCryEMzZx3I=", - "dev": true, - "requires": { - "should-equal": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", - "should-format": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", - "should-type": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz" - } - }, - "should-equal": { - "version": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", - "integrity": "sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=", - "dev": true, - "requires": { - "should-type": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz" - } - }, - "should-format": { - "version": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", - "integrity": "sha1-QgB+wKochupEkUzJER8bnyfTzqw=", - "dev": true, - "requires": { - "should-type": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz" - } - }, - "should-type": { - "version": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", - "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", - "dev": true - }, - "signal-exit": { - "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sntp": { - "version": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", - "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", - "optional": true, - "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" - } - }, - "split": { - "version": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", - "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", - "requires": { - "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - }, - "stack-trace": { - "version": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=" - }, - "string": { - "version": "https://registry.npmjs.org/string/-/string-1.9.1.tgz", - "integrity": "sha1-iq4c9WPep2dTjdej8NsiOYacYZ4=", - "dev": true - }, - "string-width": { - "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - } - }, - "stringstream": { - "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "optional": true - }, - "strip-ansi": { - "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - } - }, - "supports-color": { - "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - } - }, - "surge-ignore": { - "version": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", - "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" - }, - "tar": { - "version": "https://registry.npmjs.org/tar/-/tar-1.0.0.tgz", - "integrity": "sha1-NmNtduiuErS8EalArGBrXKil/h8=", - "requires": { - "block-stream": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - } - }, - "tar.gz": { - "version": "https://registry.npmjs.org/tar.gz/-/tar.gz-0.1.1.tgz", - "integrity": "sha1-6RTOI7L9xidXX72zSFpbIo7VmUc=", - "requires": { - "commander": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", - "fstream": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "tar": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz" - }, - "dependencies": { - "commander": { - "version": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", - "integrity": "sha1-UNFlGGiuYOzP8KLZ80WVN2vGsEE=", - "requires": { - "keypress": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz" - } - }, - "fstream": { - "version": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", - "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" - } - }, - "graceful-fs": { - "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "requires": { - "natives": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz" - } - }, - "tar": { - "version": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", - "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=", - "requires": { - "block-stream": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "fstream": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - } - } - } - }, - "through": { - "version": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "tmp": { - "version": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "requires": { - "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - } - }, - "tough-cookie": { - "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "optional": true, - "requires": { - "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - } - }, - "tunnel-agent": { - "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "optional": true - }, - "url-parse-as-address": { - "version": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", - "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" - }, - "utile": { - "version": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", - "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", - "requires": { - "async": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "deep-equal": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "i": "https://registry.npmjs.org/i/-/i-0.3.5.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "ncp": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" - }, - "dependencies": { - "async": { - "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - } - } - }, - "window-size": { - "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true - }, - "winston": { - "version": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", - "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", - "requires": { - "async": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "colors": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "cycle": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "eyes": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "pkginfo": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "stack-trace": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" - }, - "dependencies": { - "async": { - "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - }, - "pkginfo": { - "version": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" - } - } - }, - "wrap-ansi": { - "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - } - }, - "wrappy": { - "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "y18n": { - "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "https://registry.npmjs.org/yargs/-/yargs-3.30.0.tgz", - "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", - "dev": true, - "requires": { - "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" - } - } - } -} From 76954c9d6c204fd965eefa62c43f3dce2b654727 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 28 Dec 2017 22:56:02 -0800 Subject: [PATCH 011/214] adds card changer --- lib/middleware/card.js | 10 +++++++ lib/middleware/setcard.js | 47 ++++++++++++++++++++++++++++++++ lib/middleware/util/helpers.js | 50 ++++++++++++++++++++++++++-------- lib/surge.js | 26 ++++++++++++++++-- 4 files changed, 120 insertions(+), 13 deletions(-) create mode 100644 lib/middleware/card.js create mode 100644 lib/middleware/setcard.js diff --git a/lib/middleware/card.js b/lib/middleware/card.js new file mode 100644 index 0000000..f614885 --- /dev/null +++ b/lib/middleware/card.js @@ -0,0 +1,10 @@ +var helpers = require("./util/helpers") + +// return token to be used for payment +module.exports = function(req, next, abort){ + console.log() + helpers.payment(req, req.stripe_pk, req.card || null)(function(token){ + req.paymentToken = token + next() + }) +} diff --git a/lib/middleware/setcard.js b/lib/middleware/setcard.js new file mode 100644 index 0000000..413d761 --- /dev/null +++ b/lib/middleware/setcard.js @@ -0,0 +1,47 @@ + +var request = require("request") +var url = require("url") + +module.exports = function(req, next, abort){ + + if (!req.paymentToken){ + //console.log() + if (req.card){ + console.log(" Success".green + " - Using existing card.".grey) + } else { + console.log(" Aborted".yellow + " - No card set.".grey) + } + console.log() + } else { + + var fields = {} + + if (req.paymentToken){ + fields.token = req.paymentToken + } + + request({ + uri: url.resolve(req.endpoint, "card"), + method: "PUT", + auth: { + 'user': 'token', + 'pass': req.creds.token, + 'sendImmediately': true + }, + form: fields + }, function(e,r,b){ + if ([200,201].indexOf(r.statusCode) !== -1) { + var obj = JSON.parse(b) + console.log() + console.log((" Success".green + " - ".grey + obj.msg.grey)) + console.log() + } else { + var obj = JSON.parse(b) + console.log() + console.log(" Error ".red + " - " + obj.msg.grey) + console.log() + } + }) + + } +} diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 9a0a18a..25bb6cd 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -96,8 +96,11 @@ exports.payment = function(req, stripe_pk, existing){ var abort = function(msg){ console.log() - console.log() - console.log(" " + "Payment aborted.".grey + " You remain on the ".grey + req.subscription.plan.name.underline.grey + " plan.".grey) + if (req.plan){ + console.log(" " + "Aborted".yellow + " - You remain on the ".grey + req.subscription.plan.name.underline.grey + " plan.".grey) + } else { + console.log(" " + "Aborted".yellow + " - Using existing card.".grey) + } console.log() process.exit(1) } @@ -109,19 +112,28 @@ exports.payment = function(req, stripe_pk, existing){ default: cc, edit: true, }, function(er, cc){ - if (cc === undefined) return abort("Plan not changed.") + if (cc === undefined){ + console.log() + return abort("Plan not changed.") + } read({ prompt: " exp (mo/yr):".grey, default: ep, edit: true, }, function(er, ep){ - if (ep === undefined) return abort("Plan not changed.") + if (ep === undefined){ + console.log() + return abort("Plan not changed.") + } read({ prompt: " cvc:".grey, default: cv, edit: true, }, function(er, cv){ - if (cv === undefined) return abort("Plan not changed.") + if (cv === undefined){ + console.log() + return abort("Plan not changed.") + } request({ uri: "https://"+ stripe_pk +":@api.stripe.com/v1/tokens", method: "POST", @@ -172,7 +184,9 @@ exports.payment = function(req, stripe_pk, existing){ return cb(data.id) }else{ log() - log((" Enter playment info to change to the " + req.plan.underline + " plan.").grey) + return req.plan + ? log((" Enter playment info to change to the " + req.plan.underline + " plan.").grey) + : log((" Default message").grey) log() card(cc, ep, cv, cb) } @@ -186,28 +200,42 @@ exports.payment = function(req, stripe_pk, existing){ if (existing !== null) { return function(callback){ + + var prompt = req.plan + ? (" Change to the " + req.plan.underline + " plan using " + existing.brand.blue + " ending in ".grey + existing.last4.blue + "?".grey).grey + : (" Continue to use " + existing.brand.blue + " ending in ".grey + existing.last4.blue + "?".grey).grey + read({ - prompt: (" Upgrade to " + req.plan.underline + " plan using " + existing.brand.blue + " ending in ".grey + existing.last4.blue + "?".grey).grey, + prompt: prompt, default: "yes", edit: true }, function(err, reply){ - if (err) console.log(err) + if (err){ + return abort("whatever") + } if (reply === undefined) return abort("Plan not changed.") if (["Y", "y", "Yes", "yes"].indexOf(reply) !== -1){ - callback(null) + return callback(null) } else { //log() //log(" Enter new payment method.".grey) log() - card("", "", "", callback) + return card("", "", "", callback) } }) } } else { return function(callback){ //log() - log((" Enter playment info to change to the " + req.plan.underline + " plan.").grey) + + if (req.plan){ + log((" Enter payment info to change to the " + req.plan.underline + " plan.").grey) + } else { + //log() + log((" Enter payment method to be used").grey) + } + log() card("", "", "", callback) } diff --git a/lib/surge.js b/lib/surge.js index 510205c..bc0c511 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -36,6 +36,8 @@ var subscription= require("./middleware/subscription") var plans = require("./middleware/plans") var plan = require("./middleware/plan") var payment = require("./middleware/payment") +var card = require("./middleware/card") +var setcard = require("./middleware/setcard") var subscribe = require("./middleware/subscribe") var ssl = require("./middleware/ssl") @@ -43,7 +45,7 @@ var log = require("./middleware/log") var exitifcurrentplan = function(req, next){ if (req.subscription.plan.id === req.selectedPlan.plan){ - console.log((" You remain on the " + req.subscription.plan.name.underline + " plan.").grey) + console.log(" " + "Success".green + (" - You remain on the " + req.subscription.plan.name.underline + " plan.").grey) console.log() process.exit() }else{ @@ -92,7 +94,7 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - var commands = ["login", "logout", "whoami", "list", "publish", "teardown", "token", "plus", "ssl", "plan"] + var commands = ["login", "logout", "whoami", "list", "publish", "teardown", "token", "plus", "ssl", "plan", "card"] if (commands.indexOf(cmd) !== -1) { argv._.shift() @@ -286,6 +288,26 @@ module.exports = function(config){ } } + surge.card = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, tokencheck, email, auth, postAuth, + subscription, card, setcard, + space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.ssl = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub From aa7fcb1c1b271a83982c069b04feedf673a5680d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 31 Dec 2017 02:58:37 -0800 Subject: [PATCH 012/214] changes prompt for upgrade --- lib/cli.js | 4 ++-- lib/middleware/deploy.js | 31 +++++++++++++++++++++++++------ lib/middleware/ipaddress.js | 2 +- lib/middleware/plan.js | 2 +- lib/middleware/util/helpers.js | 9 +++++++-- lib/surge.js | 3 +-- 6 files changed, 37 insertions(+), 14 deletions(-) diff --git a/lib/cli.js b/lib/cli.js index e70b4a6..28aee31 100755 --- a/lib/cli.js +++ b/lib/cli.js @@ -7,8 +7,8 @@ surge(process.argv.slice(2)) process.on('SIGINT', function() { console.log("\n") global.ponr == true - ? console.log(" Disconnected".green, "-", "Past point of no return, completing in background.") - : console.log(" Cancelled".yellow, "-", "Upload aborted, publish not initiated.") + ? console.log(" Disconnected".green + "- Past point of no return, completing in background.".grey) + : console.log(" Aborted".yellow + " - Deployment not initiated.".grey) console.log() process.exit(1) }) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index ec61259..e402ecd 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -13,7 +13,7 @@ var ignore = require("surge-ignore") module.exports = function(req, next){ - + var success = false; /** * Some useful metadata @@ -69,6 +69,8 @@ module.exports = function(req, next){ */ var tick = function(tick){ + //console.log("tick", tick.toString()) + if (Object.keys(progress).length > 1) global.ponr = true //try { @@ -100,20 +102,24 @@ module.exports = function(req, next){ } else if (payload.hasOwnProperty("type") && payload.type === "collect") { - var msg = " Project requires the ".blue + payload.plan.name.yellow + " plan. ".blue + ("$" + (payload.plan.amount / 100) + "/mo").yellow + " (cancel anytime).".blue + //console.log(payload) + var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey helpers.log() if (payload.hasOwnProperty("perks")) { - helpers.log(msg += " This plan provides...".blue) + helpers.log(msg += "\n\n Plan provides...".bold) payload.perks.forEach(function(perk){ - helpers.log((" - " + perk).blue) + helpers.log((" - " + perk).bold) }) + helpers.log() } else { helpers.log(msg) } + req.plan = payload.plan.name + helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ - //console.log(token) + console.log(token) var uri = url.resolve(req.endpoint, req.domain + "/subscription") request({ uri: uri, @@ -140,6 +146,7 @@ module.exports = function(req, next){ // prompt for user } else if (payload.hasOwnProperty("type") && payload.type === "ip") { + success = true if (payload.data) { console.log(" IP Address:".grey, payload.data.ip) } @@ -263,9 +270,21 @@ module.exports = function(req, next){ handshake.on("data", tick) // done - handshake.on("end", next) + handshake.on("end", function(){ + if (success === true){ + return next() + } else { + helpers.log() + helpers.log() + helpers.log(" Error".red + " - Deployment did not succeed.".grey) + helpers.log() + process.exit(1) + } + + }) handshake.on("response", function(rsp){ + if (rsp.statusCode == 403) { helpers.log() if(rsp.headers.hasOwnProperty("reason")){ diff --git a/lib/middleware/ipaddress.js b/lib/middleware/ipaddress.js index a583f10..2341d81 100644 --- a/lib/middleware/ipaddress.js +++ b/lib/middleware/ipaddress.js @@ -4,7 +4,7 @@ module.exports = function(req, next){ } else { console.log() - console.log(" Success!".green + " Project is published and running at " + req.domain.green.underline) + console.log(" Succes!".green + " Project is published and running at " + req.domain.green.underline) console.log("") } diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 6fcb3d1..6bb287a 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -33,7 +33,7 @@ module.exports = function(req, next, abort){ title += " " + "[CURRENT PLAN]" } else { if (plan.trial_period_days){ - title += " (" + plan.trial_period_days + "day trial)" + title += " (" + plan.trial_period_days + " day trial)" } } diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 25bb6cd..1a7e13a 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -97,7 +97,12 @@ exports.payment = function(req, stripe_pk, existing){ var abort = function(msg){ console.log() if (req.plan){ - console.log(" " + "Aborted".yellow + " - You remain on the ".grey + req.subscription.plan.name.underline.grey + " plan.".grey) + try{ + console.log(" " + "Aborted".yellow + " - You remain on the ".grey + req.subscription.plan.name.underline.grey + " plan.".grey) + }catch(e) { + console.log(" " + "Aborted".yellow + " - No charge processed.".grey) + } + } else { console.log(" " + "Aborted".yellow + " - Using existing card.".grey) } @@ -203,7 +208,7 @@ exports.payment = function(req, stripe_pk, existing){ var prompt = req.plan ? (" Change to the " + req.plan.underline + " plan using " + existing.brand.blue + " ending in ".grey + existing.last4.blue + "?".grey).grey - : (" Continue to use " + existing.brand.blue + " ending in ".grey + existing.last4.blue + "?".grey).grey + : (" Use " + existing.brand.underline + " ending in ".grey + existing.last4.underline.grey + "?".grey).grey read({ prompt: prompt, diff --git a/lib/surge.js b/lib/surge.js index bc0c511..4850c25 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -178,8 +178,7 @@ module.exports = function(config){ preProject, project, postProject, preSize, size, postSize, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, - prePublish, protocol, deploy, postPublish, - ipaddress + prePublish, protocol, deploy, postPublish //, ipaddress ] return function(){ var argv = parse(arguments[arguments.length -1]) From c758bf68954cba422a39682b926ac23b134e5160 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 2 Jan 2018 03:58:16 -0800 Subject: [PATCH 013/214] beter prompts for upgrading --- lib/middleware/deploy.js | 25 +++++++++++++------------ lib/middleware/ipaddress.js | 12 +++++++----- lib/middleware/plan.js | 4 ++-- lib/middleware/subscribe.js | 2 ++ lib/middleware/util/helpers.js | 9 ++++++--- lib/surge.js | 2 +- 6 files changed, 31 insertions(+), 23 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index e402ecd..c1bf17d 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -13,7 +13,7 @@ var ignore = require("surge-ignore") module.exports = function(req, next){ - var success = false; + req.success = false; /** * Some useful metadata @@ -107,9 +107,9 @@ module.exports = function(req, next){ helpers.log() if (payload.hasOwnProperty("perks")) { - helpers.log(msg += "\n\n Plan provides...".bold) + helpers.log(msg += "\n\n Plan provides...".blue) payload.perks.forEach(function(perk){ - helpers.log((" - " + perk).bold) + helpers.log((" - " + perk).blue) }) helpers.log() } else { @@ -119,8 +119,7 @@ module.exports = function(req, next){ req.plan = payload.plan.name helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ - console.log(token) - var uri = url.resolve(req.endpoint, req.domain + "/subscription") + var uri = url.resolve(req.endpoint, "subscription") request({ uri: uri, method: "PUT", @@ -130,15 +129,17 @@ module.exports = function(req, next){ 'sendImmediately': true }, form: { - plan: payload.plan, + plan: payload.plan.id, token: token } }, function(e,r,b){ if (r.statusCode == 201 || r.statusCode == 200) { - console.log() - //if (token === null) console.log() - //var sub = JSON.parse(b) - //console.log(" plan:".grey, sub.plan.name) + //console.log("here") + if (token === null) console.log() + // var sub = JSON.parse(b) + // console.log(" plan:".grey, sub.plan.name) + } else { + console.log("ERROR") } }) }) @@ -146,7 +147,7 @@ module.exports = function(req, next){ // prompt for user } else if (payload.hasOwnProperty("type") && payload.type === "ip") { - success = true + req.success = true if (payload.data) { console.log(" IP Address:".grey, payload.data.ip) } @@ -271,7 +272,7 @@ module.exports = function(req, next){ // done handshake.on("end", function(){ - if (success === true){ + if (req.success === true){ return next() } else { helpers.log() diff --git a/lib/middleware/ipaddress.js b/lib/middleware/ipaddress.js index 2341d81..4929b47 100644 --- a/lib/middleware/ipaddress.js +++ b/lib/middleware/ipaddress.js @@ -1,12 +1,14 @@ module.exports = function(req, next){ - if (req.status) { - + if (req.success === true) { + console.log() + console.log(" Succes!".green + " - Project is published and running at ".grey + req.domain.green.underline + ".".grey) + console.log() } else { console.log() - console.log(" Succes!".green + " Project is published and running at " + req.domain.green.underline) - console.log("") + console.log(" Error".red + " - Deployment failed. ".grey) + console.log() } - next() + return next() } \ No newline at end of file diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 6bb287a..c7052bb 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -28,7 +28,6 @@ module.exports = function(req, next, abort){ } - if (req.subscription && req.subscription.plan.id === plan.id){ title += " " + "[CURRENT PLAN]" } else { @@ -93,7 +92,7 @@ module.exports = function(req, next, abort){ } var choices = req.plans.list.map(choice) - + inquirer.prompt([ { type: 'list', @@ -111,4 +110,5 @@ module.exports = function(req, next, abort){ req.plan = p.charAt(0).toUpperCase() + p.slice(1) return next() }) + } diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js index 049d6ec..16140c5 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/subscribe.js @@ -12,6 +12,8 @@ module.exports = function(req, next, abort){ fields.token = req.paymentToken } + //console.log(fields) + request({ uri: url.resolve(req.endpoint, "subscription"), method: "PUT", diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 1a7e13a..b4c9260 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -189,11 +189,14 @@ exports.payment = function(req, stripe_pk, existing){ return cb(data.id) }else{ log() - return req.plan + + req.plan ? log((" Enter playment info to change to the " + req.plan.underline + " plan.").grey) : log((" Default message").grey) + log() - card(cc, ep, cv, cb) + + return card(cc, ep, cv, cb) } }) @@ -207,7 +210,7 @@ exports.payment = function(req, stripe_pk, existing){ return function(callback){ var prompt = req.plan - ? (" Change to the " + req.plan.underline + " plan using " + existing.brand.blue + " ending in ".grey + existing.last4.blue + "?".grey).grey + ? (" Change to the " + req.plan.underline + " plan using " + existing.brand.underline.grey + " ending in ".grey + existing.last4.underline.grey + "?".grey).grey : (" Use " + existing.brand.underline + " ending in ".grey + existing.last4.underline.grey + "?".grey).grey read({ diff --git a/lib/surge.js b/lib/surge.js index 4850c25..bda0302 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -178,7 +178,7 @@ module.exports = function(config){ preProject, project, postProject, preSize, size, postSize, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, - prePublish, protocol, deploy, postPublish //, ipaddress + prePublish, protocol, deploy, postPublish, ipaddress ] return function(){ var argv = parse(arguments[arguments.length -1]) From 919a35c449aea86f032cb120c7f560c79d9ad9e2 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 5 Jan 2018 02:47:36 -0800 Subject: [PATCH 014/214] smarter polling --- lib/middleware/auth.js | 2 +- lib/middleware/deploy.js | 19 +++++++++++++------ lib/middleware/domain.js | 2 +- lib/middleware/email.js | 2 +- lib/middleware/ipaddress.js | 4 ++-- lib/middleware/project.js | 4 ++-- lib/middleware/size.js | 4 ++-- lib/middleware/teardown.js | 2 +- lib/middleware/token.js | 2 +- lib/middleware/welcome.js | 6 ++++-- package.json | 2 +- 11 files changed, 29 insertions(+), 20 deletions(-) diff --git a/lib/middleware/auth.js b/lib/middleware/auth.js index e679e43..176a179 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/auth.js @@ -76,7 +76,7 @@ module.exports = function(req, next, abort){ } if (req.authed) { - console.log(" token:".grey, "*****************".grey) + //console.log(" token:".grey, "*****************".grey) return next() } else { return auth() diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index c1bf17d..e45f926 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -22,7 +22,8 @@ module.exports = function(req, next){ var headers = { "version" : req.pkg.version, "file-count": req.fileCount, - "project-size": req.projectSize + "project-size": req.projectSize, + "timestamp": new Date().toJSON() } @@ -57,6 +58,8 @@ module.exports = function(req, next){ if (req.ssl !== null) headers["ssl"] = req.ssl + req.headers = headers + /** * Progress Bars */ @@ -119,6 +122,8 @@ module.exports = function(req, next){ req.plan = payload.plan.name helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ + + // can this be passed in? var uri = url.resolve(req.endpoint, "subscription") request({ uri: uri, @@ -130,7 +135,8 @@ module.exports = function(req, next){ }, form: { plan: payload.plan.id, - token: token + token: token, + timestamp: req.headers.timestamp } }, function(e,r,b){ if (r.statusCode == 201 || r.statusCode == 200) { @@ -208,16 +214,16 @@ module.exports = function(req, next){ if (payload.hasOwnProperty("type") && payload.type === "subscription") { if (payload.data) { - console.log(" plan:".grey, payload.data.plan.name) + //console.log(" plan:".grey, payload.data.plan.name) } else { - console.log(" plan:".grey, "Free") + //console.log(" plan:".grey, "Free") } } else { try { // we have two different display for the progress bars var displays = { - "upload": (' upload:').grey + ' [:bar] :percent, eta: :etas', - "cdn": (' propagate on CDN:').grey + ' [:bar] :percent :file' + "upload": (' upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "cdn": (' CDN:').grey + ' [:bar] :percent' } // create progress bar (if one doesnt exist) @@ -284,6 +290,7 @@ module.exports = function(req, next){ }) + handshake.on("response", function(rsp){ if (rsp.statusCode == 403) { diff --git a/lib/middleware/domain.js b/lib/middleware/domain.js index 1dd2e8d..28d4a56 100644 --- a/lib/middleware/domain.js +++ b/lib/middleware/domain.js @@ -31,7 +31,7 @@ module.exports = function(req, next, abort){ output: req.config.output, input: req.config.input }, function(err, domain){ - if (domain === undefined) return abort("Please try again with a valid domain name.") + if (domain === undefined) return abort("Please try again with a valid domain name.".grey) if (err || !helpers.validDomain(domain)) { console.log(" ", "Please enter valid domain name…".grey) return getDomain(domain) diff --git a/lib/middleware/email.js b/lib/middleware/email.js index d27e698..0e1e907 100644 --- a/lib/middleware/email.js +++ b/lib/middleware/email.js @@ -4,7 +4,7 @@ module.exports = function(req, next, abort){ var label = " email:".grey if (req.authed) { - console.log(label, req.creds.email) + // console.log(label, req.creds.email) return next() } else { var ask = function(suggestion){ diff --git a/lib/middleware/ipaddress.js b/lib/middleware/ipaddress.js index 4929b47..7a5d00f 100644 --- a/lib/middleware/ipaddress.js +++ b/lib/middleware/ipaddress.js @@ -2,11 +2,11 @@ module.exports = function(req, next){ if (req.success === true) { console.log() - console.log(" Succes!".green + " - Project is published and running at ".grey + req.domain.green.underline + ".".grey) + console.log(" Succes!".green + (" - Published to " + ("http://" + req.domain).underline).grey) console.log() } else { console.log() - console.log(" Error".red + " - Deployment failed. ".grey) + console.log(" Error".red + " - Deployment failed. ".grey) console.log() } diff --git a/lib/middleware/project.js b/lib/middleware/project.js index 0d54243..5d66916 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/project.js @@ -3,14 +3,14 @@ var fs = require("fs") var helpers = require("./util/helpers") module.exports = function(req, next, abort){ - var label = " project path:".grey + var label = " project:".grey if (req.project || req.argv.project || req.argv["_"][0]) { req.project = req.project || path.resolve(req.argv.project || req.argv["_"][0] || "") fs.exists(req.project, function(exists){ if (exists) { - helpers.log(" project path:".grey, req.project) + helpers.log(" project:".grey, req.project) next() } else { helpers.log() diff --git a/lib/middleware/size.js b/lib/middleware/size.js index ff35cc8..58e7d89 100644 --- a/lib/middleware/size.js +++ b/lib/middleware/size.js @@ -18,7 +18,7 @@ function humanFileSize(bytes, si) { module.exports = function(req, next){ //process.stdout.write(" size:".grey, "checking...") - process.stdout.write(" size: ".grey) + //process.stdout.write(" size: ".grey) req.projectSize = 0; req.fileCount = 0 @@ -31,7 +31,7 @@ module.exports = function(req, next){ if (!stats.isDirectory()) req.fileCount++ }) }).on("close", function(){ - helpers.log(req.fileCount + " files,", humanFileSize(req.projectSize)) + //helpers.log(req.fileCount + " files,", humanFileSize(req.projectSize)) next() }) diff --git a/lib/middleware/teardown.js b/lib/middleware/teardown.js index 8501909..7c93f2a 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/teardown.js @@ -25,7 +25,7 @@ module.exports = function(req, next, abort){ if (r.statusCode == 200 || r.statusCode == 204 || r.statusCode == 210) { helpers.log() - helpers.log(" Success".green + " - " + domain + " has been removed.") + helpers.log(" Success".green + (" - " + domain + " has been removed.").grey) helpers.log() process.exit() } else if (r.statusCode == 403) { diff --git a/lib/middleware/token.js b/lib/middleware/token.js index 19fb937..b538ba6 100644 --- a/lib/middleware/token.js +++ b/lib/middleware/token.js @@ -2,6 +2,6 @@ var path = require("path") var helpers = require("./util/helpers") module.exports = function(req, next){ - helpers.log(" token: ".grey + req.creds.token) + //helpers.log(" token: ".grey + req.creds.token) next() } \ No newline at end of file diff --git a/lib/middleware/welcome.js b/lib/middleware/welcome.js index 2893e49..e682f8c 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/welcome.js @@ -3,16 +3,18 @@ var helpers = require("./util/helpers.js") module.exports = function(req, next){ if (req.creds == null) { helpers.log(" Welcome to " + (req.config.name || "Surge").bold + "! (" + req.config.platform +")" ) + if (req.config.name) { helpers.log(" Powered by Surge".grey).hr() } helpers.log(" Please login or create an account by entering your email and password:").hr() } else { if(req.config.name){ - helpers.log(" " + req.config.name.bold + " - " + (req.config.platform || "surge.sh")) + helpers.log(" " + req.config.name.bold + "("+ req.config.platform +") - " + (req.config.platform || "surge.sh")) helpers.log(" Powered by Surge".grey) } else { - helpers.log(" Surge".bold + " - surge.sh") + helpers.log((" Publishing as " + req.creds.email.underline).grey) + //helpers.log(" Surge (surge.sh)".grey + (" - as " + req.creds.email.underline).grey) } helpers.hr() } diff --git a/package.json b/package.json index 2e304a9..e1b1901 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "progress": "1.1.8", "prompt": "~0.2.14", "read": "1.0.5", - "request": "2.40.0", + "request": "2.83.0", "split": "0.3.1", "surge-ignore": "0.2.0", "tar": "1.0.0", From 3b24a2bdcbac54f40594226d03783edeccd88154 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 13 Jan 2018 06:35:01 -0800 Subject: [PATCH 015/214] much improved plan selector and flow --- lib/middleware/card.js | 2 +- lib/middleware/email.js | 1 - lib/middleware/payment.js | 6 ++- lib/middleware/plan.js | 94 +++++++++------------------------- lib/middleware/plans.js | 11 ++-- lib/middleware/setcard.js | 2 +- lib/middleware/subscribe.js | 15 ++++-- lib/middleware/subscription.js | 6 ++- lib/surge.js | 12 +++-- 9 files changed, 62 insertions(+), 87 deletions(-) diff --git a/lib/middleware/card.js b/lib/middleware/card.js index f614885..53695b5 100644 --- a/lib/middleware/card.js +++ b/lib/middleware/card.js @@ -3,7 +3,7 @@ var helpers = require("./util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ console.log() - helpers.payment(req, req.stripe_pk, req.card || null)(function(token){ + helpers.payment(req, req.plans.stripe_pk, req.plans.card || null)(function(token){ req.paymentToken = token next() }) diff --git a/lib/middleware/email.js b/lib/middleware/email.js index 0e1e907..3528140 100644 --- a/lib/middleware/email.js +++ b/lib/middleware/email.js @@ -4,7 +4,6 @@ module.exports = function(req, next, abort){ var label = " email:".grey if (req.authed) { - // console.log(label, req.creds.email) return next() } else { var ask = function(suggestion){ diff --git a/lib/middleware/payment.js b/lib/middleware/payment.js index 6ca8449..229720c 100644 --- a/lib/middleware/payment.js +++ b/lib/middleware/payment.js @@ -2,11 +2,13 @@ var helpers = require("./util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ - if (req.selectedPlan.plan.indexOf("student") !== -1){ + var prettyPlanName = req.selectedPlan.id.split("-")[0] + + if (req.selectedPlan.dummy){ req.paymentToken = null return next() } else { - helpers.payment(req, req.stripe_pk, req.card || null)(function(token){ + helpers.payment(req, req.plans.stripe_pk, req.plans.card || null)(function(token){ req.paymentToken = token next() }) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index c7052bb..e447bdd 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -14,9 +14,9 @@ module.exports = function(req, next, abort){ var price = plan.amount.toString().substring(0, plan.amount.toString().length - 2) - var shortinter = plan.interval == "month" - ? "mo" - : "yr" + var shortinter = plan.interval == "year" + ? "yr" + : "mo" var title = plan.name.underline @@ -26,87 +26,43 @@ module.exports = function(req, next, abort){ }else{ title += " $" + price + "/" + shortinter } - - - if (req.subscription && req.subscription.plan.id === plan.id){ - title += " " + "[CURRENT PLAN]" + + if (plan.current == true){ + title += " [ ★ ★ CURRENT ★ ★ ]" } else { if (plan.trial_period_days){ title += " (" + plan.trial_period_days + " day trial)" } } - var features = [title] - - if(plan.metadata.includes){ - features.push(plan.metadata.includes) - } - - if(plan.metadata.projects){ - features.push(plan.metadata.projects) - } - - if(plan.metadata.cname){ - features.push(plan.metadata.cname) - } - - if(plan.metadata.regions){ - features.push(plan.metadata.regions) - } - - if (plan.metadata.features){ - features.push(plan.metadata.features) - } - - if(plan.metadata.preview){ - features.push(plan.metadata.preview) - } - - if (plan.metadata.ssl){ - features.push(plan.metadata.ssl) - } - - if (plan.metadata.rollbacks){ - features.push(plan.metadata.rollbacks) - } - - if(plan.metadata.perk){ - features.push("Regions(" + plan.metadata.regions.split(", ").length + "): " + plan.metadata.regions) - } - + var features = [title].concat(plan.perks || []) - var obj = { + return { short: " ", - value: plan.id, + value: plan, name: " " + features.join("\n - ") + "\n" } + } - // checked - if (req.subscription && req.subscription.plan.id === plan.id){ - obj.checked = true - }else{ - obj.checked = false - } + var choices = req.plans.list.map(choice) - return obj + var args = { + type: 'list', + name: 'plan', + choices: choices, + pageSize: 30, + separator: true } - var choices = req.plans.list.map(choice) + // use message if the server gives us one + args.message = req.plans.message + ? (req.plans.message.yellow + "\n") + : ' ' - inquirer.prompt([ - { - type: 'list', - name: 'plan', - message: ' ', - //message: (req.plans.message).yellow, - choices: choices, - pageSize: 20, - separator: true - } - ]).then(function (answers) { - //console.log(' You have selected the Foo plan'.grey) - req.selectedPlan = answers - var p = answers.plan.split("-")[0] + // prompt user to choose a plan + inquirer.prompt([args]).then(function (answers) { + req.selectedPlan = answers.plan + var p = req.selectedPlan.id.split("-")[0] req.plan = p.charAt(0).toUpperCase() + p.slice(1) return next() }) diff --git a/lib/middleware/plans.js b/lib/middleware/plans.js index c861e84..bba8368 100644 --- a/lib/middleware/plans.js +++ b/lib/middleware/plans.js @@ -9,8 +9,12 @@ var parseUrl = require("url-parse-as-address") module.exports = function(req, next, abort){ + var plansUrl = req.domain + ? url.resolve(req.endpoint, path.join(req.domain, "plans")) + : url.resolve(req.endpoint, "plans") + var options = { - 'url': url.resolve(req.endpoint, "plans"), + 'url': plansUrl, 'method': 'get', 'auth': { 'user': "token", @@ -20,8 +24,9 @@ module.exports = function(req, next, abort){ } request(options, function(e, r, obj){ - //console.log("PLANS", r.statusCode, JSON.parse(obj)) - if (r.statusCode == 200) req.plans = JSON.parse(obj) + if (r.statusCode == 200){ + req.plans = JSON.parse(obj) + } return next() }) diff --git a/lib/middleware/setcard.js b/lib/middleware/setcard.js index 413d761..49a70d3 100644 --- a/lib/middleware/setcard.js +++ b/lib/middleware/setcard.js @@ -5,7 +5,7 @@ var url = require("url") module.exports = function(req, next, abort){ if (!req.paymentToken){ - //console.log() + console.log() if (req.card){ console.log(" Success".green + " - Using existing card.".grey) } else { diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js index 16140c5..425f3e1 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/subscribe.js @@ -1,21 +1,28 @@ var request = require("request") var url = require("url") +var path = require("path") module.exports = function(req, next, abort){ var fields = { - plan: req.selectedPlan.plan + plan: req.selectedPlan } if (req.paymentToken){ fields.token = req.paymentToken } - //console.log(fields) + if (req.paymentToken){ + fields.token = req.paymentToken + } + + var subscribeUrl = req.domain + ? url.resolve(req.endpoint, path.join(req.domain, "plan")) + : url.resolve(req.endpoint, "subscription") request({ - uri: url.resolve(req.endpoint, "subscription"), + uri: subscribeUrl, method: "PUT", auth: { 'user': 'token', @@ -27,7 +34,7 @@ module.exports = function(req, next, abort){ if ([200,201].indexOf(r.statusCode) !== -1) { var sub = JSON.parse(b) console.log() - console.log((" " + sub.msg).green) + console.log(" Success".green + (" - " + sub.msg).grey) console.log() } else { console.log() diff --git a/lib/middleware/subscription.js b/lib/middleware/subscription.js index a196d8f..d3eeb6c 100644 --- a/lib/middleware/subscription.js +++ b/lib/middleware/subscription.js @@ -9,8 +9,12 @@ var parseUrl = require("url-parse-as-address") module.exports = function(req, next, abort){ + var subscribeUrl = req.domain + ? url.resolve(req.endpoint, path.join(req.domain, "plan")) + : url.resolve(req.endpoint, "plan") + var options = { - 'url': url.resolve(req.endpoint, "subscription"), + 'url': subscribeUrl, 'method': 'get', 'auth': { 'user': "token", diff --git a/lib/surge.js b/lib/surge.js index bda0302..0db2920 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -44,8 +44,8 @@ var ssl = require("./middleware/ssl") var log = require("./middleware/log") var exitifcurrentplan = function(req, next){ - if (req.subscription.plan.id === req.selectedPlan.plan){ - console.log(" " + "Success".green + (" - You remain on the " + req.subscription.plan.name.underline + " plan.").grey) + if (req.plans.current && req.plans.current.id === req.selectedPlan.id){ + console.log(" " + "Success".green + (" - You remain on the " + req.plans.current.name.underline + " plan.").grey) console.log() process.exit() }else{ @@ -272,8 +272,10 @@ module.exports = function(config){ var onion = [ whitelist, endpoint, pkg, help, version, space, preAuth, creds, tokencheck, email, auth, postAuth, - subscription, plans, plan, - exitifcurrentplan, + shorthand, discovery.setDomainFromArgs, + //subscription, + plans, plan, + exitifcurrentplan, payment, subscribe, space ] @@ -294,7 +296,7 @@ module.exports = function(config){ var onion = [ whitelist, endpoint, pkg, help, version, space, preAuth, creds, tokencheck, email, auth, postAuth, - subscription, card, setcard, + plans, card, setcard, space ] return function(){ From 2c5a35bb00ec99e5bf71a1c341ca8d630095c0dc Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 18 Jan 2018 09:54:30 -0800 Subject: [PATCH 016/214] working upgrade flow with edge client --- lib/middleware/auth.js | 4 ++-- lib/middleware/deploy.js | 2 +- lib/middleware/email.js | 4 +++- lib/middleware/list.js | 35 ++++++++++++++++++++++++++++++++-- lib/middleware/login.js | 2 +- lib/middleware/logout.js | 4 ++-- lib/middleware/plan.js | 8 ++++++++ lib/middleware/project.js | 9 ++++++--- lib/middleware/subscribe.js | 8 ++------ lib/middleware/teardown.js | 4 ++-- lib/middleware/util/helpers.js | 12 ++++++++++-- lib/middleware/util/skin.js | 2 +- lib/middleware/welcome.js | 13 ++++++------- lib/middleware/whoami.js | 2 +- lib/surge.js | 2 +- package.json | 4 +++- 16 files changed, 82 insertions(+), 33 deletions(-) diff --git a/lib/middleware/auth.js b/lib/middleware/auth.js index 176a179..8ee36ea 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/auth.js @@ -20,7 +20,7 @@ module.exports = function(req, next, abort){ output: out, input: req.config.input }, function(err, password){ - if (password === undefined) return abort("not authenticated.") + if (password === undefined) return abort("Noot authenticated.".grey) helpers.fetchToken(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform)(req.email, password, function(err, obj){ if (err) { count++ @@ -57,7 +57,7 @@ module.exports = function(req, next, abort){ }) } else { console.log() - console.log(" Aborted".yellow, "- no password reset sent.", req.email.green) + console.log(" Aborted".yellow + (" - No password reset sent to" + req.email.underline + ".").grey) console.log() process.exit(1) } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index e45f926..b99c86f 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -105,7 +105,7 @@ module.exports = function(req, next){ } else if (payload.hasOwnProperty("type") && payload.type === "collect") { - //console.log(payload) + console.log("payload:collect", payload) var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey helpers.log() diff --git a/lib/middleware/email.js b/lib/middleware/email.js index 3528140..63bf74e 100644 --- a/lib/middleware/email.js +++ b/lib/middleware/email.js @@ -16,7 +16,9 @@ module.exports = function(req, next, abort){ output: req.config.output, input: req.config.input }, function(err, answer){ - if (answer === undefined) return abort("not authenticated.") + if (answer === undefined) { + return abort("Not authenticated.".grey) + } if (!pattern.test(answer)){ // console.log() // console.log(" Invalid".yellow, "-".grey, "please enter valid email address.".grey) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index ac25aab..da7b7ce 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -1,6 +1,8 @@ var url = require("url") var request = require("request") +var Table = require("cli-table2") + module.exports = function(req, next){ var options = { @@ -16,11 +18,40 @@ module.exports = function(req, next){ request(options, function(e, r, obj){ if (e) throw e var list = JSON.parse(obj) - console.log() + //console.log() + + var table = new Table({ + head: ['REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], + chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' + , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' + , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' + , 'right': '' , 'right-mid': '' , 'middle': ' ' }, + style: { 'padding-left': 1, 'padding-right': 1 } + }) + if (list.length != 0) { list.forEach(function(project){ - console.log(" " + project) + var perm = project.rev ? (project.rev + " ").grey + project.domain : "" + + if (project.planName) { + if (project.planName.indexOf("Standard") !== -1){ + var pn = project.planName.grey + }else{ + var pn = project.planName.blue + } + } + + var row = [ + perm || project.domain, + "3 days ago", + pn || "" + ] + + table.push(row) }) + + console.log(table.toString()) + } else { console.log(" Empty".yellow, "- No Projects found.") } diff --git a/lib/middleware/login.js b/lib/middleware/login.js index 2a5750d..ddc5efb 100644 --- a/lib/middleware/login.js +++ b/lib/middleware/login.js @@ -3,7 +3,7 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ helpers.log() - helpers.log(" Logged in as " + req.creds.email.green + ".") + helpers.trunc( "Success!".green + (" - Logged in as " + req.creds.email.underline + ".").grey) next() //helpers.log(" token: ".grey + req.creds.token) diff --git a/lib/middleware/logout.js b/lib/middleware/logout.js index fbab8c7..b4ec696 100644 --- a/lib/middleware/logout.js +++ b/lib/middleware/logout.js @@ -7,9 +7,9 @@ module.exports = function(req, next){ if (req.creds) { var filePath = path.join(process.env[(/^win/.test(process.platform)) ? 'USERPROFILE' : 'HOME'], ".netrc") - helpers.log(" Token removed from " + filePath.grey + " file.") + helpers.trunc(("Success").green + (" - Token removed from " + filePath.underline + " file.").grey) } else { - helpers.log(" Not currently authenticated.") + helpers.trunc("Not currently authenticated.".grey) } next() diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index e447bdd..6f767bb 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -44,11 +44,18 @@ module.exports = function(req, next, abort){ } } + var indexOfCurrent = 0 + for (var i in req.plans.list){ + if (req.plans.list[i].current == true) + indexOfCurrent = parseInt(i) + } + var choices = req.plans.list.map(choice) var args = { type: 'list', name: 'plan', + default: indexOfCurrent, choices: choices, pageSize: 30, separator: true @@ -67,4 +74,5 @@ module.exports = function(req, next, abort){ return next() }) + } diff --git a/lib/middleware/project.js b/lib/middleware/project.js index 5d66916..79c64f0 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/project.js @@ -14,8 +14,7 @@ module.exports = function(req, next, abort){ next() } else { helpers.log() - helpers.log(" Aborted".yellow, "-", "No such file or directory.") - helpers.log(" ", req.project.red) + helpers.trunc("Aborted".yellow + " - No such file or directory: ".grey + req.project.red) helpers.log() process.exit(1) } @@ -31,7 +30,11 @@ module.exports = function(req, next, abort){ output: req.config.output, input: req.config.input }, function(err, projectPath){ - if (projectPath === undefined) return abort("publishing not initiated.") + if (projectPath === undefined) { + console.log() + return abort("publishing not initiated.") + } + if (!fs.existsSync(path.resolve(projectPath))){ console.log(" ", "please enter valid project path...".grey) return ask(projectPath) diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js index 425f3e1..bc1ff10 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/subscribe.js @@ -6,11 +6,7 @@ var path = require("path") module.exports = function(req, next, abort){ var fields = { - plan: req.selectedPlan - } - - if (req.paymentToken){ - fields.token = req.paymentToken + plan: req.selectedPlan.id } if (req.paymentToken){ @@ -19,7 +15,7 @@ module.exports = function(req, next, abort){ var subscribeUrl = req.domain ? url.resolve(req.endpoint, path.join(req.domain, "plan")) - : url.resolve(req.endpoint, "subscription") + : url.resolve(req.endpoint, "plan") request({ uri: subscribeUrl, diff --git a/lib/middleware/teardown.js b/lib/middleware/teardown.js index 7c93f2a..0e41b6d 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/teardown.js @@ -25,12 +25,12 @@ module.exports = function(req, next, abort){ if (r.statusCode == 200 || r.statusCode == 204 || r.statusCode == 210) { helpers.log() - helpers.log(" Success".green + (" - " + domain + " has been removed.").grey) + helpers.trunc("Success".green + (" - " + domain + " has been removed.").grey) helpers.log() process.exit() } else if (r.statusCode == 403) { helpers.log() - helpers.log(" Aborted".yellow + " - unable to remove", domain) + helpers.trunc("Aborted".yellow + (" - Unable to remove " + domain.underline + ".").grey) helpers.log() process.exit(1) } else { diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index b4c9260..f54acff 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -15,6 +15,15 @@ exports.read = read var sig = '[' + 'surge'.cyan + ']' sig = null +var smart = exports.smart = function(str){ + console.log(str) + return this.log(" " + str.length) +} + +var trunc = exports.trunc = function(arg){ + return this.log(" " + arg) +} + var log = exports.log = function(){ var args = Array.prototype.slice.call(arguments) args.unshift(sig) @@ -95,15 +104,14 @@ var fetchToken = exports.fetchToken = function(endpoint){ exports.payment = function(req, stripe_pk, existing){ var abort = function(msg){ - console.log() if (req.plan){ try{ console.log(" " + "Aborted".yellow + " - You remain on the ".grey + req.subscription.plan.name.underline.grey + " plan.".grey) }catch(e) { console.log(" " + "Aborted".yellow + " - No charge processed.".grey) } - } else { + console.log() console.log(" " + "Aborted".yellow + " - Using existing card.".grey) } console.log() diff --git a/lib/middleware/util/skin.js b/lib/middleware/util/skin.js index aa4bb51..3088beb 100644 --- a/lib/middleware/util/skin.js +++ b/lib/middleware/util/skin.js @@ -7,7 +7,7 @@ module.exports = function(req, stack, abort){ console.log("\n") msg === null ? console.log(" Aborted".yellow) - : console.log(" Aborted".yellow, "-", msg) + : console.log(" Aborted".yellow + " - ".grey + msg) console.log() } diff --git a/lib/middleware/welcome.js b/lib/middleware/welcome.js index e682f8c..9869490 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/welcome.js @@ -2,18 +2,17 @@ var helpers = require("./util/helpers.js") module.exports = function(req, next){ if (req.creds == null) { - helpers.log(" Welcome to " + (req.config.name || "Surge").bold + "! (" + req.config.platform +")" ) - + helpers.trunc(("Welcome to " + (req.config.name || "Surge").underline + "!").blue + (" (" + req.config.platform +")").grey) if (req.config.name) { - helpers.log(" Powered by Surge".grey).hr() + helpers.trunc("Powered by Surge".grey).hr() } - helpers.log(" Please login or create an account by entering your email and password:").hr() + helpers.trunc("Login (or create surge account) by entering email & password.".grey).hr() } else { if(req.config.name){ - helpers.log(" " + req.config.name.bold + "("+ req.config.platform +") - " + (req.config.platform || "surge.sh")) - helpers.log(" Powered by Surge".grey) + helpers.trunc("" + req.config.name.bold + "("+ req.config.platform +") - " + (req.config.platform || "surge.sh")) + helpers.trunc("Powered by Surge".grey) } else { - helpers.log((" Publishing as " + req.creds.email.underline).grey) + helpers.trunc(("Authenticated as " + req.creds.email.underline).grey) //helpers.log(" Surge (surge.sh)".grey + (" - as " + req.creds.email.underline).grey) } helpers.hr() diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index c3dc47a..5cfe88b 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -3,7 +3,7 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ //if (req.argv["_"]["0"] === "whoami") { if (req.creds) { - helpers.log(" Logged in as " + req.creds.email.green + ".") + helpers.trunc(("Logged in as " + req.creds.email.underline + ".").grey) helpers.log() } else { helpers.log(" Not currently authenticated.") diff --git a/lib/surge.js b/lib/surge.js index 0db2920..6daa986 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -295,7 +295,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, tokencheck, email, auth, postAuth, + preAuth, creds, welcome, tokencheck, email, auth, postAuth, plans, card, setcard, space ] diff --git a/package.json b/package.json index e1b1901..9e032b0 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,11 @@ "author": "Brock Whitten ", "bin": "./lib/cli.js", "dependencies": { + "cli-table": "^0.3.1", + "cli-table2": "^0.2.0", "du": "0.1.0", "fstream-ignore": "1.0.2", - "inquirer": "^3.0.6", + "inquirer": "", "is-domain": "0.0.1", "minimist": "1.1.1", "moniker": "0.1.2", From 2c138ba9193e14b60a67a333d20d131e0ae965d6 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 19 Jan 2018 04:47:22 -0800 Subject: [PATCH 017/214] adjusted formatting --- lib/cli.js | 4 ++-- lib/middleware/auth.js | 8 ++++---- lib/middleware/deploy.js | 12 ++++++------ lib/middleware/domain.js | 2 +- lib/middleware/email.js | 1 + lib/middleware/ipaddress.js | 2 +- lib/middleware/list.js | 3 ++- lib/middleware/plan.js | 6 +++--- lib/middleware/project.js | 3 +-- lib/middleware/util/helpers.js | 7 ++++++- lib/middleware/util/skin.js | 4 ++-- lib/middleware/welcome.js | 2 +- lib/middleware/whoami.js | 20 ++++++++------------ lib/surge.js | 4 ++-- 14 files changed, 40 insertions(+), 38 deletions(-) diff --git a/lib/cli.js b/lib/cli.js index 28aee31..ee1a5d9 100755 --- a/lib/cli.js +++ b/lib/cli.js @@ -7,8 +7,8 @@ surge(process.argv.slice(2)) process.on('SIGINT', function() { console.log("\n") global.ponr == true - ? console.log(" Disconnected".green + "- Past point of no return, completing in background.".grey) - : console.log(" Aborted".yellow + " - Deployment not initiated.".grey) + ? console.log(" Disconnected".green + "- Expected to complete.".grey) + : console.log(" Aborted".yellow + " - Deployment not initiated.".grey) console.log() process.exit(1) }) diff --git a/lib/middleware/auth.js b/lib/middleware/auth.js index 8ee36ea..a4da3bb 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/auth.js @@ -20,7 +20,7 @@ module.exports = function(req, next, abort){ output: out, input: req.config.input }, function(err, password){ - if (password === undefined) return abort("Noot authenticated.".grey) + if (password === undefined) return abort("Not authenticated.".grey) helpers.fetchToken(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform)(req.email, password, function(err, obj){ if (err) { count++ @@ -45,19 +45,19 @@ module.exports = function(req, next, abort){ if (e) throw e if (r.statusCode == 201) { console.log() - console.log(" Password Recovery".yellow, "- reset instructions sent to", req.email.green) + helpers.trunc("Password Recovery".yellow + " - reset instructions sent to".grey, req.email.green) console.log() process.exit(1) } else { console.log() - console.log(" Oops".red, "- something went wrong trying to reset your password.") + helpers.trunc("Oops".red + " - something went wrong trying to reset your password.".grey) console.log() process.exit(1) } }) } else { console.log() - console.log(" Aborted".yellow + (" - No password reset sent to" + req.email.underline + ".").grey) + helpers.trunc("Aborted".yellow + (" - No password reset sent to " + req.email.underline + ".").grey) console.log() process.exit(1) } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index b99c86f..ceeb762 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -105,12 +105,12 @@ module.exports = function(req, next){ } else if (payload.hasOwnProperty("type") && payload.type === "collect") { - console.log("payload:collect", payload) + //console.log("payload:collect", payload) var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey helpers.log() if (payload.hasOwnProperty("perks")) { - helpers.log(msg += "\n\n Plan provides...".blue) + helpers.log(msg += "\n\n Includes...".blue) payload.perks.forEach(function(perk){ helpers.log((" - " + perk).blue) }) @@ -296,9 +296,9 @@ module.exports = function(req, next){ if (rsp.statusCode == 403) { helpers.log() if(rsp.headers.hasOwnProperty("reason")){ - helpers.log(" Aborted".yellow + " - " + rsp.headers["reason"]) + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) } else { - helpers.log(" Aborted".yellow + " - you do not have permission to publish to " + req.domain) + helpers.trunc("Aborted".yellow + " - you do not have permission to publish to " + req.domain) } helpers.log() process.exit(1) @@ -306,9 +306,9 @@ module.exports = function(req, next){ localCreds(req.argv.endpoint).set(null) helpers.log() if(rsp.headers.hasOwnProperty("reason")){ - helpers.log(" Aborted".yellow + " - " + rsp.headers["reason"]) + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) } else { - helpers.log(" Aborted".yellow + " - local token has expired and cleared. please try again.") + helpers.trunc("Aborted".yellow + " - local token has expired and cleared. please try again.") } helpers.log() process.exit(1) diff --git a/lib/middleware/domain.js b/lib/middleware/domain.js index 28d4a56..6591822 100644 --- a/lib/middleware/domain.js +++ b/lib/middleware/domain.js @@ -31,7 +31,7 @@ module.exports = function(req, next, abort){ output: req.config.output, input: req.config.input }, function(err, domain){ - if (domain === undefined) return abort("Please try again with a valid domain name.".grey) + if (domain === undefined) return abort("Publish not initiated.".grey) if (err || !helpers.validDomain(domain)) { console.log(" ", "Please enter valid domain name…".grey) return getDomain(domain) diff --git a/lib/middleware/email.js b/lib/middleware/email.js index 63bf74e..1353434 100644 --- a/lib/middleware/email.js +++ b/lib/middleware/email.js @@ -1,4 +1,5 @@ var pattern = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i +var helpers = require("./util/helpers") module.exports = function(req, next, abort){ var label = " email:".grey diff --git a/lib/middleware/ipaddress.js b/lib/middleware/ipaddress.js index 7a5d00f..b33a3eb 100644 --- a/lib/middleware/ipaddress.js +++ b/lib/middleware/ipaddress.js @@ -2,7 +2,7 @@ module.exports = function(req, next){ if (req.success === true) { console.log() - console.log(" Succes!".green + (" - Published to " + ("http://" + req.domain).underline).grey) + console.log(" Succes!".green + (" - Published to " + (req.domain).underline).grey) console.log() } else { console.log() diff --git a/lib/middleware/list.js b/lib/middleware/list.js index da7b7ce..bbfbb2b 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -21,7 +21,7 @@ module.exports = function(req, next){ //console.log() var table = new Table({ - head: ['REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], + //head: ['REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' @@ -50,6 +50,7 @@ module.exports = function(req, next){ table.push(row) }) + console.log() console.log(table.toString()) } else { diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 6f767bb..c0a5912 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -28,7 +28,7 @@ module.exports = function(req, next, abort){ } if (plan.current == true){ - title += " [ ★ ★ CURRENT ★ ★ ]" + title += " " + " ★ ★ CURRENT ★ ★ ".inverse } else { if (plan.trial_period_days){ title += " (" + plan.trial_period_days + " day trial)" @@ -40,7 +40,7 @@ module.exports = function(req, next, abort){ return { short: " ", value: plan, - name: " " + features.join("\n - ") + "\n" + name: " " + features.join("\n - ") + "\n" } } @@ -63,7 +63,7 @@ module.exports = function(req, next, abort){ // use message if the server gives us one args.message = req.plans.message - ? (req.plans.message.yellow + "\n") + ? (" " + req.plans.message.yellow + "\n") : ' ' // prompt user to choose a plan diff --git a/lib/middleware/project.js b/lib/middleware/project.js index 79c64f0..cc7c7e6 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/project.js @@ -31,8 +31,7 @@ module.exports = function(req, next, abort){ input: req.config.input }, function(err, projectPath){ if (projectPath === undefined) { - console.log() - return abort("publishing not initiated.") + return abort("Publishing not initiated.".grey) } if (!fs.existsSync(path.resolve(projectPath))){ diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index f54acff..b1b1118 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -105,6 +105,7 @@ exports.payment = function(req, stripe_pk, existing){ var abort = function(msg){ if (req.plan){ + console.log() try{ console.log(" " + "Aborted".yellow + " - You remain on the ".grey + req.subscription.plan.name.underline.grey + " plan.".grey) }catch(e) { @@ -227,10 +228,14 @@ exports.payment = function(req, stripe_pk, existing){ edit: true }, function(err, reply){ if (err){ + console.log() return abort("whatever") } - if (reply === undefined) return abort("Plan not changed.") + if (reply === undefined){ + console.log() + return abort("Plan not changed.") + } if (["Y", "y", "Yes", "yes"].indexOf(reply) !== -1){ return callback(null) } else { diff --git a/lib/middleware/util/skin.js b/lib/middleware/util/skin.js index 3088beb..15fbe16 100644 --- a/lib/middleware/util/skin.js +++ b/lib/middleware/util/skin.js @@ -6,8 +6,8 @@ module.exports = function(req, stack, abort){ abort = abort || function(msg){ console.log("\n") msg === null - ? console.log(" Aborted".yellow) - : console.log(" Aborted".yellow + " - ".grey + msg) + ? console.log(" Aborted".yellow) + : console.log(" Aborted".yellow + " - ".grey + msg) console.log() } diff --git a/lib/middleware/welcome.js b/lib/middleware/welcome.js index 9869490..1451ad8 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/welcome.js @@ -12,7 +12,7 @@ module.exports = function(req, next){ helpers.trunc("" + req.config.name.bold + "("+ req.config.platform +") - " + (req.config.platform || "surge.sh")) helpers.trunc("Powered by Surge".grey) } else { - helpers.trunc(("Authenticated as " + req.creds.email.underline).grey) + helpers.trunc(("Running as " + req.creds.email.underline).grey) //helpers.log(" Surge (surge.sh)".grey + (" - as " + req.creds.email.underline).grey) } helpers.hr() diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index 5cfe88b..a822b4f 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -1,17 +1,13 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ - //if (req.argv["_"]["0"] === "whoami") { - if (req.creds) { - helpers.trunc(("Logged in as " + req.creds.email.underline + ".").grey) - helpers.log() - } else { - helpers.log(" Not currently authenticated.") - helpers.log() - } + if (req.creds) { + helpers.trunc(("Logged in as " + req.creds.email.underline + ".").grey) + helpers.log() + } else { + helpers.trunc("Not currently authenticated.".grey) + helpers.log() + } - process.exit() - // } else { - // next() - // } + process.exit() } diff --git a/lib/surge.js b/lib/surge.js index 6daa986..0579644 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -211,8 +211,8 @@ module.exports = function(config){ var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, tokencheck, email, auth, postAuth, + whitelist, endpoint, pkg, help, version, + preAuth, creds, tokencheck, email, auth, postAuth, list, space ] return function(){ From 72cd482b3a54e9b28d918911d269aabc7b922fa2 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 19 Jan 2018 08:09:33 -0800 Subject: [PATCH 018/214] adds time ago in words --- lib/middleware/help.js | 2 +- lib/middleware/list.js | 2 +- lib/middleware/whitelist.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index bf47f1b..8b42b1f 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -18,7 +18,7 @@ module.exports = function(req, next){ .log(" -h, --help show this help message") .log() .log(" Shorthand usage:".grey) - .log(" surge [project path] [domain]") + .log(" surge ") .log() .log(" Additional commands:".grey) .log(" surge whoami show who you are logged in as") diff --git a/lib/middleware/list.js b/lib/middleware/list.js index bbfbb2b..c5e69ef 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -43,7 +43,7 @@ module.exports = function(req, next){ var row = [ perm || project.domain, - "3 days ago", + project.timeAgoInWords.grey, pn || "" ] diff --git a/lib/middleware/whitelist.js b/lib/middleware/whitelist.js index 5a09f7b..9e03d85 100644 --- a/lib/middleware/whitelist.js +++ b/lib/middleware/whitelist.js @@ -5,14 +5,14 @@ module.exports = function(req, next){ var args = []; for (param in req.argv) { - args.push(param); + args.push(param) } var filteredSet = args.filter(function(n){ return (commands.indexOf(n) === -1) }); if (filteredSet.length != 0) { helpers.log() - helpers.log(" surge: `--" + filteredSet[0] + "` is not a surge command.").hr() + helpers.trunc("Aborted - `" + filteredSet[0] + "` is not a surge command.").hr() } else { next() } From 23297383c6ec448fca465964b642dac411cc9322 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 3 Feb 2018 06:47:38 -0800 Subject: [PATCH 019/214] repairs basic tests --- lib/middleware/auth.js | 89 +++++------------- lib/middleware/creds.js | 2 +- lib/middleware/ipaddress.js | 2 +- lib/middleware/list.js | 11 ++- lib/middleware/login.js | 2 +- lib/middleware/logout.js | 2 +- lib/middleware/token.js | 4 +- lib/middleware/tokencheck.js | 2 + lib/middleware/util/creds.js | 1 - lib/middleware/util/helpers.js | 163 ++++++++++++++++++++++++++++++--- lib/middleware/welcome.js | 5 +- lib/middleware/whitelist.js | 4 +- lib/middleware/whoami.js | 2 +- lib/surge.js | 16 ++-- package.json | 2 +- test/actions.js | 10 +- test/basic.js | 73 +++++++-------- test/cname.js | 26 ++++-- test/publish.js | 22 ++--- test/teardown.js | 6 +- test/welcome.js | 8 +- 21 files changed, 278 insertions(+), 174 deletions(-) diff --git a/lib/middleware/auth.js b/lib/middleware/auth.js index a4da3bb..cde2e0f 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/auth.js @@ -6,80 +6,33 @@ var url = require("url") var parseUrl = require("url-parse-as-address") module.exports = function(req, next, abort){ - var count = 0 - var label = " password:".grey - - var auth = function(){ - var out = req.config.output - if (out) out.isTTY = false - - req.read({ - prompt: label, - silent: true, - edit: false, - output: out, - input: req.config.input - }, function(err, password){ - if (password === undefined) return abort("Not authenticated.".grey) - helpers.fetchToken(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform)(req.email, password, function(err, obj){ - if (err) { - count++ - if (err.hasOwnProperty("details") && err["details"].hasOwnProperty("email")) process.exit(1) - - if (count >=3) { - req.read({ - prompt: " forgot password?".grey, - default: "yes", - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input - }, function(err, reply){ - if (reply == "yes" || reply == "y" || reply == "Y") { - - var options = { - 'url': url.resolve(req.endpoint, "/token/reset/" + req.email), - 'method': 'post' - } - - request(options, function(e, r, obj){ - if (e) throw e - if (r.statusCode == 201) { - console.log() - helpers.trunc("Password Recovery".yellow + " - reset instructions sent to".grey, req.email.green) - console.log() - process.exit(1) - } else { - console.log() - helpers.trunc("Oops".red + " - something went wrong trying to reset your password.".grey) - console.log() - process.exit(1) - } - }) - } else { - console.log() - helpers.trunc("Aborted".yellow + (" - No password reset sent to " + req.email.underline + ".").grey) - console.log() - process.exit(1) - } + var authenticateAndSave = function(callback){ + helpers.loginForm(req, function(creds){ + req.creds = localCreds(req.endpoint).set(creds.email, creds.token) + return callback() + }) + } - }) - } else { - return auth() - } - } else { - req.creds = localCreds(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform).set(obj.email, obj.token) - return next() - } - }) + var accountOrAuthenticate = function(callback){ + helpers.fetchAccount(req.endpoint)(req.creds.email, req.creds.token, function(error, account){ + if (account){ + req.account = account + return callback() + } else { + return authenticateAndSave(function(callback){ + return accountOrAuthenticate(callback) + }) + } }) } - if (req.authed) { - //console.log(" token:".grey, "*****************".grey) - return next() + if (req.creds){ + return accountOrAuthenticate(next) } else { - return auth() + return authenticateAndSave(function(){ + return next() + }) } } diff --git a/lib/middleware/creds.js b/lib/middleware/creds.js index 7d37489..c02618d 100644 --- a/lib/middleware/creds.js +++ b/lib/middleware/creds.js @@ -5,6 +5,6 @@ var localCreds = require("./util/creds.js") var helpers = require("./util/helpers.js") module.exports = function(req, next){ - req.creds = localCreds(req.argv.endpoint || req.config.endpoint || "surge." + req.config.platform).get() + req.creds = localCreds(req.endpoint).get() next() } diff --git a/lib/middleware/ipaddress.js b/lib/middleware/ipaddress.js index b33a3eb..767426c 100644 --- a/lib/middleware/ipaddress.js +++ b/lib/middleware/ipaddress.js @@ -2,7 +2,7 @@ module.exports = function(req, next){ if (req.success === true) { console.log() - console.log(" Succes!".green + (" - Published to " + (req.domain).underline).grey) + console.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) console.log() } else { console.log() diff --git a/lib/middleware/list.js b/lib/middleware/list.js index c5e69ef..5d08046 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -1,12 +1,12 @@ var url = require("url") var request = require("request") - var Table = require("cli-table2") +var helpers = require("./util/helpers") module.exports = function(req, next){ var options = { - 'url': url.resolve(req.endpoint, '/list'), + 'url': url.resolve(req.endpoint.format(), '/list'), 'method': 'get', 'auth': { 'user': "token", @@ -50,11 +50,12 @@ module.exports = function(req, next){ table.push(row) }) - console.log() - console.log(table.toString()) + helpers.log() + helpers.log(table.toString()) } else { - console.log(" Empty".yellow, "- No Projects found.") + helpers.log() + helpers.trunc(("Empty").grey) } next() }) diff --git a/lib/middleware/login.js b/lib/middleware/login.js index ddc5efb..c30d888 100644 --- a/lib/middleware/login.js +++ b/lib/middleware/login.js @@ -3,7 +3,7 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ helpers.log() - helpers.trunc( "Success!".green + (" - Logged in as " + req.creds.email.underline + ".").grey) + helpers.trunc( "Success".green + (" - Logged in as " + req.creds.email.underline + ".").grey) next() //helpers.log(" token: ".grey + req.creds.token) diff --git a/lib/middleware/logout.js b/lib/middleware/logout.js index b4ec696..86f8dcb 100644 --- a/lib/middleware/logout.js +++ b/lib/middleware/logout.js @@ -3,7 +3,7 @@ var localCreds = require("./util/creds.js") var path = require("path") module.exports = function(req, next){ - var creds = localCreds(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform).set(null) + var creds = localCreds(req.endpoint).set(null) if (req.creds) { var filePath = path.join(process.env[(/^win/.test(process.platform)) ? 'USERPROFILE' : 'HOME'], ".netrc") diff --git a/lib/middleware/token.js b/lib/middleware/token.js index b538ba6..4580944 100644 --- a/lib/middleware/token.js +++ b/lib/middleware/token.js @@ -2,6 +2,8 @@ var path = require("path") var helpers = require("./util/helpers") module.exports = function(req, next){ - //helpers.log(" token: ".grey + req.creds.token) + //console.log(req.authed) + console.log() + helpers.trunc(req.creds.token.grey) next() } \ No newline at end of file diff --git a/lib/middleware/tokencheck.js b/lib/middleware/tokencheck.js index 1ae09e2..d46a611 100644 --- a/lib/middleware/tokencheck.js +++ b/lib/middleware/tokencheck.js @@ -8,6 +8,8 @@ var parseUrl = require("url-parse-as-address") module.exports = function(req, next){ if (req.creds) { req.authed = true + helpers.trunc(("As " + "brock@sintaxi.com".underline + " on " + "Student" + " plan.").grey) + helpers.log() next() // helpers.fetchToken(req.argv.endpoint)("token", req.creds.token, function(err, obj){ // if (err) { diff --git a/lib/middleware/util/creds.js b/lib/middleware/util/creds.js index 1e12de7..50a47d8 100644 --- a/lib/middleware/util/creds.js +++ b/lib/middleware/util/creds.js @@ -6,7 +6,6 @@ var url = require("url") var address = require("url-parse-as-address") module.exports = function(endpoint){ - var endpoint = address.parse(endpoint) var host = endpoint.host var getFile = function() { diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index b1b1118..348bd96 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -15,14 +15,7 @@ exports.read = read var sig = '[' + 'surge'.cyan + ']' sig = null -var smart = exports.smart = function(str){ - console.log(str) - return this.log(" " + str.length) -} -var trunc = exports.trunc = function(arg){ - return this.log(" " + arg) -} var log = exports.log = function(){ var args = Array.prototype.slice.call(arguments) @@ -32,11 +25,20 @@ var log = exports.log = function(){ return this }; -exports.hr = function(){ - this.log() - return this +var hr = exports.hr = function(){ + return console.log() }; +var smart = exports.smart = function(str){ + console.log(str) + return log(" " + str.length) +} + +var trunc = exports.trunc = function(arg){ + log(" " + arg) + return this +} + exports.stacktrace = function(str, options){ var lineno = options.lineno || -1 @@ -63,10 +65,37 @@ exports.stacktrace = function(str, options){ } +var fetchAccount = exports.fetchAccount = function(endpoint){ + + return function(email, pass, callback){ + var options = { + 'url': url.resolve(endpoint.format(), '/account'), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': pass || "", + 'sendImmediately': true + } + } + request(options, function(e, r, obj){ + if (e) throw e + + if (r.statusCode == 200){ + return callback(null, JSON.parse(obj)) + } else { + return callback(JSON.parse(obj)) + } + }) + } +} + + var fetchToken = exports.fetchToken = function(endpoint){ + return function(email, pass, callback){ + var options = { - 'url': url.resolve(urlAddy.parse(endpoint).format(), '/token'), + 'url': url.resolve(endpoint.format(), '/token'), 'method': 'post', 'auth': { 'user': email, @@ -74,6 +103,7 @@ var fetchToken = exports.fetchToken = function(endpoint){ 'sendImmediately': true } } + request(options, function(e, r, obj){ if (e) throw e @@ -99,6 +129,117 @@ var fetchToken = exports.fetchToken = function(endpoint){ } } +var pattern = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i + +exports.loginForm = function(req, callback){ + var count = 0 + + var abort = function(msg){ + console.log() + console.log(" " + "Aborted".yellow + (" - " + msg).grey) + console.log() + process.exit(1) + } + + var promptEmail = function(suggestion, cb){ + req.read({ + silent: false, + prompt: " email:".grey, + default: suggestion, + edit: true, + terminal: req.config.terminal, + output: req.config.output, + input: req.config.input + }, function(err, answer){ + if (answer === undefined) { + console.log() + return abort("Not authenticated.".grey) + } + if (!pattern.test(answer)){ + return promptEmail(answer, cb) + } else { + req.email = answer + return cb() + } + }) + } + + + var promptPassword = function(cb){ + var out = req.config.output + if (out) out.isTTY = false + + read({ + prompt: " password:".grey, + silent: true, + edit: false, + output: out, + input: req.config.input + }, function(err, password){ + if (password === undefined){ + console.log() + return abort("Not authenticated.".grey) + } + fetchToken(req.endpoint)(req.email, password, function(err, obj){ + if (err) { + count++ + if (err.hasOwnProperty("details") && err["details"].hasOwnProperty("email")) process.exit(1) + if (count >=3) { + req.read({ + prompt: " forgot password?".grey, + default: "yes", + terminal: req.config.terminal, + output: req.config.output, + input: req.config.input + }, function(err, reply){ + if (reply == "yes" || reply == "y" || reply == "Y") { + var options = { + 'url': url.resolve(req.endpoint, "/token/reset/" + req.email), + 'method': 'post' + } + request(options, function(e, r, obj){ + if (e) throw e + if (r.statusCode == 201) { + console.log() + trunc("Password Recovery".yellow + " - reset instructions sent to".grey, req.email.green) + console.log() + process.exit(1) + } else { + console.log() + trunc("Oops".red + " - something went wrong trying to reset your password.".grey) + console.log() + process.exit(1) + } + }) + } else { + console.log() + trunc("Aborted".yellow + (" - No password reset sent to " + req.email.underline + ".").grey) + console.log() + process.exit(1) + } + }) + } else { + return promptPassword() + } + } else { + // req.creds = localCreds(req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform).set(obj.email, obj.token) + return callback({ + email: obj.email, + token: obj.token + }) + } + }) + }) + } + + promptEmail("", function(){ + promptPassword(function(token){ + console.log("token", token) + console.log("hi", req.email) + }) + }) + +} exports.payment = function(req, stripe_pk, existing){ diff --git a/lib/middleware/welcome.js b/lib/middleware/welcome.js index 1451ad8..ab0faf2 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/welcome.js @@ -1,5 +1,4 @@ var helpers = require("./util/helpers.js") - module.exports = function(req, next){ if (req.creds == null) { helpers.trunc(("Welcome to " + (req.config.name || "Surge").underline + "!").blue + (" (" + req.config.platform +")").grey) @@ -12,10 +11,10 @@ module.exports = function(req, next){ helpers.trunc("" + req.config.name.bold + "("+ req.config.platform +") - " + (req.config.platform || "surge.sh")) helpers.trunc("Powered by Surge".grey) } else { - helpers.trunc(("Running as " + req.creds.email.underline).grey) + //helpers.trunc(("Running as " + req.creds.email.underline).grey) //helpers.log(" Surge (surge.sh)".grey + (" - as " + req.creds.email.underline).grey) } - helpers.hr() + //helpers.hr() } next() } \ No newline at end of file diff --git a/lib/middleware/whitelist.js b/lib/middleware/whitelist.js index 9e03d85..ac26c46 100644 --- a/lib/middleware/whitelist.js +++ b/lib/middleware/whitelist.js @@ -1,6 +1,8 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ + //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform + var commands = ['h','b', 'd','e','a','r','v','V','p','endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'build','$0','_']; var args = []; @@ -14,6 +16,6 @@ module.exports = function(req, next){ helpers.log() helpers.trunc("Aborted - `" + filteredSet[0] + "` is not a surge command.").hr() } else { - next() + return next() } } diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index a822b4f..7e7ac61 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -2,7 +2,7 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ if (req.creds) { - helpers.trunc(("Logged in as " + req.creds.email.underline + ".").grey) + helpers.trunc(req.creds.email.underline.grey) helpers.log() } else { helpers.trunc("Not currently authenticated.".grey) diff --git a/lib/surge.js b/lib/surge.js index 0579644..f51ac67 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -112,7 +112,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, tokencheck, email, auth, postAuth, + preAuth, creds, auth, postAuth, token, space ] return function(){ @@ -131,7 +131,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, email, auth, postAuth, + preAuth, auth, postAuth, login, space ] return function(){ @@ -174,7 +174,7 @@ module.exports = function(config){ var postPublish = hooks.postPublish || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, tokencheck, email, auth, postAuth, shorthand, + preAuth, creds, welcome, auth, postAuth, shorthand, preProject, project, postProject, preSize, size, postSize, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, @@ -194,7 +194,7 @@ module.exports = function(config){ var hooks = hooks || {} var onion = [ whitelist, endpoint, pkg, help, version, space, - creds, tokencheck, whoami + creds, whoami ] return function(){ var argv = parse(arguments[arguments.length -1]) @@ -206,13 +206,17 @@ module.exports = function(config){ } } + var log = function(req, next){ + return next() + } + surge.list = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, - preAuth, creds, tokencheck, email, auth, postAuth, + preAuth, creds, welcome, auth, postAuth, shorthand, list, space ] return function(){ @@ -231,7 +235,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, tokencheck, email, auth, postAuth, + preAuth, creds, welcome, auth, postAuth, shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domain, teardown, space ] diff --git a/package.json b/package.json index 9e032b0..b04c744 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ ], "scripts": { "test": "mocha ./test/basic.js -t 5000", - "test:local": "ENDPOINT='localhost:5001' ./node_modules/.bin/mocha" + "test:local": "ENDPOINT='surge.lvh.me' mocha ./test/basic -t 4000" }, "repository": { "type": "git", diff --git a/test/actions.js b/test/actions.js index e283495..7d9f820 100644 --- a/test/actions.js +++ b/test/actions.js @@ -30,7 +30,7 @@ describe('actions', function (done) { var commander = 'node ./test/fixtures/bin/commander-no-args.js' nixt({ colors: false }) .exec(commander + ' logout') - .run(commander + ' up') + .run(commander + ' publish') .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .on(/.*domain:.*/).respond('\n') @@ -49,8 +49,7 @@ describe('actions', function (done) { .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { - should(result.stdout).match(/Logged in as brock/) - should(result.stdout).match(/surge.sh/) + should(result.stdout).match(/Success - Logged in as brock+test@chloi.io/) }) .exec(commander + ' logout') .end(done) @@ -62,8 +61,7 @@ describe('actions', function (done) { .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { - should(result.stdout).match(/Logged in as brock/) - should(result.stdout).match(/surge.sh/) + should(result.stdout).match(/Success - Logged in as brock+test@chloi.io/) }) .exec(minimist + ' logout') .end(done) @@ -75,7 +73,7 @@ describe('actions', function (done) { .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { - should(result.stdout).match(/Logged in as brock/) + should(result.stdout).match(/Success - Logged in as brock+test@chloi.io/) should(result.stdout).match(/surge.sh/) }) .exec(yargs + ' logout') diff --git a/test/basic.js b/test/basic.js index 78155f2..da710ca 100644 --- a/test/basic.js +++ b/test/basic.js @@ -12,8 +12,8 @@ var opts = { var testts = (new Date()).getTime() var testid = "cli-test-" + testts -var user = "brock+test@chloi.io" -var pass = "12345" +var user = "brock"+ testid + "@chloi.io" +var pass = testid describe("surge " + testid + " using " + user, function () { @@ -22,7 +22,7 @@ describe("surge " + testid + " using " + user, function () { nixt({ colors: false }) .run(surge + 'logout') // Logout again afterwards .expect(function (result) { - should(result.stdout).match(/Token removed from /) + should(result.stdout).match(/(Not currently authenticated)|(Token removed from )/) }).end(done) }) }) @@ -33,7 +33,7 @@ describe("surge " + testid + " using " + user, function () { nixt({ colors: false }) .run(surge + '--foo') .expect(function (result) { - should(result.stdout).match(/--foo/) + should(result.stdout).match(/foo/) should(result.stdout).match(/not/) }).end(done) }) @@ -62,25 +62,24 @@ describe("surge " + testid + " using " + user, function () { var resultedDomain it('should create project', function (done) { - this.timeout(9999) + this.timeout(5000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge) .on(/.*email:.*/).respond(user + '\n') .on(/.*password:.*/).respond(pass + '\n') - .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*project:.*/).respond('./test/fixtures/projects/hello-world\n') .on(/.*domain:.*/).respond(domain + "\n") .expect(function (result) { should(result.stdout).not.match(pass) - should(result.stdout).match(/1 file/) - should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) - resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + should(result.stdout).match(new RegExp("Success! - Published to " + domain)) + resultedDomain = result.stdout.split('Success! - Published to')[1].trim() resultedDomain.should.equal(domain) }).end(done) }) it('should have project in list', function (done) { - this.timeout(9999) + this.timeout(5000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge + 'list') @@ -92,25 +91,24 @@ describe("surge " + testid + " using " + user, function () { }) it('should update project', function (done) { - this.timeout(9999) + this.timeout(5000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge) .on(/.*email:.*/).respond(user + '\n') .on(/.*password:.*/).respond(pass + '\n') - .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*project:.*/).respond('./test/fixtures/projects/hello-world\n') .on(/.*domain:.*/).respond(domain + "\n") .expect(function (result) { should(result.stdout).not.match(pass) - should(result.stdout).match(/1 file/) - should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) - resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + should(result.stdout).match(new RegExp("Success! - Published to " + domain)) + resultedDomain = result.stdout.split('Success! - Published to')[1].trim() resultedDomain.should.equal(domain) }).end(done) }) it('should teardown project', function (done) { - this.timeout(9999) + this.timeout(5000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge + 'teardown') @@ -126,7 +124,7 @@ describe("surge " + testid + " using " + user, function () { }) it('should no longer have project in list', function (done) { - this.timeout(9999) + this.timeout(5000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge + 'list') @@ -140,7 +138,7 @@ describe("surge " + testid + " using " + user, function () { }) describe('auth', function (done) { - this.timeout(9999) + this.timeout(1500) it('should be able to login', function (done) { nixt({ colors: false }) @@ -234,22 +232,22 @@ describe("surge " + testid + " using " + user, function () { }) it('should create second project using session', function (done) { - this.timeout(9999) + this.timeout(5000) nixt(opts) .run(surge) - .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*project:.*/).respond('./test/fixtures/projects/hello-world\n') .on(/.*domain:.*/).respond(domain + "\n") .expect(function (result) { should(result.stdout).not.match(pass) - should(result.stdout).match(/1 file/) - should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) - resultedDomain = result.stdout.split('Project is published and running at')[1].trim() - resultedDomain.should.equal(domain) + should(result.stdout).match(new RegExp("Success")) + // should(result.stdout).match(domain) + // resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + // resultedDomain.should.equal(domain) }).end(done) }) it('should have project in list', function (done) { - this.timeout(9999) + this.timeout(2500) nixt(opts) .run(surge + 'list') .expect(function (result) { @@ -258,22 +256,21 @@ describe("surge " + testid + " using " + user, function () { }) it('should update project', function (done) { - this.timeout(9999) + this.timeout(2500) nixt(opts) .run(surge) - .on(/.*project path:.*/).respond('./test/fixtures/projects/hello-world\n') + .on(/.*project:.*/).respond('./test/fixtures/projects/hello-world\n') .on(/.*domain:.*/).respond(domain + "\n") .expect(function (result) { should(result.stdout).not.match(pass) - should(result.stdout).match(/1 file/) - should(result.stdout).match(new RegExp("Success! Project is published and running at " + domain)) - resultedDomain = result.stdout.split('Project is published and running at')[1].trim() + should(result.stdout).match(new RegExp("Success! - Published to " + domain)) + resultedDomain = result.stdout.split('Success! - Published to')[1].trim() resultedDomain.should.equal(domain) }).end(done) }) it('should teardown project', function (done) { - this.timeout(9999) + this.timeout(2500) nixt(opts) .run(surge + 'teardown') .on(/.*domain:.*/).respond(domain + '\n') @@ -286,7 +283,7 @@ describe("surge " + testid + " using " + user, function () { }) it('should no longer have project in list', function (done) { - this.timeout(9999) + this.timeout(2500) nixt(opts) .run(surge + 'list') .expect(function (result) { @@ -297,22 +294,18 @@ describe("surge " + testid + " using " + user, function () { }) describe('token', function () { - it('`surge token`', function (done) { - this.timeout(5000) - + this.timeout(1500) nixt(opts) .run(surge + 'token') .expect(function (result) { - should(result.stdout).match(/.*email: brock\+test@chloi\.io/) - should(result.stdout).match(/.*token:*./) - }) - .end(done) + should(result.stdout).match(/([\w]{32})/) + }).end(done) }) // Failing // it('should not list the token twice', function (done) { - // this.timeout(5000) + // this.timeout(1500) // // nixt(opts) // .run(surge + 'token') diff --git a/test/cname.js b/test/cname.js index 4ada64f..c0fc596 100644 --- a/test/cname.js +++ b/test/cname.js @@ -7,7 +7,7 @@ var endpoint = typeof process.env.ENDPOINT !== 'undefined' ? ' -e ' + process.en var user = "brock+test@chloi.io" var pass = "12345" -var cmd = 'node ' + pkg.bin + endpoint +var surge = 'node ' + pkg.bin + endpoint var opts = { @@ -21,13 +21,25 @@ describe('crud', function (done) { }) + it('work', function (done) { + this.timeout(5000) + nixt(opts) + .exec(surge + 'logout') + .on(/.*email:.*/).respond(user + "\n") + .on(/.*password:.*/).respond(pass + "\n") + .run(surge + './test/fixtures/projects/cname-world') + .expect(function (result) { + should(/Success/).match(/Success/) + }).end(done) + }) + it('should access cname file when no arg present', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .exec(surge + 'logout') .on(/.*email:.*/).respond(user + "\n") - .on(/.*password:.*/).respond(pass "\n") - .run(surge + './test/fixtures/projects/hello-cname') + .on(/.*password:.*/).respond(pass + "\n") + .run(surge + './test/fixtures/projects/cname-world') .expect(function (result) { should(result.stdout).match(/2 file/) should(result.stdout).match(/Success! Project is published and running at cli-test-2/) @@ -35,7 +47,7 @@ describe('crud', function (done) { }) it('`surge` with CNAME file and protocol', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + './test/fixtures/cli-test-3.surge.sh') .expect(function (result) { @@ -45,7 +57,7 @@ describe('crud', function (done) { .end(done) }) it('`surge` with CNAME file and subdomain', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + './test/fixtures/cli-test-4.surge.sh') .expect(function (result) { @@ -55,7 +67,7 @@ describe('crud', function (done) { .end(done) }) it('Should let `surge --domain` override CNAME', function (done) { - this.timeout(25000) + this.timeout(5000) var subdomain = '' diff --git a/test/publish.js b/test/publish.js index 69e8b63..4f1b451 100644 --- a/test/publish.js +++ b/test/publish.js @@ -12,7 +12,7 @@ var opts = { describe('publish', function (done) { before(function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + 'logout') // Logout before the test starts @@ -20,7 +20,7 @@ describe('publish', function (done) { }) it('Run `surge` to login and publish', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge) .on(/.*email:.*/).respond('brock+test@chloi.io\n') @@ -35,7 +35,7 @@ describe('publish', function (done) { .end(done) }) it('Run `surge` when already logged in', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge) .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') @@ -47,7 +47,7 @@ describe('publish', function (done) { .end(done) }) it('`surge`', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + './test/fixtures/cli-test.surge.sh cli-test.surge.sh') .expect(function (result) { @@ -57,7 +57,7 @@ describe('publish', function (done) { .end(done) }) it('`surge ./`', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + './test/fixtures/cli-test.surge.sh') @@ -69,7 +69,7 @@ describe('publish', function (done) { .end(done) }) it('`surge --project`', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + '--project ./test/fixtures/cli-test.surge.sh') @@ -81,7 +81,7 @@ describe('publish', function (done) { .end(done) }) it('`surge --domain`', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + '--domain cli-test.surge.sh') @@ -94,7 +94,7 @@ describe('publish', function (done) { .end(done) }) it('`surge --project --domain`', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + '--domain cli-test.surge.sh --project ./test/fixtures/cli-test.surge.sh') @@ -105,7 +105,7 @@ describe('publish', function (done) { .end(done) }) it('Should not publish a project a nonexistent directory', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + '--project ./test/fixtures/cli-test-0.surge.sh') @@ -117,7 +117,7 @@ describe('publish', function (done) { .end(done) }) it('Should not publish a project it doesn’t have access to', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + './test/fixtures/cli-test.surge.sh cli-test-5.surge.sh') .expect(function (result) { @@ -129,7 +129,7 @@ describe('publish', function (done) { }) after(function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + 'logout') // Logout after the test is over diff --git a/test/teardown.js b/test/teardown.js index a84f5d0..fd2c3df 100644 --- a/test/teardown.js +++ b/test/teardown.js @@ -14,14 +14,14 @@ describe('teardown', function () { var subdomain = '' before(function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge) .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') - .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') + .on(/.*project:.*/).respond('./test/fixtures/cli-test.surge.sh\n') .on(/.*domain:.*/).respond('\n') .expect(function (result) { subdomain = result.stdout.split('Project is published and running at')[1].trim() @@ -30,7 +30,7 @@ describe('teardown', function () { }) it('`surge teardown`', function (done) { - this.timeout(25000) + this.timeout(5000) nixt(opts) .run(surge + 'teardown') diff --git a/test/welcome.js b/test/welcome.js index 927c42d..e0fc897 100644 --- a/test/welcome.js +++ b/test/welcome.js @@ -18,33 +18,31 @@ describe('welcome message', function (done) { }) it('Run `surge`', function (done) { - this.timeout(15000) + this.timeout(1500) nixt(opts) .run(surge) .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { should(result.stdout).match(/Welcome/) - should(result.stdout).match(/Surge/) }) .end(done) }) it('Run `surge login` when already logged in', function (done) { - this.timeout(15000) + this.timeout(1500) nixt(opts) .run(surge + 'login') .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') .expect(function (result) { - should(result.stdout).match(/Surge/) should(result.stdout).match(/brock\+test@chloi\.io/) }) .end(done) }) it('Run `surge login`', function (done) { - this.timeout(15000) + this.timeout(1500) nixt(opts) .exec(surge + 'logout') .run(surge + 'login') From 945a7cfee4b4e39b9ebf45df30d8d0f58b0ffdd3 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 4 Feb 2018 06:57:16 -0800 Subject: [PATCH 020/214] shows auth info --- lib/middleware/card.js | 2 +- lib/middleware/deploy.js | 2 +- lib/middleware/domain.js | 2 +- lib/middleware/help.js | 14 ++++++------- lib/middleware/list.js | 9 ++------ lib/middleware/log.js | 1 - lib/middleware/logout.js | 2 +- lib/middleware/plan.js | 4 +--- lib/middleware/plus.js | 24 +++++++++++---------- lib/middleware/project.js | 4 ++-- lib/middleware/setcard.js | 9 ++++---- lib/middleware/subscribe.js | 13 ++++++------ lib/middleware/teardown.js | 2 +- lib/middleware/util/helpers.js | 15 ++++++++++++-- lib/middleware/whoami.js | 2 +- lib/surge.js | 38 ++++++++++++++++++++-------------- test/basic.js | 6 +++--- 17 files changed, 82 insertions(+), 67 deletions(-) diff --git a/lib/middleware/card.js b/lib/middleware/card.js index 53695b5..52c8f6b 100644 --- a/lib/middleware/card.js +++ b/lib/middleware/card.js @@ -2,7 +2,7 @@ var helpers = require("./util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ - console.log() + helpers.space() helpers.payment(req, req.plans.stripe_pk, req.plans.card || null)(function(token){ req.paymentToken = token next() diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index ceeb762..9d458d5 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -298,7 +298,7 @@ module.exports = function(req, next){ if(rsp.headers.hasOwnProperty("reason")){ helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) } else { - helpers.trunc("Aborted".yellow + " - you do not have permission to publish to " + req.domain) + helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) } helpers.log() process.exit(1) diff --git a/lib/middleware/domain.js b/lib/middleware/domain.js index 6591822..b76300d 100644 --- a/lib/middleware/domain.js +++ b/lib/middleware/domain.js @@ -31,7 +31,7 @@ module.exports = function(req, next, abort){ output: req.config.output, input: req.config.input }, function(err, domain){ - if (domain === undefined) return abort("Publish not initiated.".grey) + if (domain === undefined) return abort("Not initiated.".grey) if (err || !helpers.validDomain(domain)) { console.log(" ", "Please enter valid domain name…".grey) return getDomain(domain) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 8b42b1f..7e672ba 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -4,29 +4,29 @@ module.exports = function(req, next){ if (req.argv.help || req.argv.h) { helpers .log() - .log(" Surge".bold, "– Single-command web publishing.", ("(v" + req.pkg.version + ")"). grey) + .log(" Surge".bold, "– Single-command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) .log() .log(" Usage:".grey) - .log(" surge [options]") + .log(" surge ") .log() .log(" Options:".grey) - .log(" -p, --project path to projects asset directory (./)") - .log(" -d, --domain domain of your project (."+ req.config.platform +")") .log(" -a, --add adds user to list of collaborators (email address)") .log(" -r, --remove removes user from list of collaborators (email address)") .log(" -V, --version show the version number") .log(" -h, --help show this help message") .log() - .log(" Shorthand usage:".grey) - .log(" surge ") - .log() .log(" Additional commands:".grey) .log(" surge whoami show who you are logged in as") .log(" surge logout expire local token") .log(" surge login only performs authentication step") .log(" surge list list all domains you have access to") .log(" surge teardown tear down a published project") + .log(" surge plan set account plan") .log() + // .log(" Examples:".grey) + // .log(" surge ./www example.com") + // .log(" surge .") + // .log() .log(" Guides:".grey) .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey) .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 5d08046..0c90283 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -32,7 +32,6 @@ module.exports = function(req, next){ if (list.length != 0) { list.forEach(function(project){ var perm = project.rev ? (project.rev + " ").grey + project.domain : "" - if (project.planName) { if (project.planName.indexOf("Standard") !== -1){ var pn = project.planName.grey @@ -40,21 +39,17 @@ module.exports = function(req, next){ var pn = project.planName.blue } } - var row = [ perm || project.domain, project.timeAgoInWords.grey, pn || "" ] - table.push(row) }) - - helpers.log() + helpers.space() helpers.log(table.toString()) - } else { - helpers.log() + helpers.space() helpers.trunc(("Empty").grey) } next() diff --git a/lib/middleware/log.js b/lib/middleware/log.js index f59c71d..e31c507 100644 --- a/lib/middleware/log.js +++ b/lib/middleware/log.js @@ -1,5 +1,4 @@ module.exports = function(req, next){ console.log(req.argv) - console.log(req.args) next() } \ No newline at end of file diff --git a/lib/middleware/logout.js b/lib/middleware/logout.js index 86f8dcb..7e37cee 100644 --- a/lib/middleware/logout.js +++ b/lib/middleware/logout.js @@ -9,7 +9,7 @@ module.exports = function(req, next){ var filePath = path.join(process.env[(/^win/.test(process.platform)) ? 'USERPROFILE' : 'HOME'], ".netrc") helpers.trunc(("Success").green + (" - Token removed from " + filePath.underline + " file.").grey) } else { - helpers.trunc("Not currently authenticated.".grey) + helpers.trunc("Not Authenticated.".grey) } next() diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index c0a5912..17dd854 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -62,9 +62,7 @@ module.exports = function(req, next, abort){ } // use message if the server gives us one - args.message = req.plans.message - ? (" " + req.plans.message.yellow + "\n") - : ' ' + args.message = req.plans.message ? (" " + req.plans.message.yellow + "\n") : ' ' // prompt user to choose a plan inquirer.prompt([args]).then(function (answers) { diff --git a/lib/middleware/plus.js b/lib/middleware/plus.js index 91fdf72..0ef6bc3 100644 --- a/lib/middleware/plus.js +++ b/lib/middleware/plus.js @@ -27,7 +27,7 @@ module.exports = function(req, next, abort){ var msg = " Project requires the ".blue + payload.plan.name.yellow + " plan. ".blue + ("$" + (payload.plan.amount / 100) + "/mo").yellow + " (cancel anytime).".blue - helpers.log() + helpers.space() if (payload.hasOwnProperty("perks")) { helpers.log(msg += " This plan provides...".blue) payload.perks.forEach(function(perk){ @@ -53,20 +53,22 @@ module.exports = function(req, next, abort){ } }, function(e,r,b){ if (r.statusCode == 201) { - if (token === null) console.log() + if (token === null){ + helpers.space() + } var sub = JSON.parse(b) - console.log(" plan:".grey, sub.plan.name) - console.log() - console.log((" You are now upgraded to " + sub.plan.name + "!").green) - console.log() + helpers.log(" plan: ".grey + sub.plan.name) + helpers.space() + helpers.log((" You are now upgraded to " + sub.plan.name + "!").green) + helpers.space() } else if (r.statusCode == 200) { var sub = JSON.parse(b) - console.log(" plan:".grey, sub.plan.name) - console.log() - console.log((" No charge created. You are already upgraded to " + sub.plan.name + "!").green) - console.log() + helpers.log(" plan:".grey, sub.plan.name) + helpers.space() + helpers.trunc(("No charge created. You are already upgraded to " + sub.plan.name + "!").green) + helpers.space() } else { - console.log(r.statusCode) + helpers.trunc(r.statusCode) } }) }) diff --git a/lib/middleware/project.js b/lib/middleware/project.js index cc7c7e6..39a7bc8 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/project.js @@ -13,9 +13,9 @@ module.exports = function(req, next, abort){ helpers.log(" project:".grey, req.project) next() } else { - helpers.log() + helpers.space() helpers.trunc("Aborted".yellow + " - No such file or directory: ".grey + req.project.red) - helpers.log() + helpers.space() process.exit(1) } }) diff --git a/lib/middleware/setcard.js b/lib/middleware/setcard.js index 49a70d3..53e35b0 100644 --- a/lib/middleware/setcard.js +++ b/lib/middleware/setcard.js @@ -1,17 +1,18 @@ var request = require("request") var url = require("url") +var helpers = require("./util/helpers") module.exports = function(req, next, abort){ if (!req.paymentToken){ - console.log() + helpers.log() if (req.card){ - console.log(" Success".green + " - Using existing card.".grey) + helpers.trunc("Success".green + " - Using existing card.".grey) } else { - console.log(" Aborted".yellow + " - No card set.".grey) + helpers.trunc("Aborted".yellow + " - No card set.".grey) } - console.log() + helpers.space() } else { var fields = {} diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js index bc1ff10..5e3e170 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/subscribe.js @@ -2,6 +2,7 @@ var request = require("request") var url = require("url") var path = require("path") +var helpers = require("./util/helpers") module.exports = function(req, next, abort){ @@ -29,13 +30,13 @@ module.exports = function(req, next, abort){ }, function(e,r,b){ if ([200,201].indexOf(r.statusCode) !== -1) { var sub = JSON.parse(b) - console.log() - console.log(" Success".green + (" - " + sub.msg).grey) - console.log() + helpers.space() + helpers.trunc("Success".green + (" - " + sub.msg).grey) + helpers.space() } else { - console.log() - console.log((" Error: " + r.statusCode).red) - console.log() + helpers.space() + helpers.trunc(("Error: " + r.statusCode).red) + helpers.space() } }) diff --git a/lib/middleware/teardown.js b/lib/middleware/teardown.js index 0e41b6d..f5ded28 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/teardown.js @@ -25,7 +25,7 @@ module.exports = function(req, next, abort){ if (r.statusCode == 200 || r.statusCode == 204 || r.statusCode == 210) { helpers.log() - helpers.trunc("Success".green + (" - " + domain + " has been removed.").grey) + helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey) helpers.log() process.exit() } else if (r.statusCode == 403) { diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 348bd96..06d5b31 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -5,8 +5,9 @@ var localCreds = require("./creds.js") var os = require('os') var url = require("url") var urlAddy = require("url-parse-as-address") -var read = require("read") -var isDomain = require("is-domain") +var read = require("read") +var isDomain = require("is-domain") +var s = 0 exports.read = read @@ -17,11 +18,19 @@ sig = null +var space = exports.space = function(){ + if (s === 0){ + s++ + console.log() + } +} + var log = exports.log = function(){ var args = Array.prototype.slice.call(arguments) args.unshift(sig) args = args.filter(function(n){ return n != undefined }); console.log.apply(console, args) + s = 0 return this }; @@ -31,11 +40,13 @@ var hr = exports.hr = function(){ var smart = exports.smart = function(str){ console.log(str) + s = 0 return log(" " + str.length) } var trunc = exports.trunc = function(arg){ log(" " + arg) + s = 0 return this } diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index 7e7ac61..9087681 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -5,7 +5,7 @@ module.exports = function(req, next){ helpers.trunc(req.creds.email.underline.grey) helpers.log() } else { - helpers.trunc("Not currently authenticated.".grey) + helpers.trunc("Not Authenticated".grey) helpers.log() } diff --git a/lib/surge.js b/lib/surge.js index f51ac67..44a8d3b 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -42,11 +42,15 @@ var subscribe = require("./middleware/subscribe") var ssl = require("./middleware/ssl") var log = require("./middleware/log") +var helpers = require('./middleware/util/helpers') + + + var exitifcurrentplan = function(req, next){ if (req.plans.current && req.plans.current.id === req.selectedPlan.id){ - console.log(" " + "Success".green + (" - You remain on the " + req.plans.current.name.underline + " plan.").grey) - console.log() + helpers.trunc("Success".green + (" - You remain on the " + req.plans.current.name.underline + " plan.").grey) + helpers.space() process.exit() }else{ return next() @@ -54,7 +58,10 @@ var exitifcurrentplan = function(req, next){ } -var space = function(req, next){ console.log(); next() } +var space = function(req, next){ + helpers.space() + next() +} var parse = function(arg){ if(arg.hasOwnProperty("parent") && arg.parent.hasOwnProperty("rawArgs")){ @@ -87,6 +94,13 @@ module.exports = function(config){ default: { e: ep } } + var authInfo = function(req, next){ + helpers.space() + helpers.trunc(("Running as " + req.account.email.underline).grey) + helpers.space() + return next() + } + var surge = function(args){ // will be one of: // commander, yargs, process.argv.split(2), OR minimist @@ -174,7 +188,7 @@ module.exports = function(config){ var postPublish = hooks.postPublish || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, auth, postAuth, shorthand, + preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, preProject, project, postProject, preSize, size, postSize, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, @@ -206,16 +220,12 @@ module.exports = function(config){ } } - var log = function(req, next){ - return next() - } - surge.list = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, + whitelist, endpoint, pkg, help, version, space, preAuth, creds, welcome, auth, postAuth, shorthand, list, space ] @@ -235,7 +245,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, auth, postAuth, + preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domain, teardown, space ] @@ -275,11 +285,9 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, tokencheck, email, auth, postAuth, + preAuth, creds, auth, postAuth, shorthand, discovery.setDomainFromArgs, - //subscription, - plans, plan, - exitifcurrentplan, + plans, plan, exitifcurrentplan, payment, subscribe, space ] @@ -299,7 +307,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, tokencheck, email, auth, postAuth, + preAuth, creds, welcome, auth, postAuth, plans, card, setcard, space ] diff --git a/test/basic.js b/test/basic.js index da710ca..19a4abf 100644 --- a/test/basic.js +++ b/test/basic.js @@ -22,7 +22,7 @@ describe("surge " + testid + " using " + user, function () { nixt({ colors: false }) .run(surge + 'logout') // Logout again afterwards .expect(function (result) { - should(result.stdout).match(/(Not currently authenticated)|(Token removed from )/) + should(result.stdout).match(/(Not Authenticated)|(Token removed from )/) }).end(done) }) }) @@ -156,7 +156,7 @@ describe("surge " + testid + " using " + user, function () { nixt({ colors: false }) .run(surge + 'whoami') .expect(function (result) { - should(result.stdout).match(/Logged in as brock/) + should(result.stdout).match(new RegExp(user)) }).end(done) }) @@ -172,7 +172,7 @@ describe("surge " + testid + " using " + user, function () { nixt({ colors: false }) .run(surge + 'whoami') .expect(function (result) { - should(result.stdout).match(/Not currently authenticated/) + should(result.stdout).match(/Not Authenticated/) }).end(done) }) From 87d5928d55be8260e6f31aa8dbd395f33e7aaac1 Mon Sep 17 00:00:00 2001 From: alex0112 Date: Thu, 8 Feb 2018 19:25:45 -0700 Subject: [PATCH 021/214] Changed 'you' to 'your' in help file --- lib/middleware/help.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index bf47f1b..e5774a2 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -32,7 +32,7 @@ module.exports = function(req, next){ .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) .log(" Additional help " + "surge.sh/help".underline.grey) .log() - .log(" When in doubt, run ".grey + "surge".green.underline + " from within you project directory.".grey) + .log(" When in doubt, run ".grey + "surge".green.underline + " from within your project directory.".grey) .log() } else { From d52c010326e4c2aff34d9ba20d07c8bd514eae6e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Feb 2018 08:35:45 -0800 Subject: [PATCH 022/214] improves list output --- lib/middleware/auth.js | 18 +- lib/middleware/deploy.js | 1 + lib/middleware/domain.js | 7 +- lib/middleware/domainOrSilent.js | 43 + lib/middleware/index.js | 1 + lib/middleware/list.js | 14 +- lib/middleware/plan.js | 4 +- lib/middleware/plus.js | 2 +- lib/middleware/subscribe.js | 1 - lib/middleware/teardown.js | 12 +- lib/middleware/token.js | 2 +- lib/middleware/util/helpers.js | 8 +- lib/middleware/welcome.js | 19 +- lib/middleware/whoami.js | 31 +- lib/surge.js | 11 +- package-lock.json | 1366 ++++++++++++++++++++++++++++++ test/fixtures/bin/slapp | 6 + test/fixtures/bin/vcap | 17 + 18 files changed, 1508 insertions(+), 55 deletions(-) create mode 100644 lib/middleware/domainOrSilent.js create mode 100644 package-lock.json create mode 100644 test/fixtures/bin/slapp create mode 100755 test/fixtures/bin/vcap diff --git a/lib/middleware/auth.js b/lib/middleware/auth.js index cde2e0f..e29abef 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/auth.js @@ -8,9 +8,15 @@ var parseUrl = require("url-parse-as-address") module.exports = function(req, next, abort){ var authenticateAndSave = function(callback){ + if (req.creds){ + helpers.space() + } + helpers.trunc("Login (or create surge account) by entering email & password.".grey) + helpers.space() helpers.loginForm(req, function(creds){ - req.creds = localCreds(req.endpoint).set(creds.email, creds.token) - return callback() + localCreds(req.endpoint).set(creds.email, creds.token) + req.creds = creds + return accountOrAuthenticate(callback) }) } @@ -20,9 +26,7 @@ module.exports = function(req, next, abort){ req.account = account return callback() } else { - return authenticateAndSave(function(callback){ - return accountOrAuthenticate(callback) - }) + return authenticateAndSave(callback) } }) } @@ -30,9 +34,7 @@ module.exports = function(req, next, abort){ if (req.creds){ return accountOrAuthenticate(next) } else { - return authenticateAndSave(function(){ - return next() - }) + return authenticateAndSave(next) } } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 9d458d5..f045b15 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -22,6 +22,7 @@ module.exports = function(req, next){ var headers = { "version" : req.pkg.version, "file-count": req.fileCount, + "cmd": req.config.cmd, "project-size": req.projectSize, "timestamp": new Date().toJSON() } diff --git a/lib/middleware/domain.js b/lib/middleware/domain.js index b76300d..dea0642 100644 --- a/lib/middleware/domain.js +++ b/lib/middleware/domain.js @@ -33,21 +33,20 @@ module.exports = function(req, next, abort){ }, function(err, domain){ if (domain === undefined) return abort("Not initiated.".grey) if (err || !helpers.validDomain(domain)) { - console.log(" ", "Please enter valid domain name…".grey) + //console.log(" ", "Please enter valid domain name…".grey) return getDomain(domain) } req.domain = domain return next() }) } - if (helpers.validDomain(req.domain)) { - console.log(label, req.domain) + helpers.log(label, req.domain) next() } else { if (req.domain == "_"){ req.domain = [moniker.choose(), req.config.platform].join(".") - console.log(label, req.domain) + helpers.log(label, req.domain) next() } else { getDomain(req.suggestedDomain) diff --git a/lib/middleware/domainOrSilent.js b/lib/middleware/domainOrSilent.js new file mode 100644 index 0000000..97c34ec --- /dev/null +++ b/lib/middleware/domainOrSilent.js @@ -0,0 +1,43 @@ +var helpers = require("./util/helpers") +var moniker = require("moniker") +var fs = require("fs") +var path = require("path") +var os = require("os") + +module.exports = function(req, next, abort){ + var label = " domain:".grey + + function getDomain(suggestion){ + helpers.read({ + silent: false, + prompt: label, + default: suggestion || "", + edit: true, + terminal: req.config.terminal, + output: req.config.output, + input: req.config.input + }, function(err, domain){ + if (domain === undefined) return abort("Teardown".grey) + if (err || !helpers.validDomain(domain)) { + // console.log(" ", "Please enter valid domain name…".grey) + return getDomain(domain) + } + console.log() + req.domain = domain + return next() + }) + } + + if (helpers.validDomain(req.domain)) { + next() + } else { + if (req.domain == "_"){ + req.domain = [moniker.choose(), req.config.platform].join(".") + helpers.log(label, req.domain) + next() + } else { + getDomain(req.suggestedDomain) + } + + } +} diff --git a/lib/middleware/index.js b/lib/middleware/index.js index c5fccd7..c9f5c1e 100644 --- a/lib/middleware/index.js +++ b/lib/middleware/index.js @@ -19,6 +19,7 @@ module.exports = [ require("./project"), require("./size"), require("./domain"), + require("./domainOrSilent"), require("./protocol"), require("./deploy"), require("./ipaddress") diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 0c90283..9a9a5fe 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -18,10 +18,9 @@ module.exports = function(req, next){ request(options, function(e, r, obj){ if (e) throw e var list = JSON.parse(obj) - //console.log() var table = new Table({ - //head: ['REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], + //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' @@ -29,6 +28,7 @@ module.exports = function(req, next){ style: { 'padding-left': 1, 'padding-right': 1 } }) + var lastcmd = "" if (list.length != 0) { list.forEach(function(project){ var perm = project.rev ? (project.rev + " ").grey + project.domain : "" @@ -39,12 +39,20 @@ module.exports = function(req, next){ var pn = project.planName.blue } } + + + + var row = [ perm || project.domain, project.timeAgoInWords.grey, - pn || "" + project.cmd.grey, + project.platform.grey, + pn || "", + //lastcmd !== project.cmd ? (project.cmd).grey : "", ] table.push(row) + lastcmd = project.cmd }) helpers.space() helpers.log(table.toString()) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 17dd854..cf0ea30 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -62,8 +62,8 @@ module.exports = function(req, next, abort){ } // use message if the server gives us one - args.message = req.plans.message ? (" " + req.plans.message.yellow + "\n") : ' ' - + // args.message = req.plans.message ? (" " + req.plans.message.yellow + "\n") : ' ' + args.message = ' ' // prompt user to choose a plan inquirer.prompt([args]).then(function (answers) { req.selectedPlan = answers.plan diff --git a/lib/middleware/plus.js b/lib/middleware/plus.js index 0ef6bc3..048683d 100644 --- a/lib/middleware/plus.js +++ b/lib/middleware/plus.js @@ -59,7 +59,7 @@ module.exports = function(req, next, abort){ var sub = JSON.parse(b) helpers.log(" plan: ".grey + sub.plan.name) helpers.space() - helpers.log((" You are now upgraded to " + sub.plan.name + "!").green) + helpers.trunc(("You are now upgraded to " + sub.plan.name + "!").green) helpers.space() } else if (r.statusCode == 200) { var sub = JSON.parse(b) diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js index 5e3e170..cb42fbe 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/subscribe.js @@ -30,7 +30,6 @@ module.exports = function(req, next, abort){ }, function(e,r,b){ if ([200,201].indexOf(r.statusCode) !== -1) { var sub = JSON.parse(b) - helpers.space() helpers.trunc("Success".green + (" - " + sub.msg).grey) helpers.space() } else { diff --git a/lib/middleware/teardown.js b/lib/middleware/teardown.js index f5ded28..77a2caa 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/teardown.js @@ -24,19 +24,19 @@ module.exports = function(req, next, abort){ if (e) throw e if (r.statusCode == 200 || r.statusCode == 204 || r.statusCode == 210) { - helpers.log() + helpers.space() helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey) - helpers.log() + helpers.space() process.exit() } else if (r.statusCode == 403) { - helpers.log() + helpers.space() helpers.trunc("Aborted".yellow + (" - Unable to remove " + domain.underline + ".").grey) - helpers.log() + helpers.space() process.exit(1) } else { - helpers.log() + helpers.space() helpers.log(obj) - helpers.log() + helpers.space() process.exit() } }) diff --git a/lib/middleware/token.js b/lib/middleware/token.js index 4580944..f48f69e 100644 --- a/lib/middleware/token.js +++ b/lib/middleware/token.js @@ -3,7 +3,7 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ //console.log(req.authed) - console.log() + helpers.space() helpers.trunc(req.creds.token.grey) next() } \ No newline at end of file diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 06d5b31..e613f5e 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -128,9 +128,9 @@ var fetchToken = exports.fetchToken = function(endpoint){ return callback(obj, null) }else{ try { - var obj = JSON.parse(obj) - var c = localCreds(endpoint).set(obj.email, obj.token.replace(os.EOL, "")) - return callback(null, c) + var o = JSON.parse(obj) + localCreds(endpoint).set(obj.email, o.token.replace(os.EOL, "")) + return callback(null, o) } catch(e){ return callback({"messages": ["password required"]}) } @@ -178,8 +178,8 @@ exports.loginForm = function(req, callback){ var promptPassword = function(cb){ var out = req.config.output + s = 0 if (out) out.isTTY = false - read({ prompt: " password:".grey, silent: true, diff --git a/lib/middleware/welcome.js b/lib/middleware/welcome.js index ab0faf2..daa77bb 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/welcome.js @@ -1,20 +1,9 @@ var helpers = require("./util/helpers.js") -module.exports = function(req, next){ + +module.exports = function(req, next){ if (req.creds == null) { helpers.trunc(("Welcome to " + (req.config.name || "Surge").underline + "!").blue + (" (" + req.config.platform +")").grey) - if (req.config.name) { - helpers.trunc("Powered by Surge".grey).hr() - } - helpers.trunc("Login (or create surge account) by entering email & password.".grey).hr() - } else { - if(req.config.name){ - helpers.trunc("" + req.config.name.bold + "("+ req.config.platform +") - " + (req.config.platform || "surge.sh")) - helpers.trunc("Powered by Surge".grey) - } else { - //helpers.trunc(("Running as " + req.creds.email.underline).grey) - //helpers.log(" Surge (surge.sh)".grey + (" - as " + req.creds.email.underline).grey) - } - //helpers.hr() } - next() + + return next() } \ No newline at end of file diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index 9087681..88992f8 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -1,13 +1,32 @@ var helpers = require("./util/helpers") +var creds = require("./util/creds") module.exports = function(req, next){ - if (req.creds) { - helpers.trunc(req.creds.email.underline.grey) - helpers.log() + if (req.creds && req.creds.token) { + helpers.fetchAccount(req.endpoint)(req.creds.email, req.creds.token, function(error, account){ + if (account){ + req.account = account + helpers.space() + var str = req.creds.email.underline.grey + if (req.account.plan){ + str = str + (" - " + req.account.plan.name).grey + } + helpers.trunc(str) + helpers.space() + return next() + } else { + creds(req.endpoint).set(req.creds.email, null) + helpers.space() + helpers.trunc("You are not Authenticated. It is not true. You are not authed. You are not!".grey) + helpers.space() + process.exit() + } + }) } else { + helpers.space() helpers.trunc("Not Authenticated".grey) - helpers.log() + helpers.space() + process.exit() } - - process.exit() + } diff --git a/lib/surge.js b/lib/surge.js index 44a8d3b..2ffb452 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -23,6 +23,7 @@ var size = require("./middleware/size") var domain = require("./middleware/domain") var protocol = require("./middleware/protocol") var deploy = require("./middleware/deploy") +var domainOrSilent = require("./middleware/domainOrSilent") var ipaddress = require("./middleware/ipaddress") var login = require("./middleware/login") var shorthand = require("./middleware/shorthand") @@ -95,8 +96,10 @@ module.exports = function(config){ } var authInfo = function(req, next){ + var str = ("Running as " + req.account.email.underline).grey + if (req.account.plan){ str = str + (" (" + req.account.plan.name + ")").grey } helpers.space() - helpers.trunc(("Running as " + req.account.email.underline).grey) + helpers.trunc(str) helpers.space() return next() } @@ -245,8 +248,8 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, auth, authInfo, postAuth, - shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domain, + preAuth, creds, welcome, auth, postAuth, + shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domainOrSilent, teardown, space ] return function(){ @@ -284,7 +287,7 @@ module.exports = function(config){ var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, + whitelist, endpoint, pkg, help, version, preAuth, creds, auth, postAuth, shorthand, discovery.setDomainFromArgs, plans, plan, exitifcurrentplan, diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4727e06 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1366 @@ +{ + "name": "surge", + "version": "0.20.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "2.0.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + } + } + }, + "cli-table2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cli-table2/-/cli-table2-0.2.0.tgz", + "integrity": "sha1-LR738hig54biFFQFYtS9F3/jLZc=", + "requires": { + "colors": "1.1.2", + "lodash": "3.10.1", + "string-width": "1.0.2" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "optional": true + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", + "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true + }, + "du": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/du/-/du-0.1.0.tgz", + "integrity": "sha1-8m40CgnHvFtv1pr2263qYPqMb00=", + "requires": { + "async": "0.1.22" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "fstream-ignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", + "integrity": "sha1-GMiR2wG3gqdKe/+Tag8kmXdBx6s=", + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "2.0.10" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "i": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", + "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.0.1.tgz", + "integrity": "sha512-si5Jmjj6ngjkDSPt/MwuIysUNNKu8SGWnweZE2QXRfd5SKJgDown8IDbHQiS5WLxqEQDQC0Vjcgtpw1XyZJWpw==", + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rxjs": "5.5.6", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-domain": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", + "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "keypress": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", + "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", + "integrity": "sha1-G8K8cWWM3KVxJHVoQ2NhWwtPaVs=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mocha": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.0.tgz", + "integrity": "sha512-ukB2dF+u4aeJjc6IGtPNnJXfeby5d4ZqySlIBT0OEyva/DrMjVm5HkQxKnHDLKEfEQBsEnwTg9HHhtPHJdTd8w==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + } + } + }, + "moniker": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", + "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "natives": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz", + "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==" + }, + "ncp": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" + }, + "netrc": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" + }, + "nixt": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/nixt/-/nixt-0.4.1.tgz", + "integrity": "sha1-YjCeuVzSKPeZWCKiHbgXBbbs3Nw=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "clone": "0.1.19", + "shell-quote": "1.6.1", + "string": "1.9.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" + }, + "prompt": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", + "requires": { + "pkginfo": "0.4.1", + "read": "1.0.5", + "revalidator": "0.1.8", + "utile": "0.2.1", + "winston": "0.8.3" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "read": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", + "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", + "requires": { + "mute-stream": "0.0.7" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.0" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "2.1.0" + } + }, + "rxjs": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz", + "integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==", + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "should": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/should/-/should-7.1.0.tgz", + "integrity": "sha1-WUGumqZnW+JAZ9QywCryEMzZx3I=", + "dev": true, + "requires": { + "should-equal": "0.5.0", + "should-format": "0.3.0", + "should-type": "0.2.0" + } + }, + "should-equal": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", + "integrity": "sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=", + "dev": true, + "requires": { + "should-type": "0.2.0" + } + }, + "should-format": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", + "integrity": "sha1-QgB+wKochupEkUzJER8bnyfTzqw=", + "dev": true, + "requires": { + "should-type": "0.2.0" + } + }, + "should-type": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", + "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "split": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", + "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", + "requires": { + "through": "2.3.8" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/string/-/string-1.9.1.tgz", + "integrity": "sha1-iq4c9WPep2dTjdej8NsiOYacYZ4=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "requires": { + "has-flag": "2.0.0" + } + }, + "surge-ignore": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", + "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, + "tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-1.0.0.tgz", + "integrity": "sha1-NmNtduiuErS8EalArGBrXKil/h8=", + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar.gz": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tar.gz/-/tar.gz-0.1.1.tgz", + "integrity": "sha1-6RTOI7L9xidXX72zSFpbIo7VmUc=", + "requires": { + "commander": "1.1.1", + "fstream": "0.1.31", + "tar": "0.1.20" + }, + "dependencies": { + "commander": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", + "integrity": "sha1-UNFlGGiuYOzP8KLZ80WVN2vGsEE=", + "requires": { + "keypress": "0.1.0" + } + }, + "fstream": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "requires": { + "graceful-fs": "3.0.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "requires": { + "natives": "1.1.1" + } + }, + "tar": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", + "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=", + "requires": { + "block-stream": "0.0.9", + "fstream": "0.1.31", + "inherits": "2.0.3" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "url-parse-as-address": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", + "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" + }, + "utile": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", + "requires": { + "async": "0.2.10", + "deep-equal": "1.0.1", + "i": "0.3.6", + "mkdirp": "0.5.1", + "ncp": "0.4.2", + "rimraf": "2.6.2" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + } + } + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "winston": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "requires": { + "async": "0.2.10", + "colors": "0.6.2", + "cycle": "1.0.3", + "eyes": "0.1.8", + "isstream": "0.1.2", + "pkginfo": "0.3.1", + "stack-trace": "0.0.10" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" + } + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.30.0.tgz", + "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } +} diff --git a/test/fixtures/bin/slapp b/test/fixtures/bin/slapp new file mode 100644 index 0000000..8355258 --- /dev/null +++ b/test/fixtures/bin/slapp @@ -0,0 +1,6 @@ +#! /usr/bin/env node + +var surge = require('../../../')({ + cmd: "vcap", + platform: "vcap.me", +})(process.argv.slice(2)) \ No newline at end of file diff --git a/test/fixtures/bin/vcap b/test/fixtures/bin/vcap new file mode 100755 index 0000000..1b6b87e --- /dev/null +++ b/test/fixtures/bin/vcap @@ -0,0 +1,17 @@ +#! /usr/bin/env node + +// var surge = require('../../../')({ +// name: "vcap", +// cmd: "vcap", +// domain: "vcap.me", +// }) + +var surge = require('../../../')({ + cmd: "vcap", + name: "VCAP CDN", + platform: "vcap.me", + endpoint: "surge.vcap.me", + default: "publish" +}) + +surge(process.argv.slice(2)) From 6d8f225908ab8cb383c012c2ce7ba4018b112d6d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 13 Feb 2018 02:40:07 -0800 Subject: [PATCH 023/214] improves tests --- lib/middleware/deploy.js | 8 +++---- lib/middleware/domain.js | 2 +- lib/middleware/domainOrSilent.js | 2 +- lib/middleware/email.js | 4 +++- lib/middleware/list.js | 5 +---- lib/middleware/log.js | 2 +- lib/middleware/plus.js | 4 ++-- lib/middleware/project.js | 2 +- lib/middleware/subscribe.js | 1 + lib/middleware/util/helpers.js | 36 +++++++++++++++++++------------- lib/middleware/version.js | 5 ++++- test/basic.js | 6 +++--- 12 files changed, 43 insertions(+), 34 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index f045b15..eaa2f1d 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -102,7 +102,7 @@ module.exports = function(req, next){ } else if (payload.hasOwnProperty("type") && payload.type === "users") { - helpers.log(" users:".grey, payload.users.join(", ")) + helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) } else if (payload.hasOwnProperty("type") && payload.type === "collect") { @@ -156,7 +156,7 @@ module.exports = function(req, next){ if (payload.hasOwnProperty("type") && payload.type === "ip") { req.success = true if (payload.data) { - console.log(" IP Address:".grey, payload.data.ip) + helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) } } else if (payload.hasOwnProperty("type") && payload.type === "event_registration") { @@ -223,8 +223,8 @@ module.exports = function(req, next){ try { // we have two different display for the progress bars var displays = { - "upload": (' upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, - "cdn": (' CDN:').grey + ' [:bar] :percent' + "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' } // create progress bar (if one doesnt exist) diff --git a/lib/middleware/domain.js b/lib/middleware/domain.js index dea0642..80e8a49 100644 --- a/lib/middleware/domain.js +++ b/lib/middleware/domain.js @@ -5,7 +5,7 @@ var path = require("path") var os = require("os") module.exports = function(req, next, abort){ - var label = " domain:".grey + var label = helpers.smart("domain:").grey // try { // req.domain = req.argv.domain || fs.readFileSync(path.join(req.project, "CNAME")).toString() diff --git a/lib/middleware/domainOrSilent.js b/lib/middleware/domainOrSilent.js index 97c34ec..f412553 100644 --- a/lib/middleware/domainOrSilent.js +++ b/lib/middleware/domainOrSilent.js @@ -5,7 +5,7 @@ var path = require("path") var os = require("os") module.exports = function(req, next, abort){ - var label = " domain:".grey + var label = helpers.smart("domain:").grey function getDomain(suggestion){ helpers.read({ diff --git a/lib/middleware/email.js b/lib/middleware/email.js index 1353434..a3917fd 100644 --- a/lib/middleware/email.js +++ b/lib/middleware/email.js @@ -2,7 +2,9 @@ var pattern = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\ var helpers = require("./util/helpers") module.exports = function(req, next, abort){ - var label = " email:".grey + //var label = " email:".grey + + var label = helpers.smart("email:").grey if (req.authed) { return next() diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 9a9a5fe..00ab79b 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -27,7 +27,7 @@ module.exports = function(req, next){ , 'right': '' , 'right-mid': '' , 'middle': ' ' }, style: { 'padding-left': 1, 'padding-right': 1 } }) - + //console.log(req) var lastcmd = "" if (list.length != 0) { list.forEach(function(project){ @@ -40,9 +40,6 @@ module.exports = function(req, next){ } } - - - var row = [ perm || project.domain, project.timeAgoInWords.grey, diff --git a/lib/middleware/log.js b/lib/middleware/log.js index e31c507..fea505a 100644 --- a/lib/middleware/log.js +++ b/lib/middleware/log.js @@ -1,4 +1,4 @@ module.exports = function(req, next){ - console.log(req.argv) + console.log(req) next() } \ No newline at end of file diff --git a/lib/middleware/plus.js b/lib/middleware/plus.js index 048683d..177cac7 100644 --- a/lib/middleware/plus.js +++ b/lib/middleware/plus.js @@ -57,13 +57,13 @@ module.exports = function(req, next, abort){ helpers.space() } var sub = JSON.parse(b) - helpers.log(" plan: ".grey + sub.plan.name) + helpers.log(helpers.smart("plan:").grey + " " + sub.plan.name) helpers.space() helpers.trunc(("You are now upgraded to " + sub.plan.name + "!").green) helpers.space() } else if (r.statusCode == 200) { var sub = JSON.parse(b) - helpers.log(" plan:".grey, sub.plan.name) + helpers.log(helpers.smart("plan:").grey + " " + sub.plan.name) helpers.space() helpers.trunc(("No charge created. You are already upgraded to " + sub.plan.name + "!").green) helpers.space() diff --git a/lib/middleware/project.js b/lib/middleware/project.js index 39a7bc8..dc9d129 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/project.js @@ -10,7 +10,7 @@ module.exports = function(req, next, abort){ fs.exists(req.project, function(exists){ if (exists) { - helpers.log(" project:".grey, req.project) + helpers.log(helpers.smart("project:").grey + " " + req.project) next() } else { helpers.space() diff --git a/lib/middleware/subscribe.js b/lib/middleware/subscribe.js index cb42fbe..5e3e170 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/subscribe.js @@ -30,6 +30,7 @@ module.exports = function(req, next, abort){ }, function(e,r,b){ if ([200,201].indexOf(r.statusCode) !== -1) { var sub = JSON.parse(b) + helpers.space() helpers.trunc("Success".green + (" - " + sub.msg).grey) helpers.space() } else { diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index e613f5e..066d450 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -22,7 +22,11 @@ var space = exports.space = function(){ if (s === 0){ s++ console.log() - } + } +} + +var span = exports.span = function(){ + s = 1 } var log = exports.log = function(){ @@ -39,9 +43,12 @@ var hr = exports.hr = function(){ }; var smart = exports.smart = function(str){ - console.log(str) - s = 0 - return log(" " + str.length) + var difference = 16 - str.length + var rsp = "" + for(var i=0; i < difference; i++){ + rsp += " " + } + return rsp + str } var trunc = exports.trunc = function(arg){ @@ -155,7 +162,7 @@ exports.loginForm = function(req, callback){ var promptEmail = function(suggestion, cb){ req.read({ silent: false, - prompt: " email:".grey, + prompt: smart("email:").grey, default: suggestion, edit: true, terminal: req.config.terminal, @@ -181,7 +188,7 @@ exports.loginForm = function(req, callback){ s = 0 if (out) out.isTTY = false read({ - prompt: " password:".grey, + prompt: smart("password:").grey, silent: true, edit: false, output: out, @@ -197,7 +204,7 @@ exports.loginForm = function(req, callback){ if (err.hasOwnProperty("details") && err["details"].hasOwnProperty("email")) process.exit(1) if (count >=3) { req.read({ - prompt: " forgot password?".grey, + prompt: smart("forgot?").grey, default: "yes", terminal: req.config.terminal, output: req.config.output, @@ -265,7 +272,7 @@ exports.payment = function(req, stripe_pk, existing){ } } else { console.log() - console.log(" " + "Aborted".yellow + " - Using existing card.".grey) + console.log(" " + "Aborted".yellow + " - Changed not made.".grey) } console.log() process.exit(1) @@ -274,7 +281,7 @@ exports.payment = function(req, stripe_pk, existing){ function card(cc, ep, cv, cb){ read({ silent: false, - prompt: " card number:".grey, + prompt: smart("card number:").grey, default: cc, edit: true, }, function(er, cc){ @@ -283,7 +290,7 @@ exports.payment = function(req, stripe_pk, existing){ return abort("Plan not changed.") } read({ - prompt: " exp (mo/yr):".grey, + prompt: smart("exp (mo/yr):").grey, default: ep, edit: true, }, function(er, ep){ @@ -292,7 +299,7 @@ exports.payment = function(req, stripe_pk, existing){ return abort("Plan not changed.") } read({ - prompt: " cvc:".grey, + prompt: smart("cvc:").grey, default: cv, edit: true, }, function(er, cv){ @@ -313,9 +320,9 @@ exports.payment = function(req, stripe_pk, existing){ } }, function(e,r,b) { if (r.statusCode == 417){ - console.log() - console.log(" Update Required".yellow, "-", obj) - console.log() + space() + log("Update Required".yellow, "-", obj) + space() process.exit(1) } else if (r.statusCode == 401){ console.log(r) @@ -369,7 +376,6 @@ exports.payment = function(req, stripe_pk, existing){ if (existing !== null) { return function(callback){ - var prompt = req.plan ? (" Change to the " + req.plan.underline + " plan using " + existing.brand.underline.grey + " ending in ".grey + existing.last4.underline.grey + "?".grey).grey : (" Use " + existing.brand.underline + " ending in ".grey + existing.last4.underline.grey + "?".grey).grey diff --git a/lib/middleware/version.js b/lib/middleware/version.js index 1d58efb..d2e4f1c 100644 --- a/lib/middleware/version.js +++ b/lib/middleware/version.js @@ -1,8 +1,11 @@ var pkg = require("../../package.json") +var helpers = require("./util/helpers.js") module.exports = function(req, next){ if (req.argv.version || req.argv.V) { - console.log(pkg.version) + helpers.space() + helpers.trunc(("v" + pkg.version).grey) + helpers.space() } else { next() } diff --git a/test/basic.js b/test/basic.js index 19a4abf..d690d83 100644 --- a/test/basic.js +++ b/test/basic.js @@ -42,7 +42,7 @@ describe("surge " + testid + " using " + user, function () { nixt(opts) .run(surge + '--version') .expect(function(result) { - should(result.stdout).be.equal(pkg.version) + should(result.stdout).match(new RegExp(pkg.version)) }).end(done) }) @@ -50,7 +50,7 @@ describe("surge " + testid + " using " + user, function () { nixt(opts) .run(surge + '-V') .expect(function(result) { - should(result.stdout).be.equal(pkg.version) + should(result.stdout).match(new RegExp(pkg.version)) }).end(done) }) @@ -138,7 +138,7 @@ describe("surge " + testid + " using " + user, function () { }) describe('auth', function (done) { - this.timeout(1500) + this.timeout(3500) it('should be able to login', function (done) { nixt({ colors: false }) From 01544cc40dc4ab13b294ac520d16c2571eec523d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 14 Feb 2018 06:06:17 -0800 Subject: [PATCH 024/214] resets ssl flow --- README.md | 2 +- lib/middleware/pemOrSilent.js | 39 ++++++ lib/middleware/plan.js | 1 + lib/middleware/ssl.js | 221 ++++++++++++++------------------- lib/middleware/util/helpers.js | 7 +- lib/surge.js | 7 +- test/cname.js | 10 +- test/plus.js | 4 +- test/publish.js | 28 ++--- test/teardown.js | 4 +- 10 files changed, 167 insertions(+), 156 deletions(-) create mode 100644 lib/middleware/pemOrSilent.js diff --git a/README.md b/README.md index b9c5133..0d79350 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Run `surge --help` to see the following overview of the `surge` command... -h, --help show this help message Shorthand usage: - surge [project path] [domain] + surge [project] [domain] Additional commands: surge whoami show who you are logged in as diff --git a/lib/middleware/pemOrSilent.js b/lib/middleware/pemOrSilent.js new file mode 100644 index 0000000..ce2184c --- /dev/null +++ b/lib/middleware/pemOrSilent.js @@ -0,0 +1,39 @@ +var helpers = require("./util/helpers") +var moniker = require("moniker") +var fs = require("fs") +var path = require("path") +var os = require("os") + +module.exports = function(req, next, abort){ + var label = helpers.smart("pem file:").grey + var pemPath + var getPem = function(placeholder){ + req.read({ + prompt: label, + default: placeholder, + edit: true, + terminal: req.config.terminal, + output: req.config.output, + input: req.config.input + }, function(err, pem){ + if (pem === undefined) return abort("no PEM file provided".grey) + if (pem === "") return getPem() + var pemPath = path.resolve(pem || "") + if (!fs.existsSync(pemPath)) return getPem(pem) + req.pem = pemPath + return next() + }) + } + + var pem = req.argv["pem"] + pemPath = path.resolve(pem || "") + + if (pem && fs.existsSync(pemPath)) { + req.pem = pemPath + //console.log(label, pemPath) + return next() + } else { + return getPem() + } + +} diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index cf0ea30..9fbc680 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -66,6 +66,7 @@ module.exports = function(req, next, abort){ args.message = ' ' // prompt user to choose a plan inquirer.prompt([args]).then(function (answers) { + helpers.gap() req.selectedPlan = answers.plan var p = req.selectedPlan.id.split("-")[0] req.plan = p.charAt(0).toUpperCase() + p.slice(1) diff --git a/lib/middleware/ssl.js b/lib/middleware/ssl.js index 7f9f76e..2a51225 100644 --- a/lib/middleware/ssl.js +++ b/lib/middleware/ssl.js @@ -9,143 +9,108 @@ var parseUrl = require("url-parse-as-address") module.exports = function(req, next, abort){ - var upload = function(req, next, abort){ - var uri = url.resolve(req.endpoint, path.join(req.domain, "ssl")) - var handshake = request.put(uri, { "version" : req.pkg.version }) - - // apply basic auth - handshake.auth("token", req.creds.token, true) - - // catch errors - handshake.on('error', function(d){ - console.log(d) - }) - - // split replies on new line - handshake.pipe(split()) - - // output result - handshake.on("data", function(data){ - var payload = JSON.parse(data.toString()) - if (payload.hasOwnProperty("type") && payload["type"] == "collect"){ - var msg = " Project requires the ".blue + payload.plan.name.yellow + " plan. ".blue + ("$" + (payload.plan.amount / 100) + "/mo").yellow + " (cancel anytime).".blue - helpers.log() - if (payload.hasOwnProperty("perks")) { - helpers.log(msg += " This plan provides...".blue) - payload.perks.forEach(function(perk){ - helpers.log((" - " + perk).blue) - }) - } else { - helpers.log(msg) + var uri = url.resolve(req.endpoint, path.join(req.domain, "ssl")) + var handshake = request.put(uri, { "version" : req.pkg.version }) + + // apply basic auth + handshake.auth("token", req.creds.token, true) + + // catch errors + handshake.on('error', function(d){ + console.log(d) + }) + + // split replies on new line + handshake.pipe(split()) + + // output result + handshake.on("data", function(data){ + + var payload = JSON.parse(data.toString()) + if (payload.hasOwnProperty("type") && payload["type"] == "collect"){ + var msg = " Project requires the ".blue + payload.plan.name.yellow + " plan. ".blue + ("$" + (payload.plan.amount / 100) + "/mo").yellow + " (cancel anytime).".blue + helpers.log() + if (payload.hasOwnProperty("perks")) { + helpers.log(msg += " This plan provides...".blue) + payload.perks.forEach(function(perk){ + helpers.log((" - " + perk).blue) + }) + } else { + helpers.log(msg) + } + helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ + var uri = url.resolve(req.endpoint, req.domain + "/subscription") + request({ + uri: uri, + method: "PUT", + auth: { + 'user': 'token', + 'pass': req.creds.token, + 'sendImmediately': true + }, + form: { + plan: payload.plan, + token: token } - helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ - var uri = url.resolve(req.endpoint, req.domain + "/subscription") - request({ - uri: uri, - method: "PUT", - auth: { - 'user': 'token', - 'pass': req.creds.token, - 'sendImmediately': true - }, - form: { - plan: payload.plan, - token: token - } - }, function(e,r,b){ - if (r.statusCode == 201) { - //if (token === null) console.log() - //next() - //var sub = JSON.parse(b) - //console.log(" plan:".grey, sub.plan.name) - } - }) - }) - } else if (payload.hasOwnProperty("type") && payload["type"] == "subscription"){ - // if (payload.data) { - // console.log(" plan:".grey, payload.data.plan.name) - // } else { - // console.log(" plan:".grey, "Free") - // } - } else if (payload.hasOwnProperty("type") && payload["type"] == "msg"){ - console.log() - if (payload.payload["status"] == "ok") { - console.log(" Success".green, "-", payload.payload["msg"]) - } else { - console.log(" Error".yellow, "-", payload.payload["msg"]) + }, function(e,r,b){ + if (r.statusCode == 201) { + //if (token === null) console.log() + //next() + //var sub = JSON.parse(b) + //console.log(" plan:".grey, sub.plan.name) } - console.log() - } - - }) - - // done - handshake.on("end", function(){ - // console.log() - // console.log(" Success!".green, "-", "ssl cert has been added to", req.domain) - // console.log() - // process.exit() - }) - - handshake.on("response", function(rsp){ - console.log() - // if (rsp.statusCode == 403) { - // helpers.log() - // helpers.log(" Unauthorized".yellow + " - you do not have publish access to", req.domain) - // helpers.log() - // process.exit() - // } else if (rsp.statusCode == 400) { - // helpers.log() - // helpers.log(" SSL Fail".red, "-", "pem file is invalid.") - // helpers.log() - // process.exit() - // } else if (rsp.statusCode == 202) { - // helpers.log() - // helpers.log(" SSL Pass".green, "-", "your pem file has been added to", req.domain) - // helpers.log() - // process.exit() - // } + }) }) - - var pem = fs.createReadStream(req.pem) - pem.pipe(handshake) + } else if (payload.hasOwnProperty("type") && payload["type"] == "subscription"){ + // if (payload.data) { + // console.log(" plan:".grey, payload.data.plan.name) + // } else { + // console.log(" plan:".grey, "Free") + // } + } else if (payload.hasOwnProperty("type") && payload["type"] == "msg"){ + helpers.space() + if (payload.payload["status"] == "ok") { + helpers.trunc("Success".green + (" - " + payload.payload["msg"]).grey) + } else { + helpers.trunc("Error".yellow + (" - " + payload.payload["msg"]).grey) + } + helpers.space() } - - var mPem = function(req, next, abort){ - var label = " pem file:".grey - var pemPath - var getPem = function(placeholder){ - req.read({ - prompt: label, - default: placeholder, - edit: true, - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input - }, function(err, pem){ - if (pem === undefined) return abort("no PEM file provided") - if (pem === "") return getPem() - var pemPath = path.resolve(pem || "") - if (!fs.existsSync(pemPath)) return getPem(pem) - req.pem = pemPath - return upload(req, next, abort) - }) + }) + + // done + handshake.on("end", function(){ + // console.log() + // console.log(" Success!".green, "-", "ssl cert has been added to", req.domain) + // console.log() + // process.exit() + }) + + handshake.on("response", function(rsp){ + if (rsp.statusCode == 403) { + helpers.space() + if(rsp.headers.hasOwnProperty("reason")){ + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) + } else { + helpers.trunc("Aborted".yellow + (" - Unauthorized to aplly ssl to " + req.domain.underline).grey) } - - var pem = req.argv["pem"] - pemPath = path.resolve(pem || "") - - if (pem && fs.existsSync(pemPath)) { - req.pem = pemPath - console.log(label, pemPath) - return upload(req, next, abort) + helpers.log() + process.exit(1) + } else if (rsp.statusCode == 401) { + localCreds(req.argv.endpoint).set(null) + helpers.log() + if(rsp.headers.hasOwnProperty("reason")){ + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) } else { - return getPem() + helpers.trunc("Aborted".yellow + " - Local token has expired. please try again.".grey) } - + helpers.log() + process.exit(1) } + }) - return mPem(req, next, abort) + var pem = fs.createReadStream(req.pem) + pem.pipe(handshake) } diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 066d450..428d4d8 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -17,6 +17,10 @@ var sig = '[' + 'surge'.cyan + ']' sig = null +var reset = exports.reset = function(){ + s = 0 +} + var space = exports.space = function(){ if (s === 0){ @@ -25,7 +29,7 @@ var space = exports.space = function(){ } } -var span = exports.span = function(){ +var span = exports.gap = function(){ s = 1 } @@ -48,6 +52,7 @@ var smart = exports.smart = function(str){ for(var i=0; i < difference; i++){ rsp += " " } + s = 0 return rsp + str } diff --git a/lib/surge.js b/lib/surge.js index 2ffb452..8c8817a 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -24,6 +24,7 @@ var domain = require("./middleware/domain") var protocol = require("./middleware/protocol") var deploy = require("./middleware/deploy") var domainOrSilent = require("./middleware/domainOrSilent") +var pemOrSilent = require("./middleware/pemOrSilent") var ipaddress = require("./middleware/ipaddress") var login = require("./middleware/login") var shorthand = require("./middleware/shorthand") @@ -330,9 +331,9 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, tokencheck, email, auth, postAuth, - shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domain, - ssl, space + preAuth, creds, auth, postAuth, + shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domainOrSilent, + pemOrSilent, ssl, space ] return function(){ var argv = parse(arguments[arguments.length -1]) diff --git a/test/cname.js b/test/cname.js index c0fc596..6cb309e 100644 --- a/test/cname.js +++ b/test/cname.js @@ -22,7 +22,7 @@ describe('crud', function (done) { }) it('work', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .exec(surge + 'logout') .on(/.*email:.*/).respond(user + "\n") @@ -34,7 +34,7 @@ describe('crud', function (done) { }) it('should access cname file when no arg present', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .exec(surge + 'logout') .on(/.*email:.*/).respond(user + "\n") @@ -47,7 +47,7 @@ describe('crud', function (done) { }) it('`surge` with CNAME file and protocol', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + './test/fixtures/cli-test-3.surge.sh') .expect(function (result) { @@ -57,7 +57,7 @@ describe('crud', function (done) { .end(done) }) it('`surge` with CNAME file and subdomain', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + './test/fixtures/cli-test-4.surge.sh') .expect(function (result) { @@ -67,7 +67,7 @@ describe('crud', function (done) { .end(done) }) it('Should let `surge --domain` override CNAME', function (done) { - this.timeout(5000) + this.timeout(1500) var subdomain = '' diff --git a/test/plus.js b/test/plus.js index 80c17a4..441b1e2 100644 --- a/test/plus.js +++ b/test/plus.js @@ -23,7 +23,7 @@ var opts = { // .run(surge) // .on(/.*email:.*/).respond('brock+test@chloi.io\n') // .on(/.*password:.*/).respond('12345\n') -// .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') +// .on(/.*project:.*/).respond('./test/fixtures/cli-test.surge.sh\n') // .on(/.*domain:.*/).respond('\n') // .expect(function (result) { // subdomain = result.stdout.split('Project is published and running at')[1].trim() @@ -78,7 +78,7 @@ var opts = { // // }) // // it('`surge ssl --domain` with no arg', function (done) { -// // this.timeout(5000) +// // this.timeout(1500) // // // // nixt(opts) // // .run(surge + '--endpoint localhost:5001 ssl --domain\n') diff --git a/test/publish.js b/test/publish.js index 4f1b451..8f4abad 100644 --- a/test/publish.js +++ b/test/publish.js @@ -12,7 +12,7 @@ var opts = { describe('publish', function (done) { before(function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + 'logout') // Logout before the test starts @@ -20,12 +20,12 @@ describe('publish', function (done) { }) it('Run `surge` to login and publish', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge) .on(/.*email:.*/).respond('brock+test@chloi.io\n') .on(/.*password:.*/).respond('12345\n') - .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') + .on(/.*project:.*/).respond('./test/fixtures/cli-test.surge.sh\n') .on(/.*domain:.*/).respond('cli-test.surge.sh\n') .expect(function (result) { should(result.stdout).not.match('12345') @@ -35,10 +35,10 @@ describe('publish', function (done) { .end(done) }) it('Run `surge` when already logged in', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge) - .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') + .on(/.*project:.*/).respond('./test/fixtures/cli-test.surge.sh\n') .on(/.*domain:.*/).respond('cli-test.surge.sh\n') .expect(function (result) { should(result.stdout).match(/1 file/) @@ -47,7 +47,7 @@ describe('publish', function (done) { .end(done) }) it('`surge`', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + './test/fixtures/cli-test.surge.sh cli-test.surge.sh') .expect(function (result) { @@ -57,7 +57,7 @@ describe('publish', function (done) { .end(done) }) it('`surge ./`', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + './test/fixtures/cli-test.surge.sh') @@ -69,7 +69,7 @@ describe('publish', function (done) { .end(done) }) it('`surge --project`', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + '--project ./test/fixtures/cli-test.surge.sh') @@ -81,11 +81,11 @@ describe('publish', function (done) { .end(done) }) it('`surge --domain`', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + '--domain cli-test.surge.sh') - .on(/.*project path:.*/).respond('./test/fixtures/cli-test.surge.sh\n') + .on(/.*project:.*/).respond('./test/fixtures/cli-test.surge.sh\n') .on(/.*domain:.*/).respond('\n') .expect(function (result) { should(result.stdout).match(/1 file/) @@ -94,7 +94,7 @@ describe('publish', function (done) { .end(done) }) it('`surge --project --domain`', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + '--domain cli-test.surge.sh --project ./test/fixtures/cli-test.surge.sh') @@ -105,7 +105,7 @@ describe('publish', function (done) { .end(done) }) it('Should not publish a project a nonexistent directory', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + '--project ./test/fixtures/cli-test-0.surge.sh') @@ -117,7 +117,7 @@ describe('publish', function (done) { .end(done) }) it('Should not publish a project it doesn’t have access to', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + './test/fixtures/cli-test.surge.sh cli-test-5.surge.sh') .expect(function (result) { @@ -129,7 +129,7 @@ describe('publish', function (done) { }) after(function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + 'logout') // Logout after the test is over diff --git a/test/teardown.js b/test/teardown.js index fd2c3df..ce8e7e4 100644 --- a/test/teardown.js +++ b/test/teardown.js @@ -14,7 +14,7 @@ describe('teardown', function () { var subdomain = '' before(function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .exec(surge + 'logout') // Logout before the test starts @@ -30,7 +30,7 @@ describe('teardown', function () { }) it('`surge teardown`', function (done) { - this.timeout(5000) + this.timeout(1500) nixt(opts) .run(surge + 'teardown') From 8d95b3a2675b74b2330e7303ffc8254eb3bd9612 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 17 Feb 2018 05:21:03 -0800 Subject: [PATCH 025/214] adds version to account request --- lib/middleware/util/helpers.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 428d4d8..51e2e07 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -7,7 +7,8 @@ var url = require("url") var urlAddy = require("url-parse-as-address") var read = require("read") var isDomain = require("is-domain") -var s = 0 +var s = 0 +var pkg = require("../../../package.json") exports.read = read @@ -94,6 +95,7 @@ var fetchAccount = exports.fetchAccount = function(endpoint){ var options = { 'url': url.resolve(endpoint.format(), '/account'), 'method': 'get', + headers: { version: pkg.version }, 'auth': { 'user': "token", 'pass': pass || "", @@ -105,7 +107,17 @@ var fetchAccount = exports.fetchAccount = function(endpoint){ if (r.statusCode == 200){ return callback(null, JSON.parse(obj)) - } else { + } else if (r.statusCode == 417){ + space() + trunc("Aborted".yellow + " - your client requires upgrade".grey) + space() + process.exit(1) + } else if (r.statusCode == 503){ + space() + trunc("Error".red + " - Deployment endpoint temporarily unreachable".grey) + space() + process.exit(1) + }else{ return callback(JSON.parse(obj)) } }) @@ -326,7 +338,7 @@ exports.payment = function(req, stripe_pk, existing){ }, function(e,r,b) { if (r.statusCode == 417){ space() - log("Update Required".yellow, "-", obj) + trunc("Update Required".yellow, "-", obj) space() process.exit(1) } else if (r.statusCode == 401){ From 2aa8cb8e43e10f74c55ab47e6f8bb28e53c08839 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 22 Feb 2018 02:19:52 -0800 Subject: [PATCH 026/214] cleanup helpers & formatting --- lib/middleware/domainOrSilent.js | 2 -- lib/middleware/log.js | 6 ++++-- lib/middleware/util/helpers.js | 5 ++++- lib/surge.js | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/middleware/domainOrSilent.js b/lib/middleware/domainOrSilent.js index f412553..63a97c5 100644 --- a/lib/middleware/domainOrSilent.js +++ b/lib/middleware/domainOrSilent.js @@ -19,10 +19,8 @@ module.exports = function(req, next, abort){ }, function(err, domain){ if (domain === undefined) return abort("Teardown".grey) if (err || !helpers.validDomain(domain)) { - // console.log(" ", "Please enter valid domain name…".grey) return getDomain(domain) } - console.log() req.domain = domain return next() }) diff --git a/lib/middleware/log.js b/lib/middleware/log.js index fea505a..155ff32 100644 --- a/lib/middleware/log.js +++ b/lib/middleware/log.js @@ -1,4 +1,6 @@ +var helpers = require("./util/helpers") + module.exports = function(req, next){ - console.log(req) - next() + helpers.show() + return next() } \ No newline at end of file diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 51e2e07..22e1bfc 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -22,6 +22,10 @@ var reset = exports.reset = function(){ s = 0 } +var show = exports.show = function(){ + process.stdout.write(s.toString()) +} + var space = exports.space = function(){ if (s === 0){ @@ -53,7 +57,6 @@ var smart = exports.smart = function(str){ for(var i=0; i < difference; i++){ rsp += " " } - s = 0 return rsp + str } diff --git a/lib/surge.js b/lib/surge.js index 8c8817a..9a11269 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -249,7 +249,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, welcome, auth, postAuth, + preAuth, creds, auth, postAuth, shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domainOrSilent, teardown, space ] From bf652192da4c9e6f2da4f197b31f62aeb9e401cd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 22 Feb 2018 06:16:38 -0800 Subject: [PATCH 027/214] changes tar --- lib/middleware/deploy.js | 2 +- lib/middleware/prep.js | 2 +- package-lock.json | 34 +++++++++++++++++----------------- package.json | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index eaa2f1d..43513a4 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -2,7 +2,7 @@ var fs = require("fs") var request = require("request") var helpers = require('./util/helpers') var localCreds = require("./util/creds.js") -var tar = require('tar') +var tar = require('tarr') var zlib = require('zlib') var fsReader = require('fstream-ignore') var surge = require('../surge') diff --git a/lib/middleware/prep.js b/lib/middleware/prep.js index e160200..8f8f003 100644 --- a/lib/middleware/prep.js +++ b/lib/middleware/prep.js @@ -1,6 +1,6 @@ var fs = require("fs") var path = require("path") -var tar = require('tar') +var tar = require('tarr') var zlib = require('zlib') var fsReader = require('fstream-ignore') var ignore = require("surge-ignore") diff --git a/package-lock.json b/package-lock.json index 4727e06..e5e5dfd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -487,9 +487,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.0.1.tgz", - "integrity": "sha512-si5Jmjj6ngjkDSPt/MwuIysUNNKu8SGWnweZE2QXRfd5SKJgDown8IDbHQiS5WLxqEQDQC0Vjcgtpw1XyZJWpw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.1.0.tgz", + "integrity": "sha512-kn7N70US1MSZHZHSGJLiZ7iCwwncc7b0gc68YtlX29OjI3Mp0tSVV+snVXpZ1G+ONS3Ac9zd1m6hve2ibLDYfA==", "requires": { "ansi-escapes": "3.0.0", "chalk": "2.3.0", @@ -497,7 +497,7 @@ "cli-width": "2.2.0", "external-editor": "2.1.0", "figures": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", "rxjs": "5.5.6", @@ -517,9 +517,9 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "string-width": { "version": "2.1.1", @@ -1162,16 +1162,6 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" }, - "tar": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-1.0.0.tgz", - "integrity": "sha1-NmNtduiuErS8EalArGBrXKil/h8=", - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, "tar.gz": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/tar.gz/-/tar.gz-0.1.1.tgz", @@ -1221,6 +1211,16 @@ } } }, + "tarr": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.0.3.tgz", + "integrity": "sha512-ax05RcadKxg/EyogjIzzsT5NUl7B5Io9ASrv02bOdMFtt4E9w29Ok5kI66qqq7SNc5ai43DG91ZluBMtDjPoTQ==", + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", diff --git a/package.json b/package.json index b04c744..6ce0c3b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "request": "2.83.0", "split": "0.3.1", "surge-ignore": "0.2.0", - "tar": "1.0.0", + "tarr": "1.0.3", "tar.gz": "0.1.1", "url-parse-as-address": "1.0.0" }, From 27993f05505ffcbc0a9ab8806e0dd2914e5afd44 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 1 Mar 2018 22:56:42 -0800 Subject: [PATCH 028/214] adds plan for list --- lib/middleware/plan.js | 8 ++++++++ lib/middleware/plans.js | 4 ++++ lib/middleware/whitelist.js | 2 +- lib/middleware/whoami.js | 5 +++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 9fbc680..eaaacec 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -29,6 +29,9 @@ module.exports = function(req, next, abort){ if (plan.current == true){ title += " " + " ★ ★ CURRENT ★ ★ ".inverse + if (plan.comped){ + title += " (comped by surge)" + } } else { if (plan.trial_period_days){ title += " (" + plan.trial_period_days + " day trial)" @@ -67,6 +70,11 @@ module.exports = function(req, next, abort){ // prompt user to choose a plan inquirer.prompt([args]).then(function (answers) { helpers.gap() + if (answers.plan.comped){ + helpers.trunc(" Done".green + (" - On " + answers.plan.name + " plan, free of charge.").grey) + helpers.space() + process.exit() + } req.selectedPlan = answers.plan var p = req.selectedPlan.id.split("-")[0] req.plan = p.charAt(0).toUpperCase() + p.slice(1) diff --git a/lib/middleware/plans.js b/lib/middleware/plans.js index bba8368..e3102b9 100644 --- a/lib/middleware/plans.js +++ b/lib/middleware/plans.js @@ -13,9 +13,13 @@ module.exports = function(req, next, abort){ ? url.resolve(req.endpoint, path.join(req.domain, "plans")) : url.resolve(req.endpoint, "plans") + var headers = {} + if (req.argv.promo) headers.promo = req.argv.promo + var options = { 'url': plansUrl, 'method': 'get', + 'headers': headers, 'auth': { 'user': "token", 'pass': req.creds.token, diff --git a/lib/middleware/whitelist.js b/lib/middleware/whitelist.js index ac26c46..50893d7 100644 --- a/lib/middleware/whitelist.js +++ b/lib/middleware/whitelist.js @@ -3,7 +3,7 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform - var commands = ['h','b', 'd','e','a','r','v','V','p','endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'build','$0','_']; + var commands = ['h','b', 'd','e','a','r','v','V','p','endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; var args = []; for (param in req.argv) { diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index 88992f8..ea278fd 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -10,8 +10,13 @@ module.exports = function(req, next){ var str = req.creds.email.underline.grey if (req.account.plan){ str = str + (" - " + req.account.plan.name).grey + if (req.account.plan.comped === true){ + str = str + " (comped by surge)".grey + } } helpers.trunc(str) + + helpers.space() return next() } else { From bdb46aba6b8358998a69aa6ce89cb9927b3709d9 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 2 Mar 2018 05:13:29 -0800 Subject: [PATCH 029/214] removes deprecated libs --- package-lock.json | 76 +---------------------------------------------- package.json | 4 +-- 2 files changed, 2 insertions(+), 78 deletions(-) diff --git a/package-lock.json b/package-lock.json index e5e5dfd..1e84ad0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.0", + "version": "0.20.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -143,21 +143,6 @@ "restore-cursor": "2.0.0" } }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" - } - } - }, "cli-table2": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/cli-table2/-/cli-table2-0.2.0.tgz", @@ -619,11 +604,6 @@ } } }, - "keypress": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", - "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=" - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -718,11 +698,6 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, - "natives": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz", - "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==" - }, "ncp": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", @@ -1162,55 +1137,6 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" }, - "tar.gz": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/tar.gz/-/tar.gz-0.1.1.tgz", - "integrity": "sha1-6RTOI7L9xidXX72zSFpbIo7VmUc=", - "requires": { - "commander": "1.1.1", - "fstream": "0.1.31", - "tar": "0.1.20" - }, - "dependencies": { - "commander": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz", - "integrity": "sha1-UNFlGGiuYOzP8KLZ80WVN2vGsEE=", - "requires": { - "keypress": "0.1.0" - } - }, - "fstream": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", - "requires": { - "graceful-fs": "3.0.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "requires": { - "natives": "1.1.1" - } - }, - "tar": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", - "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=", - "requires": { - "block-stream": "0.0.9", - "fstream": "0.1.31", - "inherits": "2.0.3" - } - } - } - }, "tarr": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.0.3.tgz", diff --git a/package.json b/package.json index 6ce0c3b..d65091d 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,10 @@ { "name": "surge", - "version": "0.20.0", + "version": "0.20.1", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", "dependencies": { - "cli-table": "^0.3.1", "cli-table2": "^0.2.0", "du": "0.1.0", "fstream-ignore": "1.0.2", @@ -21,7 +20,6 @@ "split": "0.3.1", "surge-ignore": "0.2.0", "tarr": "1.0.3", - "tar.gz": "0.1.1", "url-parse-as-address": "1.0.0" }, "devDependencies": { From 4044eb8e0f0065f84dd036a0459d74dac5e1fe88 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 21 Apr 2018 04:30:48 -0700 Subject: [PATCH 030/214] updates tests --- package-lock.json | 6 +++--- test/fixtures/bin/{slapp => msurge} | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename test/fixtures/bin/{slapp => msurge} (100%) mode change 100644 => 100755 diff --git a/package-lock.json b/package-lock.json index 1e84ad0..8582981 100644 --- a/package-lock.json +++ b/package-lock.json @@ -472,9 +472,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.1.0.tgz", - "integrity": "sha512-kn7N70US1MSZHZHSGJLiZ7iCwwncc7b0gc68YtlX29OjI3Mp0tSVV+snVXpZ1G+ONS3Ac9zd1m6hve2ibLDYfA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "requires": { "ansi-escapes": "3.0.0", "chalk": "2.3.0", diff --git a/test/fixtures/bin/slapp b/test/fixtures/bin/msurge old mode 100644 new mode 100755 similarity index 100% rename from test/fixtures/bin/slapp rename to test/fixtures/bin/msurge From aca262d2816592e977eb8e90465100e6f010ccc6 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 21 Apr 2018 04:34:31 -0700 Subject: [PATCH 031/214] updates project output --- lib/middleware/deploy.js | 8 +++++++- lib/middleware/list.js | 1 - lib/middleware/project.js | 3 +-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 43513a4..16a2f07 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -153,12 +153,19 @@ module.exports = function(req, next){ // prompt for user } else + if (payload.hasOwnProperty("type") && payload.type === "cert") { + //console.log(payload.data) + helpers.log(helpers.smart("encryption:").grey + " " + payload.data.altnames.join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + } else + if (payload.hasOwnProperty("type") && payload.type === "ip") { req.success = true if (payload.data) { helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) } } else + + if (payload.hasOwnProperty("type") && payload.type === "event_registration") { if (payload.data) { console.log() @@ -181,7 +188,6 @@ module.exports = function(req, next){ } } else - if (payload.hasOwnProperty("type") && payload.type === "event_participant") { if (payload.data) { diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 00ab79b..ba569d9 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -39,7 +39,6 @@ module.exports = function(req, next){ var pn = project.planName.blue } } - var row = [ perm || project.domain, project.timeAgoInWords.grey, diff --git a/lib/middleware/project.js b/lib/middleware/project.js index dc9d129..74ed499 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/project.js @@ -3,7 +3,6 @@ var fs = require("fs") var helpers = require("./util/helpers") module.exports = function(req, next, abort){ - var label = " project:".grey if (req.project || req.argv.project || req.argv["_"][0]) { req.project = req.project || path.resolve(req.argv.project || req.argv["_"][0] || "") @@ -23,7 +22,7 @@ module.exports = function(req, next, abort){ var ask = function(suggestion){ req.read({ silent: false, - prompt: label, + prompt: helpers.smart("project:").grey, default: suggestion, edit: true, terminal: req.config.terminal, From d5889d2a4b5f1b63c67249d8645e4e2417e547f1 Mon Sep 17 00:00:00 2001 From: David Hayes Date: Wed, 30 May 2018 11:14:41 -0500 Subject: [PATCH 032/214] Fixing typo in help text. you => your --- lib/middleware/help.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 7e672ba..3e17be6 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -32,7 +32,7 @@ module.exports = function(req, next){ .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) .log(" Additional help " + "surge.sh/help".underline.grey) .log() - .log(" When in doubt, run ".grey + "surge".green.underline + " from within you project directory.".grey) + .log(" When in doubt, run ".grey + "surge".green.underline + " from within your project directory.".grey) .log() } else { From 129b396b2b98797eced2307514d58d0f4d7e9059 Mon Sep 17 00:00:00 2001 From: Ricardo Freitas Date: Tue, 26 Feb 2019 10:13:25 +0000 Subject: [PATCH 033/214] Bumped insecure dependencies --- lib/middleware/list.js | 8 +- package-lock.json | 880 ++++++++++++++++++++--------------------- package.json | 6 +- 3 files changed, 446 insertions(+), 448 deletions(-) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index ba569d9..af0ede9 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -1,6 +1,6 @@ var url = require("url") var request = require("request") -var Table = require("cli-table2") +var Table = require("cli-table3") var helpers = require("./util/helpers") module.exports = function(req, next){ @@ -20,7 +20,7 @@ module.exports = function(req, next){ var list = JSON.parse(obj) var table = new Table({ - //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], + //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' @@ -34,7 +34,7 @@ module.exports = function(req, next){ var perm = project.rev ? (project.rev + " ").grey + project.domain : "" if (project.planName) { if (project.planName.indexOf("Standard") !== -1){ - var pn = project.planName.grey + var pn = project.planName.grey }else{ var pn = project.planName.blue } @@ -59,4 +59,4 @@ module.exports = function(req, next){ next() }) -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index 8582981..6164074 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,32 +5,33 @@ "requires": true, "dependencies": { "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", + "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "array-filter": { @@ -51,6 +52,19 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, "assertion-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", @@ -67,10 +81,15 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "balanced-match": { "version": "1.0.0", @@ -78,12 +97,11 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -91,7 +109,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "brace-expansion": { @@ -99,7 +117,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -121,43 +139,85 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, - "cli-table2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/cli-table2/-/cli-table2-0.2.0.tgz", - "integrity": "sha1-LR738hig54biFFQFYtS9F3/jLZc=", + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "requires": { - "colors": "1.1.2", - "lodash": "3.10.1", - "string-width": "1.0.2" + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", "optional": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } } } }, @@ -172,9 +232,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "clone": { @@ -183,20 +243,16 @@ "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } @@ -211,13 +267,21 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { @@ -240,14 +304,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } + "assert-plus": "^1.0.0" } }, "debug": { @@ -270,6 +327,11 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", @@ -281,16 +343,16 @@ "resolved": "https://registry.npmjs.org/du/-/du-0.1.0.tgz", "integrity": "sha1-8m40CgnHvFtv1pr2263qYPqMb00=", "requires": { - "async": "0.1.22" + "async": "~0.1.22" } }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "escape-string-regexp": { @@ -299,18 +361,18 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, "extsprintf": { @@ -324,9 +386,9 @@ "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -338,7 +400,22 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -351,20 +428,20 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", - "integrity": "sha1-GMiR2wG3gqdKe/+Tag8kmXdBx6s=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "2.0.10" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "getpass": { @@ -372,14 +449,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } + "assert-plus": "^1.0.0" } }, "glob": { @@ -387,12 +457,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "dependencies": { "minimatch": { @@ -400,7 +470,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } } } @@ -428,18 +498,19 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true }, "he": { "version": "1.1.1", @@ -447,23 +518,36 @@ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "i": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -472,23 +556,23 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.1.0", - "figures": "2.0.0", - "lodash": "4.17.5", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", + "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rxjs": "5.5.6", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" }, "dependencies": { "ansi-regex": { @@ -502,25 +586,42 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==" + } } } } @@ -540,8 +641,9 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-promise": { @@ -562,8 +664,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "json-schema": { "version": "0.2.3", @@ -571,9 +672,9 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stringify-safe": { "version": "5.0.1", @@ -595,13 +696,6 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "lcid": { @@ -610,30 +704,33 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" - }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "requires": { + "mime-db": "~1.38.0" + } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -714,23 +811,34 @@ "integrity": "sha1-YjCeuVzSKPeZWCKiHbgXBbbs3Nw=", "dev": true, "requires": { - "assertion-error": "1.0.2", - "clone": "0.1.19", - "shell-quote": "1.6.1", - "string": "1.9.1" + "assertion-error": "~1.0.0", + "clone": "~0.1.11", + "shell-quote": "^1.4.1", + "string": "^1.8.1" } }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -738,7 +846,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "os-locale": { @@ -747,7 +855,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-tmpdir": { @@ -780,179 +888,61 @@ "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", "requires": { - "pkginfo": "0.4.1", - "read": "1.0.5", - "revalidator": "0.1.8", - "utile": "0.2.1", - "winston": "0.8.3" + "pkginfo": "0.x.x", + "read": "1.0.x", + "revalidator": "0.1.x", + "utile": "0.2.x", + "winston": "0.8.x" } }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "read": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", "requires": { - "mute-stream": "0.0.7" + "mute-stream": "~0.0.4" } }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.2.0" - } - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "requires": { - "delayed-stream": "1.0.0" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.2.0" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "1.30.0" - } - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.2.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "5.1.1" - } - } + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "restore-cursor": { @@ -960,8 +950,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "revalidator": { @@ -974,7 +964,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "run-async": { @@ -982,21 +972,26 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rxjs": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz", - "integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "requires": { - "symbol-observable": "1.0.1" + "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "shell-quote": { "version": "1.6.1", @@ -1004,10 +999,10 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "should": { @@ -1055,34 +1050,23 @@ "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", "requires": { - "through": "2.3.8" + "through": "2" } }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stack-trace": { @@ -1100,31 +1084,29 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } }, "surge-ignore": { @@ -1132,19 +1114,14 @@ "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" - }, "tarr": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.0.3.tgz", "integrity": "sha512-ax05RcadKxg/EyogjIzzsT5NUl7B5Io9ASrv02bOdMFtt4E9w29Ok5kI66qqq7SNc5ai43DG91ZluBMtDjPoTQ==", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "through": { @@ -1157,22 +1134,50 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" } }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } }, "url-parse-as-address": { "version": "1.0.0", @@ -1184,12 +1189,12 @@ "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", "requires": { - "async": "0.2.10", - "deep-equal": "1.0.1", - "i": "0.3.6", - "mkdirp": "0.5.1", - "ncp": "0.4.2", - "rimraf": "2.6.2" + "async": "~0.2.9", + "deep-equal": "*", + "i": "0.3.x", + "mkdirp": "0.x.x", + "ncp": "0.4.x", + "rimraf": "2.x.x" }, "dependencies": { "async": { @@ -1200,25 +1205,18 @@ } }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } + "extsprintf": "^1.2.0" } }, "window-size": { @@ -1232,13 +1230,13 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", "requires": { - "async": "0.2.10", - "colors": "0.6.2", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "pkginfo": "0.3.1", - "stack-trace": "0.0.10" + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" }, "dependencies": { "async": { @@ -1259,8 +1257,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { @@ -1280,12 +1278,12 @@ "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "window-size": "0.1.4", - "y18n": "3.2.1" + "camelcase": "^1.2.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "window-size": "^0.1.2", + "y18n": "^3.2.0" } } } diff --git a/package.json b/package.json index d65091d..9626181 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "author": "Brock Whitten ", "bin": "./lib/cli.js", "dependencies": { - "cli-table2": "^0.2.0", + "cli-table3": "^0.5.1", "du": "0.1.0", - "fstream-ignore": "1.0.2", + "fstream-ignore": "^1.0.5", "inquirer": "", "is-domain": "0.0.1", "minimist": "1.1.1", @@ -16,7 +16,7 @@ "progress": "1.1.8", "prompt": "~0.2.14", "read": "1.0.5", - "request": "2.83.0", + "request": "^2.88.0", "split": "0.3.1", "surge-ignore": "0.2.0", "tarr": "1.0.3", From a81e5b596554201e38a560e5bf84902a70ffacb3 Mon Sep 17 00:00:00 2001 From: Ricardo Freitas Date: Tue, 26 Feb 2019 10:27:20 +0000 Subject: [PATCH 034/214] increased test timeouts to make them pass --- test/basic.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/basic.js b/test/basic.js index d690d83..247df61 100644 --- a/test/basic.js +++ b/test/basic.js @@ -62,7 +62,7 @@ describe("surge " + testid + " using " + user, function () { var resultedDomain it('should create project', function (done) { - this.timeout(5000) + this.timeout(8000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge) @@ -91,7 +91,7 @@ describe("surge " + testid + " using " + user, function () { }) it('should update project', function (done) { - this.timeout(5000) + this.timeout(8000) nixt(opts) .exec(surge + 'logout') // Logout before the test starts .run(surge) @@ -232,7 +232,7 @@ describe("surge " + testid + " using " + user, function () { }) it('should create second project using session', function (done) { - this.timeout(5000) + this.timeout(8000) nixt(opts) .run(surge) .on(/.*project:.*/).respond('./test/fixtures/projects/hello-world\n') @@ -256,7 +256,7 @@ describe("surge " + testid + " using " + user, function () { }) it('should update project', function (done) { - this.timeout(2500) + this.timeout(5000) nixt(opts) .run(surge) .on(/.*project:.*/).respond('./test/fixtures/projects/hello-world\n') @@ -270,7 +270,7 @@ describe("surge " + testid + " using " + user, function () { }) it('should teardown project', function (done) { - this.timeout(2500) + this.timeout(5000) nixt(opts) .run(surge + 'teardown') .on(/.*domain:.*/).respond(domain + '\n') @@ -295,7 +295,7 @@ describe("surge " + testid + " using " + user, function () { describe('token', function () { it('`surge token`', function (done) { - this.timeout(1500) + this.timeout(2500) nixt(opts) .run(surge + 'token') .expect(function (result) { From b6d0794025ca4a059dd77d24452770a986dd1ce8 Mon Sep 17 00:00:00 2001 From: Ricardo Freitas Date: Tue, 26 Feb 2019 10:31:05 +0000 Subject: [PATCH 035/214] Fixed versions for inquirer and mocha in package.json --- package-lock.json | 55 ++++++++++++++++++++++++----------------------- package.json | 4 ++-- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6164074..927d6f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -122,9 +122,9 @@ } }, "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, "camelcase": { @@ -333,9 +333,9 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "diff": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", - "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, "du": { @@ -487,9 +487,9 @@ "dev": true }, "growl": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, "har-schema": { @@ -507,9 +507,9 @@ } }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "he": { @@ -754,27 +754,28 @@ } }, "mocha": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.0.tgz", - "integrity": "sha512-ukB2dF+u4aeJjc6IGtPNnJXfeby5d4ZqySlIBT0OEyva/DrMjVm5HkQxKnHDLKEfEQBsEnwTg9HHhtPHJdTd8w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", "dev": true, "requires": { - "browser-stdout": "1.3.0", - "commander": "2.11.0", + "browser-stdout": "1.3.1", + "commander": "2.15.1", "debug": "3.1.0", - "diff": "3.3.1", + "diff": "3.5.0", "escape-string-regexp": "1.0.5", "glob": "7.1.2", - "growl": "1.10.3", + "growl": "1.10.5", "he": "1.1.1", + "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "4.4.0" + "supports-color": "5.4.0" }, "dependencies": { "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true } } @@ -1101,12 +1102,12 @@ } }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^2.0.0" + "has-flag": "^3.0.0" } }, "surge-ignore": { diff --git a/package.json b/package.json index 9626181..1cddd16 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "cli-table3": "^0.5.1", "du": "0.1.0", "fstream-ignore": "^1.0.5", - "inquirer": "", + "inquirer": "^6.2.2", "is-domain": "0.0.1", "minimist": "1.1.1", "moniker": "0.1.2", @@ -24,7 +24,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "*", + "mocha": "^5.2.0", "nixt": "0.4.1", "should": "7.1.0", "yargs": "3.30.0" From 826926d1b4e251fb8c0a6bbc1b98d9c3d381ce95 Mon Sep 17 00:00:00 2001 From: Ricardo Freitas Date: Tue, 26 Feb 2019 10:31:34 +0000 Subject: [PATCH 036/214] removed unused du dependency --- lib/middleware/size.js | 1 - package.json | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/middleware/size.js b/lib/middleware/size.js index 58e7d89..93e422b 100644 --- a/lib/middleware/size.js +++ b/lib/middleware/size.js @@ -1,4 +1,3 @@ -var du = require("du") var helpers = require("./util/helpers") var fsReader = require('fstream-ignore') var fs = require("fs") diff --git a/package.json b/package.json index 1cddd16..76a7e17 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "bin": "./lib/cli.js", "dependencies": { "cli-table3": "^0.5.1", - "du": "0.1.0", "fstream-ignore": "^1.0.5", "inquirer": "^6.2.2", "is-domain": "0.0.1", From e1a474a2f3a4e78a37e31e12db5bd3b3fa4a5eac Mon Sep 17 00:00:00 2001 From: Ricardo Freitas Date: Tue, 26 Feb 2019 10:33:52 +0000 Subject: [PATCH 037/214] Fixed insecure dev dependency nixt --- package-lock.json | 36 ++++++++---------------------------- package.json | 2 +- 2 files changed, 9 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 927d6f9..46c29de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -71,11 +71,6 @@ "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", "dev": true }, - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -238,9 +233,9 @@ } }, "clone": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", - "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, "code-point-at": { @@ -338,14 +333,6 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "du": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/du/-/du-0.1.0.tgz", - "integrity": "sha1-8m40CgnHvFtv1pr2263qYPqMb00=", - "requires": { - "async": "~0.1.22" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -807,15 +794,14 @@ "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" }, "nixt": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/nixt/-/nixt-0.4.1.tgz", - "integrity": "sha1-YjCeuVzSKPeZWCKiHbgXBbbs3Nw=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/nixt/-/nixt-0.5.1.tgz", + "integrity": "sha512-FlRpYm9sopR+aN05WSTZUA68nolYbH1MRB8JnQfDquToyo1YJCTJvhKnQzNZV3XLHKcLVURWWtMgAJr5IZ2wUg==", "dev": true, "requires": { "assertion-error": "~1.0.0", - "clone": "~0.1.11", - "shell-quote": "^1.4.1", - "string": "^1.8.1" + "clone": "^1.0.2", + "shell-quote": "^1.4.1" } }, "number-is-nan": { @@ -1075,12 +1061,6 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, - "string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/string/-/string-1.9.1.tgz", - "integrity": "sha1-iq4c9WPep2dTjdej8NsiOYacYZ4=", - "dev": true - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", diff --git a/package.json b/package.json index 76a7e17..2d7e744 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "devDependencies": { "commander": "2.9.0", "mocha": "^5.2.0", - "nixt": "0.4.1", + "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" }, From 86f3b43091609e80564e8998a6718196370ca1fd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 13 Mar 2019 02:41:24 -0700 Subject: [PATCH 038/214] changes default message on card input --- lib/middleware/util/helpers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 22e1bfc..1d3d3ea 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -380,7 +380,7 @@ exports.payment = function(req, stripe_pk, existing){ req.plan ? log((" Enter playment info to change to the " + req.plan.underline + " plan.").grey) - : log((" Default message").grey) + : log((" Enter playment method to be used").grey) log() From 9c0a2435ca3635e37e54b9178e4f674e8236b36a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 13 Mar 2019 03:03:07 -0700 Subject: [PATCH 039/214] version bump v0.20.2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46c29de..e3a53cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.1", + "version": "0.20.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2d7e744..ba7a6a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.1", + "version": "0.20.2", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From 01947d9284f2483f8e4e0ef727b0040fccd38922 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 13 Mar 2019 03:07:01 -0700 Subject: [PATCH 040/214] version bump v0.20.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e3a53cc..fddd05e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.2", + "version": "0.20.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ba7a6a6..42f40c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.2", + "version": "0.20.3", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From 8d256a233cb79b0452b2669b0bbb11ea49d6a34f Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 13 Mar 2019 03:49:41 -0700 Subject: [PATCH 041/214] updates readme --- README.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0d79350..86d57df 100644 --- a/README.md +++ b/README.md @@ -17,28 +17,25 @@ It’s easier to show than tell so let’s get to it! The following command will Run `surge --help` to see the following overview of the `surge` command... ``` - Surge – Single-command web publishing. (v0.17.6) + + Surge – Single-command web publishing. (v0.20.3) Usage: - surge [options] + surge Options: - -p, --project path to projects asset directory (./) - -d, --domain domain of your project (.surge.sh) -a, --add adds user to list of collaborators (email address) -r, --remove removes user from list of collaborators (email address) -V, --version show the version number -h, --help show this help message - Shorthand usage: - surge [project] [domain] - Additional commands: surge whoami show who you are logged in as surge logout expire local token surge login only performs authentication step surge list list all domains you have access to surge teardown tear down a published project + surge plan set account plan Guides: Getting started surge.sh/help/getting-started-with-surge From 3e8ad6bbea083f6ead0563ecf5d6ee0eb3a231cb Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 22 Apr 2019 15:05:34 -0700 Subject: [PATCH 042/214] version bump v0.20.4. doesnt assume altname. fails more gracefully. --- lib/middleware/deploy.js | 8 ++++++-- package.json | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 16a2f07..cf189e5 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -154,8 +154,12 @@ module.exports = function(req, next){ // prompt for user } else if (payload.hasOwnProperty("type") && payload.type === "cert") { - //console.log(payload.data) - helpers.log(helpers.smart("encryption:").grey + " " + payload.data.altnames.join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + try{ + helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + } catch(e){ + console.log("ERROR (please report error to support@surge.sh") + console.log(e) + } } else if (payload.hasOwnProperty("type") && payload.type === "ip") { diff --git a/package.json b/package.json index 42f40c2..b4d4859 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.3", + "version": "0.20.4", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From 5a0f1c66f75972e99cfbff1752fc9b2f5e43845b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 15 May 2019 15:36:14 -0700 Subject: [PATCH 043/214] changes error message on setting card --- lib/middleware/setcard.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/middleware/setcard.js b/lib/middleware/setcard.js index 53e35b0..3927463 100644 --- a/lib/middleware/setcard.js +++ b/lib/middleware/setcard.js @@ -39,7 +39,7 @@ module.exports = function(req, next, abort){ } else { var obj = JSON.parse(b) console.log() - console.log(" Error ".red + " - " + obj.msg.grey) + console.log(" Error ".red + " - " + (obj.message || obj.msg).grey) console.log() } }) diff --git a/package.json b/package.json index b4d4859..090b8d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.4", + "version": "0.20.5", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From e32ef7be00ef325a9cf24ebce476cb888793dd2a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 May 2019 21:24:49 -0700 Subject: [PATCH 044/214] Adds token param to cli. version bump v0.21.0 --- lib/middleware/auth.js | 9 ++++++++- lib/middleware/creds.js | 9 ++++++++- lib/middleware/util/creds.js | 13 ------------- lib/middleware/welcome.js | 3 ++- lib/middleware/whoami.js | 2 +- package.json | 2 +- 6 files changed, 20 insertions(+), 18 deletions(-) diff --git a/lib/middleware/auth.js b/lib/middleware/auth.js index e29abef..4a6c6be 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/auth.js @@ -26,7 +26,14 @@ module.exports = function(req, next, abort){ req.account = account return callback() } else { - return authenticateAndSave(callback) + if (req.passintoken){ + helpers.space() + helpers.trunc("Invalid token") + helpers.space() + process.exit(1) + } else { + return authenticateAndSave(callback) + } } }) } diff --git a/lib/middleware/creds.js b/lib/middleware/creds.js index c02618d..5691a41 100644 --- a/lib/middleware/creds.js +++ b/lib/middleware/creds.js @@ -5,6 +5,13 @@ var localCreds = require("./util/creds.js") var helpers = require("./util/helpers.js") module.exports = function(req, next){ - req.creds = localCreds(req.endpoint).get() + req.passintoken = req.argv.token || process.env['SURGE_TOKEN'] || process.env['TRAVIS_SURGE_TOKEN'] || null + + if (req.passintoken){ + req.creds = { email: "token", token: req.passintoken } + } else { + req.creds = localCreds(req.endpoint).get() + } + next() } diff --git a/lib/middleware/util/creds.js b/lib/middleware/util/creds.js index 50a47d8..b567d89 100644 --- a/lib/middleware/util/creds.js +++ b/lib/middleware/util/creds.js @@ -20,19 +20,6 @@ module.exports = function(endpoint){ var obj = {} } - if (process.env['SURGE_LOGIN'] && process.env['SURGE_TOKEN']) { - return { - "email": process.env['SURGE_LOGIN'], - "token": process.env['SURGE_TOKEN'] - } - // Fallback to original implementation - } else if (process.env['TRAVIS_SURGE_LOGIN'] && process.env['TRAVIS_SURGE_TOKEN']) { - return { - "email": process.env['TRAVIS_SURGE_LOGIN'], - "token": process.env['TRAVIS_SURGE_TOKEN'] - } - } - if (obj.hasOwnProperty(host)) { return { "email": obj[host]["login"], diff --git a/lib/middleware/welcome.js b/lib/middleware/welcome.js index daa77bb..e59eae8 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/welcome.js @@ -1,6 +1,7 @@ var helpers = require("./util/helpers.js") -module.exports = function(req, next){ +module.exports = function(req, next){ + if (req.creds == null) { helpers.trunc(("Welcome to " + (req.config.name || "Surge").underline + "!").blue + (" (" + req.config.platform +")").grey) } diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index ea278fd..91a5f68 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -7,7 +7,7 @@ module.exports = function(req, next){ if (account){ req.account = account helpers.space() - var str = req.creds.email.underline.grey + var str = req.account.email.underline.grey if (req.account.plan){ str = str + (" - " + req.account.plan.name).grey if (req.account.plan.comped === true){ diff --git a/package.json b/package.json index 090b8d8..87e62fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.5", + "version": "0.21.0", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From 2e0f13ecb4b083e98abca7fe46a1c6830119d6ac Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 3 Jun 2019 01:03:12 -0700 Subject: [PATCH 045/214] configurable help --- lib/middleware/help.js | 18 +++++++++--------- lib/surge.js | 1 + package.json | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 3e17be6..9f73e43 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -4,10 +4,10 @@ module.exports = function(req, next){ if (req.argv.help || req.argv.h) { helpers .log() - .log(" Surge".bold, "– Single-command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) + .log(" " + req.config.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) .log() .log(" Usage:".grey) - .log(" surge ") + .log(" "+ req.config.name +" ") .log() .log(" Options:".grey) .log(" -a, --add adds user to list of collaborators (email address)") @@ -16,12 +16,12 @@ module.exports = function(req, next){ .log(" -h, --help show this help message") .log() .log(" Additional commands:".grey) - .log(" surge whoami show who you are logged in as") - .log(" surge logout expire local token") - .log(" surge login only performs authentication step") - .log(" surge list list all domains you have access to") - .log(" surge teardown tear down a published project") - .log(" surge plan set account plan") + .log(" "+ req.config.name +" whoami show who you are logged in as") + .log(" "+ req.config.name +" logout expire local token") + .log(" "+ req.config.name +" login only performs authentication step") + .log(" "+ req.config.name +" list list all domains you have access to") + .log(" "+ req.config.name +" teardown tear down a published project") + .log(" "+ req.config.name +" plan set account plan") .log() // .log(" Examples:".grey) // .log(" surge ./www example.com") @@ -32,7 +32,7 @@ module.exports = function(req, next){ .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) .log(" Additional help " + "surge.sh/help".underline.grey) .log() - .log(" When in doubt, run ".grey + "surge".green.underline + " from within your project directory.".grey) + .log(" When in doubt, run ".grey + req.config.name.green.underline + " from within your project directory.".grey) .log() } else { diff --git a/lib/surge.js b/lib/surge.js index 9a11269..1265fbc 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -84,6 +84,7 @@ module.exports = function(config){ : config.platform ? "https://surge." + config.platform : 'https://surge.surge.sh' config.platform = config.platform || "surge.sh" + config.name = config.name || "surge" var options = { alias: { diff --git a/package.json b/package.json index 87e62fd..36bdc04 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.0", + "version": "0.21.1", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From b0596da57b84a7aa526f6f1d89602b8eea75890c Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 3 Jun 2019 14:09:54 -0700 Subject: [PATCH 046/214] updating dependencies --- package-lock.json | 351 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 183 insertions(+), 170 deletions(-) diff --git a/package-lock.json b/package-lock.json index fddd05e..cdbfe1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.20.3", + "version": "0.21.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -9,10 +9,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "ansi-escapes": { @@ -31,7 +31,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "array-filter": { @@ -57,7 +57,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "2.1.2" } }, "assert-plus": { @@ -96,7 +96,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "block-stream": { @@ -104,7 +104,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "~2.0.0" + "inherits": "2.0.3" } }, "brace-expansion": { @@ -112,7 +112,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -138,9 +138,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" }, "dependencies": { "has-flag": { @@ -153,7 +153,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -168,7 +168,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "2.0.0" } }, "cli-table3": { @@ -176,9 +176,9 @@ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "colors": "1.3.3", + "object-assign": "4.1.1", + "string-width": "2.1.1" }, "dependencies": { "ansi-regex": { @@ -202,8 +202,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "strip-ansi": { @@ -211,7 +211,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -227,9 +227,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, "clone": { @@ -267,7 +267,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { @@ -276,7 +276,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": ">= 1.0.0" + "graceful-readlink": "1.0.1" } }, "concat-map": { @@ -299,7 +299,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "debug": { @@ -338,8 +338,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "escape-string-regexp": { @@ -357,9 +357,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "chardet": "0.7.0", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" } }, "extsprintf": { @@ -387,7 +387,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "1.0.5" } }, "forever-agent": { @@ -400,9 +400,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.7", + "mime-types": "2.1.22" } }, "fs.realpath": { @@ -415,10 +415,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" } }, "fstream-ignore": { @@ -426,9 +426,9 @@ "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" } }, "getpass": { @@ -436,7 +436,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "glob": { @@ -444,12 +444,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" }, "dependencies": { "minimatch": { @@ -457,7 +457,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.8" } } } @@ -489,8 +489,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "ajv": "6.9.2", + "har-schema": "2.0.0" } }, "has-flag": { @@ -510,9 +510,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" } }, "i": { @@ -525,7 +525,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "inflight": { @@ -533,8 +533,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -547,19 +547,19 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "3.0.3", + "figures": "2.0.0", + "lodash": "4.17.11", "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", - "through": "^2.3.6" + "run-async": "2.3.0", + "rxjs": "6.4.0", + "string-width": "2.1.1", + "strip-ansi": "5.0.0", + "through": "2.3.8" }, "dependencies": { "ansi-regex": { @@ -582,8 +582,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { "strip-ansi": { @@ -591,7 +591,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -601,7 +601,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "4.0.0" }, "dependencies": { "ansi-regex": { @@ -630,7 +630,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-promise": { @@ -691,7 +691,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "mime-db": { @@ -704,7 +704,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.38.0" } }, "mimic-fn": { @@ -717,7 +717,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.8" } }, "minimist": { @@ -799,9 +799,9 @@ "integrity": "sha512-FlRpYm9sopR+aN05WSTZUA68nolYbH1MRB8JnQfDquToyo1YJCTJvhKnQzNZV3XLHKcLVURWWtMgAJr5IZ2wUg==", "dev": true, "requires": { - "assertion-error": "~1.0.0", - "clone": "^1.0.2", - "shell-quote": "^1.4.1" + "assertion-error": "1.0.2", + "clone": "1.0.4", + "shell-quote": "1.6.1" } }, "number-is-nan": { @@ -825,7 +825,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "onetime": { @@ -833,7 +833,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "os-locale": { @@ -842,7 +842,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "^1.0.0" + "lcid": "1.0.0" } }, "os-tmpdir": { @@ -875,11 +875,11 @@ "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", "requires": { - "pkginfo": "0.x.x", - "read": "1.0.x", - "revalidator": "0.1.x", - "utile": "0.2.x", - "winston": "0.8.x" + "pkginfo": "0.4.1", + "read": "1.0.5", + "revalidator": "0.1.8", + "utile": "0.2.1", + "winston": "0.8.3" } }, "psl": { @@ -902,7 +902,7 @@ "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", "requires": { - "mute-stream": "~0.0.4" + "mute-stream": "0.0.7" } }, "request": { @@ -910,26 +910,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.7", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.22", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" } }, "restore-cursor": { @@ -937,8 +937,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "revalidator": { @@ -951,7 +951,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "run-async": { @@ -959,7 +959,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { - "is-promise": "^2.1.0" + "is-promise": "2.1.0" } }, "rxjs": { @@ -967,7 +967,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "requires": { - "tslib": "^1.9.0" + "tslib": "1.9.3" } }, "safe-buffer": { @@ -986,10 +986,10 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" } }, "should": { @@ -1037,7 +1037,7 @@ "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", "requires": { - "through": "2" + "through": "2.3.8" } }, "sshpk": { @@ -1045,15 +1045,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "stack-trace": { @@ -1067,9 +1067,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -1078,7 +1078,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1087,7 +1087,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "surge-ignore": { @@ -1096,13 +1096,26 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "tarr": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.0.3.tgz", - "integrity": "sha512-ax05RcadKxg/EyogjIzzsT5NUl7B5Io9ASrv02bOdMFtt4E9w29Ok5kI66qqq7SNc5ai43DG91ZluBMtDjPoTQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", + "integrity": "sha512-tENbQ43IQckay71stp1p1lljRhoEZpZk10FzEZKW2tJcMcnLwV3CfZdxBAERlH6nwnFvnHMS9eJOJl6IzSsG0g==", "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "block-stream": "0.0.9", + "fstream": "1.0.12", + "inherits": "2.0.3" + }, + "dependencies": { + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + } } }, "through": { @@ -1115,7 +1128,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "1.0.2" } }, "tough-cookie": { @@ -1123,8 +1136,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "1.1.31", + "punycode": "1.4.1" }, "dependencies": { "punycode": { @@ -1144,7 +1157,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -1157,7 +1170,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" } }, "url-parse-as-address": { @@ -1170,12 +1183,12 @@ "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", "requires": { - "async": "~0.2.9", - "deep-equal": "*", - "i": "0.3.x", - "mkdirp": "0.x.x", - "ncp": "0.4.x", - "rimraf": "2.x.x" + "async": "0.2.10", + "deep-equal": "1.0.1", + "i": "0.3.6", + "mkdirp": "0.5.1", + "ncp": "0.4.2", + "rimraf": "2.6.2" }, "dependencies": { "async": { @@ -1195,9 +1208,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "window-size": { @@ -1211,13 +1224,13 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", "requires": { - "async": "0.2.x", - "colors": "0.6.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" + "async": "0.2.10", + "colors": "0.6.2", + "cycle": "1.0.3", + "eyes": "0.1.8", + "isstream": "0.1.2", + "pkginfo": "0.3.1", + "stack-trace": "0.0.10" }, "dependencies": { "async": { @@ -1238,8 +1251,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" } }, "wrappy": { @@ -1259,12 +1272,12 @@ "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", "dev": true, "requires": { - "camelcase": "^1.2.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "window-size": "^0.1.2", - "y18n": "^3.2.0" + "camelcase": "1.2.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "window-size": "0.1.4", + "y18n": "3.2.1" } } } diff --git a/package.json b/package.json index 36bdc04..f2103da 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "request": "^2.88.0", "split": "0.3.1", "surge-ignore": "0.2.0", - "tarr": "1.0.3", + "tarr": "1.1.0", "url-parse-as-address": "1.0.0" }, "devDependencies": { From c2fff29f88728af348142d0a1673a5213f354b59 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 3 Jun 2019 14:20:10 -0700 Subject: [PATCH 047/214] updates dependencies --- package-lock.json | 44 +++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index cdbfe1b..6e616e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -410,27 +410,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -1090,6 +1069,29 @@ "has-flag": "3.0.0" } }, + "surge-fstream-ignore": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/surge-fstream-ignore/-/surge-fstream-ignore-1.0.6.tgz", + "integrity": "sha512-hNN52cz2fYCAzhlHmWPn4aE3bFbpBt01AkWFLljrtSzFvxlipLAeLuLtQ3t4f0RKoUkjzXWCAFK13WoET2iM1A==", + "requires": { + "fstream": "1.0.12", + "inherits": "2.0.3", + "minimatch": "3.0.4" + }, + "dependencies": { + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + } + } + }, "surge-ignore": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", diff --git a/package.json b/package.json index f2103da..d8285e6 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "bin": "./lib/cli.js", "dependencies": { "cli-table3": "^0.5.1", - "fstream-ignore": "^1.0.5", + "surge-fstream-ignore": "^1.0.6", "inquirer": "^6.2.2", "is-domain": "0.0.1", "minimist": "1.1.1", From c61b503a019af9bfe74dc5d54f39dcbeccd2a86a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 3 Jun 2019 14:21:26 -0700 Subject: [PATCH 048/214] updates dependencies --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d8285e6..c4dfe4f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.1", + "version": "0.21.2", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From 2ed7d79d683e89d0fc6cd5325cdd9f026d6e7f65 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 3 Jun 2019 18:13:16 -0700 Subject: [PATCH 049/214] fixes broken reference --- lib/middleware/deploy.js | 2 +- lib/middleware/prep.js | 2 +- lib/middleware/size.js | 2 +- package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index cf189e5..a7ebf03 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -4,7 +4,7 @@ var helpers = require('./util/helpers') var localCreds = require("./util/creds.js") var tar = require('tarr') var zlib = require('zlib') -var fsReader = require('fstream-ignore') +var fsReader = require('surge-fstream-ignore') var surge = require('../surge') var ProgressBar = require("progress") var split = require("split") diff --git a/lib/middleware/prep.js b/lib/middleware/prep.js index 8f8f003..ee2e970 100644 --- a/lib/middleware/prep.js +++ b/lib/middleware/prep.js @@ -2,7 +2,7 @@ var fs = require("fs") var path = require("path") var tar = require('tarr') var zlib = require('zlib') -var fsReader = require('fstream-ignore') +var fsReader = require('surge-fstream-ignore') var ignore = require("surge-ignore") module.exports = function(req, next){ diff --git a/lib/middleware/size.js b/lib/middleware/size.js index 93e422b..c385381 100644 --- a/lib/middleware/size.js +++ b/lib/middleware/size.js @@ -1,5 +1,5 @@ var helpers = require("./util/helpers") -var fsReader = require('fstream-ignore') +var fsReader = require('surge-fstream-ignore') var fs = require("fs") var ignore = require("surge-ignore") diff --git a/package.json b/package.json index c4dfe4f..50d083f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.2", + "version": "0.21.3", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From 63144d6c77a8aab70eb57e874f06f09407904ca0 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 30 Jun 2019 01:06:45 -0700 Subject: [PATCH 050/214] package-lock --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 6e616e3..4cc7827 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.1", + "version": "0.21.3", "lockfileVersion": 1, "requires": true, "dependencies": { From 52e08780fc185a5ce1ca8bb42af66488909622f7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 2 Dec 2019 23:32:49 -0800 Subject: [PATCH 051/214] adds cut command --- lib/middleware/cut/cutto.js | 8 ++ lib/middleware/cut/index.js | 16 +++ lib/middleware/cut/instructions.js | 7 ++ lib/middleware/cut/interactive.js | 75 ++++++++++++ lib/middleware/list.js | 167 ++++++++++++++++++-------- lib/middleware/util/table-revision.js | 57 +++++++++ lib/surge.js | 22 +++- 7 files changed, 302 insertions(+), 50 deletions(-) create mode 100644 lib/middleware/cut/cutto.js create mode 100644 lib/middleware/cut/index.js create mode 100644 lib/middleware/cut/instructions.js create mode 100644 lib/middleware/cut/interactive.js create mode 100644 lib/middleware/util/table-revision.js diff --git a/lib/middleware/cut/cutto.js b/lib/middleware/cut/cutto.js new file mode 100644 index 0000000..629f4ad --- /dev/null +++ b/lib/middleware/cut/cutto.js @@ -0,0 +1,8 @@ + +var helpers = require("../util/helpers") + +module.exports = function(req, next){ + helpers.trunc("cut cutto " + req.argv["_"][1]) + + return next() +} diff --git a/lib/middleware/cut/index.js b/lib/middleware/cut/index.js new file mode 100644 index 0000000..5edf53c --- /dev/null +++ b/lib/middleware/cut/index.js @@ -0,0 +1,16 @@ + +var instructions = require("./instructions.js") +var interactive = require("./interactive.js") +var cutto = require("./cutto.js") + +module.exports = function(req, next){ + + if (req.argv["_"].length === 0) { + return instructions(req, next) + } else if (req.argv["_"].length === 1) { + return interactive(req, next) + } else if (req.argv["_"].length === 2) { + return cutto(req, next) + } + +} diff --git a/lib/middleware/cut/instructions.js b/lib/middleware/cut/instructions.js new file mode 100644 index 0000000..cdf37bc --- /dev/null +++ b/lib/middleware/cut/instructions.js @@ -0,0 +1,7 @@ + +var helpers = require("../util/helpers") + +module.exports = function(req, next){ + helpers.trunc("cut instructions") + return next() +} diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js new file mode 100644 index 0000000..3aba4a8 --- /dev/null +++ b/lib/middleware/cut/interactive.js @@ -0,0 +1,75 @@ + +var url = require("url") +var request = require("request") +var Table = require("cli-table3") +var helpers = require("../util/helpers") +var inquirer = require("inquirer") + +var tableRevisions = require("../util/table-revision.js") + +module.exports = function(req, next){ + + var options = { + 'url': url.resolve(req.endpoint.format(), '/list/' + req.argv["_"][0]), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } + } + + request(options, function(e, r, obj){ + if (e) throw e + // TODO: handle 410 + // console.log(r.statusCode) + + var list = JSON.parse(obj) + + if (list.length == 0){ + helpers.trunc("Empty".blue + (" - There are no revisions for " + req.argv["_"][0]).grey) + return next() + } else { + + var table = tableRevisions(req.argv["_"][0], list) + var rows = table.toString().split("\n") + + var choice = function(revision, i){ + return { + short: " ", + value: revision, + name: rows[i] + } + } + + var indexOfCurrent = 0 + + + var choices = list.map(choice) + + var args = { + type: 'list', + name: 'revision', + default: indexOfCurrent, + choices: choices, + pageSize: 8, + separator: true, + message: ' ' + } + + inquirer.prompt([args]).then(function (answers) { + if (answers.revision.current){ + helpers.trunc("No change".green + " - Selected revision is already current".grey ) + } else { + helpers.trunc(("Switching " + req.argv["_"][0] + " to " + answers.revision.rev + "...").grey ) + } + + helpers.space() + return next() + }) + + } + + }) + +} diff --git a/lib/middleware/list.js b/lib/middleware/list.js index af0ede9..f0b4f53 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -5,58 +5,127 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ - var options = { - 'url': url.resolve(req.endpoint.format(), '/list'), - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true + var listAllProjects = function(){ + var options = { + 'url': url.resolve(req.endpoint.format(), '/list'), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } } - } - request(options, function(e, r, obj){ - if (e) throw e - var list = JSON.parse(obj) - - var table = new Table({ - //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], - chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' - , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' - , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' - , 'right': '' , 'right-mid': '' , 'middle': ' ' }, - style: { 'padding-left': 1, 'padding-right': 1 } - }) - //console.log(req) - var lastcmd = "" - if (list.length != 0) { - list.forEach(function(project){ - var perm = project.rev ? (project.rev + " ").grey + project.domain : "" - if (project.planName) { - if (project.planName.indexOf("Standard") !== -1){ - var pn = project.planName.grey - }else{ - var pn = project.planName.blue - } - } - var row = [ - perm || project.domain, - project.timeAgoInWords.grey, - project.cmd.grey, - project.platform.grey, - pn || "", - //lastcmd !== project.cmd ? (project.cmd).grey : "", - ] - table.push(row) - lastcmd = project.cmd + request(options, function(e, r, obj){ + if (e) throw e + var list = JSON.parse(obj) + + var table = new Table({ + //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], + chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' + , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' + , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' + , 'right': '' , 'right-mid': '' , 'middle': ' ' }, + style: { 'padding-left': 1, 'padding-right': 1 } }) - helpers.space() - helpers.log(table.toString()) - } else { - helpers.space() - helpers.trunc(("Empty").grey) + var lastcmd = "" + if (list.length != 0) { + list.forEach(function(project){ + var perm = project.rev ? (project.rev + " ").grey + project.domain : "" + if (project.planName) { + if (project.planName.indexOf("Standard") !== -1){ + var pn = project.planName.grey + }else{ + var pn = project.planName.blue + } + } + var row = [ + perm || project.domain, + project.timeAgoInWords.grey, + project.cmd.grey, + project.platform.grey, + pn || "", + //lastcmd !== project.cmd ? (project.cmd).grey : "", + ] + table.push(row) + lastcmd = project.cmd + }) + helpers.space() + helpers.log(table.toString()) + } else { + helpers.space() + helpers.trunc(("Empty").grey) + } + next() + }) + } + + var listSingleProject = function(){ + var options = { + 'url': url.resolve(req.endpoint.format(), '/list/' + req.argv["_"][0]), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } } - next() - }) + request(options, function(e, r, obj){ + if (e) throw e + var list = JSON.parse(obj) + list.reverse() + var table = new Table({ + chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' + , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' + , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' + , 'right': '' , 'right-mid': '' , 'middle': ' ' }, + style: { 'padding-left': 0, 'padding-right': 1 } + }) + var lastcmd = "" + project = req.project + if (list.length != 0) { + list.forEach(function(revision){ + + if (revision.current){ + var perm = revision.rev ? (revision.rev + ".").blue.underline + req.project.blue.underline : "" + var row = [ + perm || project.domain.blue.underline, + revision.email.blue.underline, + revision.fileCount.toString().blue.underline + " files".blue.underline, + revision.totalSize.toString().blue.underline + " bytes".blue.underline + ] + } else { + var perm = revision.rev ? (revision.rev + ".").grey + req.project.grey : "" + var row = [ + perm || project.domain, + revision.email.grey, + revision.fileCount.toString().grey + " files".grey, + revision.totalSize.toString().grey + " bytes".grey + ] + } + + + table.push(row) + lastcmd = project.cmd + }) + helpers.space() + helpers.log(table.toString()) + } else { + helpers.space() + helpers.trunc(("Empty").grey) + } + next() + }) + + } + + + if (req.argv["_"].length > 0) { + listSingleProject() + } else { + listAllProjects() + } + + } diff --git a/lib/middleware/util/table-revision.js b/lib/middleware/util/table-revision.js new file mode 100644 index 0000000..eee58e6 --- /dev/null +++ b/lib/middleware/util/table-revision.js @@ -0,0 +1,57 @@ + +var Table = require("cli-table3") + + +// returns a table +module.exports = function(project, revisions){ + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 1 + } + }) + + revisions.forEach(function(revision){ + if (revision.current){ + var perm = revision.rev ? (revision.rev + ".") + project : "" + var row = [ + (perm || project.domain).blue, + revision.email.blue, + (revision.fileCount.toString() + " files").blue, + (revision.totalSize.toString() + " bytes").blue, + ] + } else { + var perm = revision.rev ? (revision.rev + ".") + project : "" + var row = [ + perm || project.domain, + revision.email, + revision.fileCount.toString() + " files", + revision.totalSize.toString() + " bytes" + ] + } + table.push(row) + }) + + return table + +} + + + + \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index 1265fbc..6a16647 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -29,6 +29,7 @@ var ipaddress = require("./middleware/ipaddress") var login = require("./middleware/login") var shorthand = require("./middleware/shorthand") var list = require("./middleware/list") +var cut = require("./middleware/cut") var token = require("./middleware/token") var teardown = require("./middleware/teardown") var discovery = require("./middleware/discovery") @@ -113,7 +114,7 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - var commands = ["login", "logout", "whoami", "list", "publish", "teardown", "token", "plus", "ssl", "plan", "card"] + var commands = ["login", "logout", "whoami", "list", "cut", "publish", "teardown", "token", "plus", "ssl", "plan", "card"] if (commands.indexOf(cmd) !== -1) { argv._.shift() @@ -244,6 +245,25 @@ module.exports = function(config){ } } + surge.cut = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, shorthand, + cut, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.teardown = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub From 2e4f73dd344a7178dcebc6010c3b3474d0f2caf0 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 6 Dec 2019 00:58:48 -0800 Subject: [PATCH 052/214] consolidated cutto into one helper function --- lib/middleware/cut/cutto.js | 7 +- lib/middleware/cut/interactive.js | 6 +- lib/middleware/util/helpers.js | 5 + package-lock.json | 338 +++++++++++++++--------------- 4 files changed, 179 insertions(+), 177 deletions(-) diff --git a/lib/middleware/cut/cutto.js b/lib/middleware/cut/cutto.js index 629f4ad..0b0ef50 100644 --- a/lib/middleware/cut/cutto.js +++ b/lib/middleware/cut/cutto.js @@ -1,8 +1,7 @@ -var helpers = require("../util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ - helpers.trunc("cut cutto " + req.argv["_"][1]) - - return next() + helpers.space() + return helpers.cutto(req.argv["_"][0], req.argv["_"][1], next) } diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js index 3aba4a8..7789733 100644 --- a/lib/middleware/cut/interactive.js +++ b/lib/middleware/cut/interactive.js @@ -60,12 +60,10 @@ module.exports = function(req, next){ inquirer.prompt([args]).then(function (answers) { if (answers.revision.current){ helpers.trunc("No change".green + " - Selected revision is already current".grey ) + return next() } else { - helpers.trunc(("Switching " + req.argv["_"][0] + " to " + answers.revision.rev + "...").grey ) + return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) } - - helpers.space() - return next() }) } diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 1d3d3ea..7c21e7a 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -91,6 +91,11 @@ exports.stacktrace = function(str, options){ return context } +var cutto = exports.cutto = function(domain, rev, callback){ + trunc("cut "+ domain.underline +" to " + rev) + callback() +} + var fetchAccount = exports.fetchAccount = function(endpoint){ diff --git a/package-lock.json b/package-lock.json index 4cc7827..3e826ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-escapes": { @@ -31,7 +31,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "array-filter": { @@ -57,7 +57,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { @@ -96,7 +96,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -104,7 +104,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "brace-expansion": { @@ -112,7 +112,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -138,9 +138,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "has-flag": { @@ -153,7 +153,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -168,7 +168,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-table3": { @@ -176,9 +176,9 @@ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "requires": { - "colors": "1.3.3", - "object-assign": "4.1.1", - "string-width": "2.1.1" + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" }, "dependencies": { "ansi-regex": { @@ -202,8 +202,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -211,7 +211,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -227,9 +227,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "clone": { @@ -267,7 +267,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -276,7 +276,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { @@ -299,7 +299,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -338,8 +338,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "escape-string-regexp": { @@ -357,9 +357,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "requires": { - "chardet": "0.7.0", - "iconv-lite": "0.4.24", - "tmp": "0.0.33" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, "extsprintf": { @@ -387,7 +387,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "forever-agent": { @@ -400,9 +400,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.7", - "mime-types": "2.1.22" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -415,7 +415,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -423,12 +423,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "dependencies": { "minimatch": { @@ -436,7 +436,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } } } @@ -468,8 +468,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "6.9.2", - "har-schema": "2.0.0" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has-flag": { @@ -489,9 +489,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.16.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "i": { @@ -504,7 +504,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "inflight": { @@ -512,8 +512,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -526,19 +526,19 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", "requires": { - "ansi-escapes": "3.2.0", - "chalk": "2.4.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "3.0.3", - "figures": "2.0.0", - "lodash": "4.17.11", + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rxjs": "6.4.0", - "string-width": "2.1.1", - "strip-ansi": "5.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" }, "dependencies": { "ansi-regex": { @@ -561,8 +561,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "strip-ansi": { @@ -570,7 +570,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -580,7 +580,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "requires": { - "ansi-regex": "4.0.0" + "ansi-regex": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -609,7 +609,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-promise": { @@ -670,7 +670,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "mime-db": { @@ -683,7 +683,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "requires": { - "mime-db": "1.38.0" + "mime-db": "~1.38.0" } }, "mimic-fn": { @@ -696,7 +696,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -778,9 +778,9 @@ "integrity": "sha512-FlRpYm9sopR+aN05WSTZUA68nolYbH1MRB8JnQfDquToyo1YJCTJvhKnQzNZV3XLHKcLVURWWtMgAJr5IZ2wUg==", "dev": true, "requires": { - "assertion-error": "1.0.2", - "clone": "1.0.4", - "shell-quote": "1.6.1" + "assertion-error": "~1.0.0", + "clone": "^1.0.2", + "shell-quote": "^1.4.1" } }, "number-is-nan": { @@ -804,7 +804,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -812,7 +812,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "os-locale": { @@ -821,7 +821,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-tmpdir": { @@ -854,11 +854,11 @@ "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", "requires": { - "pkginfo": "0.4.1", - "read": "1.0.5", - "revalidator": "0.1.8", - "utile": "0.2.1", - "winston": "0.8.3" + "pkginfo": "0.x.x", + "read": "1.0.x", + "revalidator": "0.1.x", + "utile": "0.2.x", + "winston": "0.8.x" } }, "psl": { @@ -881,7 +881,7 @@ "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", "requires": { - "mute-stream": "0.0.7" + "mute-stream": "~0.0.4" } }, "request": { @@ -889,26 +889,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.7", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.3", - "har-validator": "5.1.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.22", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "restore-cursor": { @@ -916,8 +916,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "revalidator": { @@ -930,7 +930,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "run-async": { @@ -938,7 +938,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rxjs": { @@ -946,7 +946,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "requires": { - "tslib": "1.9.3" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -965,10 +965,10 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "should": { @@ -1016,7 +1016,7 @@ "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", "requires": { - "through": "2.3.8" + "through": "2" } }, "sshpk": { @@ -1024,15 +1024,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stack-trace": { @@ -1046,9 +1046,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -1057,7 +1057,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1066,7 +1066,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "surge-fstream-ignore": { @@ -1074,9 +1074,9 @@ "resolved": "https://registry.npmjs.org/surge-fstream-ignore/-/surge-fstream-ignore-1.0.6.tgz", "integrity": "sha512-hNN52cz2fYCAzhlHmWPn4aE3bFbpBt01AkWFLljrtSzFvxlipLAeLuLtQ3t4f0RKoUkjzXWCAFK13WoET2iM1A==", "requires": { - "fstream": "1.0.12", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": ">=1.0.12", + "inherits": "2", + "minimatch": "^3.0.0" }, "dependencies": { "fstream": { @@ -1084,10 +1084,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } } } @@ -1102,9 +1102,9 @@ "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", "integrity": "sha512-tENbQ43IQckay71stp1p1lljRhoEZpZk10FzEZKW2tJcMcnLwV3CfZdxBAERlH6nwnFvnHMS9eJOJl6IzSsG0g==", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.12", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": ">=1.0.12", + "inherits": "2" }, "dependencies": { "fstream": { @@ -1112,10 +1112,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } } } @@ -1130,7 +1130,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "tough-cookie": { @@ -1138,8 +1138,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "1.1.31", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" }, "dependencies": { "punycode": { @@ -1159,7 +1159,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -1172,7 +1172,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" } }, "url-parse-as-address": { @@ -1185,12 +1185,12 @@ "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", "requires": { - "async": "0.2.10", - "deep-equal": "1.0.1", - "i": "0.3.6", - "mkdirp": "0.5.1", - "ncp": "0.4.2", - "rimraf": "2.6.2" + "async": "~0.2.9", + "deep-equal": "*", + "i": "0.3.x", + "mkdirp": "0.x.x", + "ncp": "0.4.x", + "rimraf": "2.x.x" }, "dependencies": { "async": { @@ -1210,9 +1210,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "window-size": { @@ -1226,13 +1226,13 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", "requires": { - "async": "0.2.10", - "colors": "0.6.2", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "pkginfo": "0.3.1", - "stack-trace": "0.0.10" + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" }, "dependencies": { "async": { @@ -1253,8 +1253,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { @@ -1274,12 +1274,12 @@ "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "window-size": "0.1.4", - "y18n": "3.2.1" + "camelcase": "^1.2.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "window-size": "^0.1.2", + "y18n": "^3.2.0" } } } From 327a3992a99973ef89d1a6d036fdd39e70736e32 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Dec 2019 15:51:28 -0800 Subject: [PATCH 053/214] renaming files --- lib/middleware/{ => _shared}/auth.js | 4 +- lib/middleware/{ => _shared}/card.js | 2 +- lib/middleware/{ => _shared}/creds.js | 4 +- lib/middleware/{ => _shared}/deploy.js | 6 +- lib/middleware/{ => _shared}/discovery.js | 2 +- lib/middleware/{ => _shared}/domain.js | 2 +- .../{ => _shared}/domainOrSilent.js | 2 +- lib/middleware/{ => _shared}/email.js | 2 +- lib/middleware/{ => _shared}/endpoint.js | 0 lib/middleware/{ => _shared}/index.js | 0 lib/middleware/{ => _shared}/ipaddress.js | 0 lib/middleware/{ => _shared}/list.js | 2 +- lib/middleware/{ => _shared}/log.js | 2 +- lib/middleware/{ => _shared}/login.js | 2 +- lib/middleware/{ => _shared}/logout.js | 4 +- lib/middleware/{ => _shared}/payment.js | 2 +- lib/middleware/{ => _shared}/pemOrSilent.js | 2 +- lib/middleware/_shared/pkg.js | 5 + lib/middleware/{ => _shared}/plan.js | 2 +- lib/middleware/{ => _shared}/plans.js | 2 +- lib/middleware/{ => _shared}/plus.js | 2 +- lib/middleware/{ => _shared}/prep.js | 0 lib/middleware/{ => _shared}/project.js | 2 +- lib/middleware/{ => _shared}/protocol.js | 0 lib/middleware/{ => _shared}/setcard.js | 2 +- lib/middleware/{ => _shared}/shorthand.js | 0 lib/middleware/{ => _shared}/size.js | 2 +- lib/middleware/{ => _shared}/ssl.js | 2 +- lib/middleware/{ => _shared}/stats.js | 2 +- lib/middleware/{ => _shared}/subscribe.js | 2 +- lib/middleware/{ => _shared}/subscription.js | 2 +- lib/middleware/{ => _shared}/teardown.js | 2 +- lib/middleware/{ => _shared}/token.js | 2 +- lib/middleware/{ => _shared}/tokencheck.js | 4 +- lib/middleware/{ => _shared}/version.js | 4 +- lib/middleware/{ => _shared}/welcome.js | 2 +- lib/middleware/{ => _shared}/whitelist.js | 4 +- lib/middleware/{ => _shared}/whoami.js | 4 +- lib/middleware/cut/index.js | 2 + lib/middleware/cutover.js | 14 ++ lib/middleware/pkg.js | 5 - lib/middleware/rollback.js | 0 lib/middleware/rollfore.js | 0 lib/middleware/select.js | 7 + lib/middleware/yankrev.js | 0 lib/surge.js | 157 ++++++++++++------ 46 files changed, 176 insertions(+), 94 deletions(-) rename lib/middleware/{ => _shared}/auth.js (92%) rename lib/middleware/{ => _shared}/card.js (83%) rename lib/middleware/{ => _shared}/creds.js (81%) rename lib/middleware/{ => _shared}/deploy.js (98%) rename lib/middleware/{ => _shared}/discovery.js (96%) rename lib/middleware/{ => _shared}/domain.js (97%) rename lib/middleware/{ => _shared}/domainOrSilent.js (95%) rename lib/middleware/{ => _shared}/email.js (97%) rename lib/middleware/{ => _shared}/endpoint.js (100%) rename lib/middleware/{ => _shared}/index.js (100%) rename lib/middleware/{ => _shared}/ipaddress.js (100%) rename lib/middleware/{ => _shared}/list.js (98%) rename lib/middleware/{ => _shared}/log.js (64%) rename lib/middleware/{ => _shared}/login.js (86%) rename lib/middleware/{ => _shared}/logout.js (82%) rename lib/middleware/{ => _shared}/payment.js (89%) rename lib/middleware/{ => _shared}/pemOrSilent.js (95%) create mode 100644 lib/middleware/_shared/pkg.js rename lib/middleware/{ => _shared}/plan.js (97%) rename lib/middleware/{ => _shared}/plans.js (94%) rename lib/middleware/{ => _shared}/plus.js (98%) rename lib/middleware/{ => _shared}/prep.js (100%) rename lib/middleware/{ => _shared}/project.js (97%) rename lib/middleware/{ => _shared}/protocol.js (100%) rename lib/middleware/{ => _shared}/setcard.js (96%) rename lib/middleware/{ => _shared}/shorthand.js (100%) rename lib/middleware/{ => _shared}/size.js (96%) rename lib/middleware/{ => _shared}/ssl.js (98%) rename lib/middleware/{ => _shared}/stats.js (96%) rename lib/middleware/{ => _shared}/subscribe.js (95%) rename lib/middleware/{ => _shared}/subscription.js (95%) rename lib/middleware/{ => _shared}/teardown.js (96%) rename lib/middleware/{ => _shared}/token.js (79%) rename lib/middleware/{ => _shared}/tokencheck.js (89%) rename lib/middleware/{ => _shared}/version.js (68%) rename lib/middleware/{ => _shared}/welcome.js (81%) rename lib/middleware/{ => _shared}/whitelist.js (66%) rename lib/middleware/{ => _shared}/whoami.js (91%) create mode 100644 lib/middleware/cutover.js delete mode 100644 lib/middleware/pkg.js create mode 100644 lib/middleware/rollback.js create mode 100644 lib/middleware/rollfore.js create mode 100644 lib/middleware/select.js create mode 100644 lib/middleware/yankrev.js diff --git a/lib/middleware/auth.js b/lib/middleware/_shared/auth.js similarity index 92% rename from lib/middleware/auth.js rename to lib/middleware/_shared/auth.js index 4a6c6be..03dfcdf 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/_shared/auth.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("./util/creds.js") -var helpers = require("./util/helpers.js") +var localCreds = require("../util/creds.js") +var helpers = require("../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/card.js b/lib/middleware/_shared/card.js similarity index 83% rename from lib/middleware/card.js rename to lib/middleware/_shared/card.js index 52c8f6b..9dd14e0 100644 --- a/lib/middleware/card.js +++ b/lib/middleware/_shared/card.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/creds.js b/lib/middleware/_shared/creds.js similarity index 81% rename from lib/middleware/creds.js rename to lib/middleware/_shared/creds.js index 5691a41..ed979dc 100644 --- a/lib/middleware/creds.js +++ b/lib/middleware/_shared/creds.js @@ -1,8 +1,8 @@ var path = require("path") var fs = require("fs") var netrc = require("netrc") -var localCreds = require("./util/creds.js") -var helpers = require("./util/helpers.js") +var localCreds = require("../util/creds.js") +var helpers = require("../util/helpers.js") module.exports = function(req, next){ req.passintoken = req.argv.token || process.env['SURGE_TOKEN'] || process.env['TRAVIS_SURGE_TOKEN'] || null diff --git a/lib/middleware/deploy.js b/lib/middleware/_shared/deploy.js similarity index 98% rename from lib/middleware/deploy.js rename to lib/middleware/_shared/deploy.js index a7ebf03..bfa85ea 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/_shared/deploy.js @@ -1,11 +1,11 @@ var fs = require("fs") var request = require("request") -var helpers = require('./util/helpers') -var localCreds = require("./util/creds.js") +var helpers = require('../util/helpers') +var localCreds = require("../util/creds.js") var tar = require('tarr') var zlib = require('zlib') var fsReader = require('surge-fstream-ignore') -var surge = require('../surge') +var surge = require('../../surge') var ProgressBar = require("progress") var split = require("split") var url = require("url") diff --git a/lib/middleware/discovery.js b/lib/middleware/_shared/discovery.js similarity index 96% rename from lib/middleware/discovery.js rename to lib/middleware/_shared/discovery.js index 2a1eb61..ca5e90f 100644 --- a/lib/middleware/discovery.js +++ b/lib/middleware/_shared/discovery.js @@ -3,7 +3,7 @@ var moniker = require("moniker") var fs = require("fs") var path = require("path") var os = require("os") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") exports.suggestDomainFromCname = function(req, next){ diff --git a/lib/middleware/domain.js b/lib/middleware/_shared/domain.js similarity index 97% rename from lib/middleware/domain.js rename to lib/middleware/_shared/domain.js index 80e8a49..27f5927 100644 --- a/lib/middleware/domain.js +++ b/lib/middleware/_shared/domain.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/domainOrSilent.js b/lib/middleware/_shared/domainOrSilent.js similarity index 95% rename from lib/middleware/domainOrSilent.js rename to lib/middleware/_shared/domainOrSilent.js index 63a97c5..6ccb5d6 100644 --- a/lib/middleware/domainOrSilent.js +++ b/lib/middleware/_shared/domainOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/email.js b/lib/middleware/_shared/email.js similarity index 97% rename from lib/middleware/email.js rename to lib/middleware/_shared/email.js index a3917fd..1522b68 100644 --- a/lib/middleware/email.js +++ b/lib/middleware/_shared/email.js @@ -1,5 +1,5 @@ var pattern = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ //var label = " email:".grey diff --git a/lib/middleware/endpoint.js b/lib/middleware/_shared/endpoint.js similarity index 100% rename from lib/middleware/endpoint.js rename to lib/middleware/_shared/endpoint.js diff --git a/lib/middleware/index.js b/lib/middleware/_shared/index.js similarity index 100% rename from lib/middleware/index.js rename to lib/middleware/_shared/index.js diff --git a/lib/middleware/ipaddress.js b/lib/middleware/_shared/ipaddress.js similarity index 100% rename from lib/middleware/ipaddress.js rename to lib/middleware/_shared/ipaddress.js diff --git a/lib/middleware/list.js b/lib/middleware/_shared/list.js similarity index 98% rename from lib/middleware/list.js rename to lib/middleware/_shared/list.js index f0b4f53..8878b04 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/_shared/list.js @@ -1,7 +1,7 @@ var url = require("url") var request = require("request") var Table = require("cli-table3") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ diff --git a/lib/middleware/log.js b/lib/middleware/_shared/log.js similarity index 64% rename from lib/middleware/log.js rename to lib/middleware/_shared/log.js index 155ff32..bf1ae72 100644 --- a/lib/middleware/log.js +++ b/lib/middleware/_shared/log.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ helpers.show() diff --git a/lib/middleware/login.js b/lib/middleware/_shared/login.js similarity index 86% rename from lib/middleware/login.js rename to lib/middleware/_shared/login.js index c30d888..2bb1ff5 100644 --- a/lib/middleware/login.js +++ b/lib/middleware/_shared/login.js @@ -1,5 +1,5 @@ var path = require("path") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ helpers.log() diff --git a/lib/middleware/logout.js b/lib/middleware/_shared/logout.js similarity index 82% rename from lib/middleware/logout.js rename to lib/middleware/_shared/logout.js index 7e37cee..64b34f4 100644 --- a/lib/middleware/logout.js +++ b/lib/middleware/_shared/logout.js @@ -1,5 +1,5 @@ -var helpers = require("./util/helpers") -var localCreds = require("./util/creds.js") +var helpers = require("../util/helpers") +var localCreds = require("../util/creds.js") var path = require("path") module.exports = function(req, next){ diff --git a/lib/middleware/payment.js b/lib/middleware/_shared/payment.js similarity index 89% rename from lib/middleware/payment.js rename to lib/middleware/_shared/payment.js index 229720c..9f318ba 100644 --- a/lib/middleware/payment.js +++ b/lib/middleware/_shared/payment.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/pemOrSilent.js b/lib/middleware/_shared/pemOrSilent.js similarity index 95% rename from lib/middleware/pemOrSilent.js rename to lib/middleware/_shared/pemOrSilent.js index ce2184c..ba83edb 100644 --- a/lib/middleware/pemOrSilent.js +++ b/lib/middleware/_shared/pemOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/pkg.js b/lib/middleware/_shared/pkg.js new file mode 100644 index 0000000..174168b --- /dev/null +++ b/lib/middleware/_shared/pkg.js @@ -0,0 +1,5 @@ + +module.exports = function(req, next){ + req.pkg = require(__dirname + "/../../../package.json") + next() +} \ No newline at end of file diff --git a/lib/middleware/plan.js b/lib/middleware/_shared/plan.js similarity index 97% rename from lib/middleware/plan.js rename to lib/middleware/_shared/plan.js index eaaacec..9faf2cf 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/_shared/plan.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/plans.js b/lib/middleware/_shared/plans.js similarity index 94% rename from lib/middleware/plans.js rename to lib/middleware/_shared/plans.js index e3102b9..4a79a2b 100644 --- a/lib/middleware/plans.js +++ b/lib/middleware/_shared/plans.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/plus.js b/lib/middleware/_shared/plus.js similarity index 98% rename from lib/middleware/plus.js rename to lib/middleware/_shared/plus.js index 177cac7..9948376 100644 --- a/lib/middleware/plus.js +++ b/lib/middleware/_shared/plus.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/prep.js b/lib/middleware/_shared/prep.js similarity index 100% rename from lib/middleware/prep.js rename to lib/middleware/_shared/prep.js diff --git a/lib/middleware/project.js b/lib/middleware/_shared/project.js similarity index 97% rename from lib/middleware/project.js rename to lib/middleware/_shared/project.js index 74ed499..3f5067a 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/_shared/project.js @@ -1,6 +1,6 @@ var path = require("path") var fs = require("fs") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/protocol.js b/lib/middleware/_shared/protocol.js similarity index 100% rename from lib/middleware/protocol.js rename to lib/middleware/_shared/protocol.js diff --git a/lib/middleware/setcard.js b/lib/middleware/_shared/setcard.js similarity index 96% rename from lib/middleware/setcard.js rename to lib/middleware/_shared/setcard.js index 3927463..df11699 100644 --- a/lib/middleware/setcard.js +++ b/lib/middleware/_shared/setcard.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/shorthand.js b/lib/middleware/_shared/shorthand.js similarity index 100% rename from lib/middleware/shorthand.js rename to lib/middleware/_shared/shorthand.js diff --git a/lib/middleware/size.js b/lib/middleware/_shared/size.js similarity index 96% rename from lib/middleware/size.js rename to lib/middleware/_shared/size.js index c385381..6128088 100644 --- a/lib/middleware/size.js +++ b/lib/middleware/_shared/size.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var fsReader = require('surge-fstream-ignore') var fs = require("fs") var ignore = require("surge-ignore") diff --git a/lib/middleware/ssl.js b/lib/middleware/_shared/ssl.js similarity index 98% rename from lib/middleware/ssl.js rename to lib/middleware/_shared/ssl.js index 2a51225..c222ee4 100644 --- a/lib/middleware/ssl.js +++ b/lib/middleware/_shared/ssl.js @@ -1,6 +1,6 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/stats.js b/lib/middleware/_shared/stats.js similarity index 96% rename from lib/middleware/stats.js rename to lib/middleware/_shared/stats.js index 823a70c..5633eec 100644 --- a/lib/middleware/stats.js +++ b/lib/middleware/_shared/stats.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/subscribe.js b/lib/middleware/_shared/subscribe.js similarity index 95% rename from lib/middleware/subscribe.js rename to lib/middleware/_shared/subscribe.js index 5e3e170..d4e33c2 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/_shared/subscribe.js @@ -2,7 +2,7 @@ var request = require("request") var url = require("url") var path = require("path") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/subscription.js b/lib/middleware/_shared/subscription.js similarity index 95% rename from lib/middleware/subscription.js rename to lib/middleware/_shared/subscription.js index d3eeb6c..1de02f9 100644 --- a/lib/middleware/subscription.js +++ b/lib/middleware/_shared/subscription.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/teardown.js b/lib/middleware/_shared/teardown.js similarity index 96% rename from lib/middleware/teardown.js rename to lib/middleware/_shared/teardown.js index 77a2caa..fe38db1 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/_shared/teardown.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/token.js b/lib/middleware/_shared/token.js similarity index 79% rename from lib/middleware/token.js rename to lib/middleware/_shared/token.js index f48f69e..1c79c1a 100644 --- a/lib/middleware/token.js +++ b/lib/middleware/_shared/token.js @@ -1,5 +1,5 @@ var path = require("path") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ //console.log(req.authed) diff --git a/lib/middleware/tokencheck.js b/lib/middleware/_shared/tokencheck.js similarity index 89% rename from lib/middleware/tokencheck.js rename to lib/middleware/_shared/tokencheck.js index d46a611..3102b87 100644 --- a/lib/middleware/tokencheck.js +++ b/lib/middleware/_shared/tokencheck.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("./util/creds.js") -var helpers = require("./util/helpers.js") +var localCreds = require("../util/creds.js") +var helpers = require("../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/version.js b/lib/middleware/_shared/version.js similarity index 68% rename from lib/middleware/version.js rename to lib/middleware/_shared/version.js index d2e4f1c..e0ff93b 100644 --- a/lib/middleware/version.js +++ b/lib/middleware/_shared/version.js @@ -1,5 +1,5 @@ -var pkg = require("../../package.json") -var helpers = require("./util/helpers.js") +var pkg = require("../../../package.json") +var helpers = require("../util/helpers.js") module.exports = function(req, next){ if (req.argv.version || req.argv.V) { diff --git a/lib/middleware/welcome.js b/lib/middleware/_shared/welcome.js similarity index 81% rename from lib/middleware/welcome.js rename to lib/middleware/_shared/welcome.js index e59eae8..2976555 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/_shared/welcome.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers.js") +var helpers = require("../util/helpers.js") module.exports = function(req, next){ diff --git a/lib/middleware/whitelist.js b/lib/middleware/_shared/whitelist.js similarity index 66% rename from lib/middleware/whitelist.js rename to lib/middleware/_shared/whitelist.js index 50893d7..129844c 100644 --- a/lib/middleware/whitelist.js +++ b/lib/middleware/_shared/whitelist.js @@ -1,9 +1,9 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform - var commands = ['h','b', 'd','e','a','r','v','V','p','endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; + var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; var args = []; for (param in req.argv) { diff --git a/lib/middleware/whoami.js b/lib/middleware/_shared/whoami.js similarity index 91% rename from lib/middleware/whoami.js rename to lib/middleware/_shared/whoami.js index 91a5f68..dc356ea 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/_shared/whoami.js @@ -1,5 +1,5 @@ -var helpers = require("./util/helpers") -var creds = require("./util/creds") +var helpers = require("../util/helpers") +var creds = require("../util/creds") module.exports = function(req, next){ if (req.creds && req.creds.token) { diff --git a/lib/middleware/cut/index.js b/lib/middleware/cut/index.js index 5edf53c..9fea8ec 100644 --- a/lib/middleware/cut/index.js +++ b/lib/middleware/cut/index.js @@ -4,6 +4,8 @@ var interactive = require("./interactive.js") var cutto = require("./cutto.js") module.exports = function(req, next){ + console.log(req.argv["_"]) + if (req.argv["_"].length === 0) { return instructions(req, next) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js new file mode 100644 index 0000000..594a398 --- /dev/null +++ b/lib/middleware/cutover.js @@ -0,0 +1,14 @@ + +var helpers = require("./util/helpers") +var cutto = require("./cut/cutto") +var interactive = require("./cut/interactive.js") + +module.exports = function(req, next){ + + if (req.argv.i){ + return interactive(req, next) + } else { + return cutto(req, next) + } + +} \ No newline at end of file diff --git a/lib/middleware/pkg.js b/lib/middleware/pkg.js deleted file mode 100644 index e8796df..0000000 --- a/lib/middleware/pkg.js +++ /dev/null @@ -1,5 +0,0 @@ - -module.exports = function(req, next){ - req.pkg = require(__dirname + "/../../package.json") - next() -} \ No newline at end of file diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js new file mode 100644 index 0000000..e69de29 diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js new file mode 100644 index 0000000..e69de29 diff --git a/lib/middleware/select.js b/lib/middleware/select.js new file mode 100644 index 0000000..8281230 --- /dev/null +++ b/lib/middleware/select.js @@ -0,0 +1,7 @@ +var helpers = require("./util/helpers") +var cutto = require("./cut/cutto") +var interactive = require("./cut/interactive.js") + +module.exports = function(req, next){ + return interactive(req, next) +} \ No newline at end of file diff --git a/lib/middleware/yankrev.js b/lib/middleware/yankrev.js new file mode 100644 index 0000000..e69de29 diff --git a/lib/surge.js b/lib/surge.js index 6a16647..b65a99c 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -1,51 +1,55 @@ -var middleware = require('./middleware') -var skin = require('./middleware/util/skin.js') -var help = require('./middleware/help') -var read = require("read") -var minimist = require('minimist') - - -var whitelist = require("./middleware/whitelist") -var endpoint = require("./middleware/endpoint") -var pkg = require("./middleware/pkg") -var version = require("./middleware/version") -var welcome = require("./middleware/welcome") -var creds = require("./middleware/creds") -var whoami = require("./middleware/whoami") -var tokencheck = require("./middleware/tokencheck") -var email = require("./middleware/email") -var auth = require("./middleware/auth") -var logout = require("./middleware/logout") -var help = require("./middleware/help") -var project = require("./middleware/project") -var size = require("./middleware/size") -var domain = require("./middleware/domain") -var protocol = require("./middleware/protocol") -var deploy = require("./middleware/deploy") -var domainOrSilent = require("./middleware/domainOrSilent") -var pemOrSilent = require("./middleware/pemOrSilent") -var ipaddress = require("./middleware/ipaddress") -var login = require("./middleware/login") -var shorthand = require("./middleware/shorthand") -var list = require("./middleware/list") -var cut = require("./middleware/cut") -var token = require("./middleware/token") -var teardown = require("./middleware/teardown") -var discovery = require("./middleware/discovery") -var plus = require("./middleware/plus") - -var subscription= require("./middleware/subscription") -var plans = require("./middleware/plans") -var plan = require("./middleware/plan") -var payment = require("./middleware/payment") -var card = require("./middleware/card") -var setcard = require("./middleware/setcard") -var subscribe = require("./middleware/subscribe") - -var ssl = require("./middleware/ssl") -var log = require("./middleware/log") -var helpers = require('./middleware/util/helpers') +//var middleware = require('./middleware') +var help = require('./middleware/help') +var skin = require('./middleware/util/skin.js') +var read = require("read") +var minimist = require('minimist') + +var whitelist = require("./middleware/_shared/whitelist") +var endpoint = require("./middleware/_shared/endpoint") +var pkg = require("./middleware/_shared/pkg") +var version = require("./middleware/_shared/version") +var welcome = require("./middleware/_shared/welcome") +var creds = require("./middleware/_shared/creds") +var whoami = require("./middleware/_shared/whoami") +var tokencheck = require("./middleware/_shared/tokencheck") +var email = require("./middleware/_shared/email") +var auth = require("./middleware/_shared/auth") +var logout = require("./middleware/_shared/logout") +var project = require("./middleware/_shared/project") +var size = require("./middleware/_shared/size") +var domain = require("./middleware/_shared/domain") +var protocol = require("./middleware/_shared/protocol") +var deploy = require("./middleware/_shared/deploy") +var domainOrSilent = require("./middleware/_shared/domainOrSilent") +var pemOrSilent = require("./middleware/_shared/pemOrSilent") +var ipaddress = require("./middleware/_shared/ipaddress") +var login = require("./middleware/_shared/login") +var shorthand = require("./middleware/_shared/shorthand") +var list = require("./middleware/_shared/list") + +var token = require("./middleware/_shared/token") +var teardown = require("./middleware/_shared/teardown") +var discovery = require("./middleware/_shared/discovery") +var plus = require("./middleware/_shared/plus") +var subscription = require("./middleware/_shared/subscription") +var plans = require("./middleware/_shared/plans") +var plan = require("./middleware/_shared/plan") +var payment = require("./middleware/_shared/payment") +var card = require("./middleware/_shared/card") +var setcard = require("./middleware/_shared/setcard") +var subscribe = require("./middleware/_shared/subscribe") +var ssl = require("./middleware/_shared/ssl") +var log = require("./middleware/_shared/log") + + +var select = require("./middleware/select") +var yankrev = require("./middleware/yankrev") +var rollback = require("./middleware/rollback") +var rollfore = require("./middleware/rollfore") +var cutover = require("./middleware/cutover") + +var helpers = require('./middleware/util/helpers') @@ -114,7 +118,24 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - var commands = ["login", "logout", "whoami", "list", "cut", "publish", "teardown", "token", "plus", "ssl", "plan", "card"] + var commands = [ + "login", + "logout", + "whoami", + "list", + "rollback", + "rollfore", + "cutover", + "yankrev", + "publish", + "teardown", + "select", + "token", + "plus", + "ssl", + "plan", + "card" + ] if (commands.indexOf(cmd) !== -1) { argv._.shift() @@ -245,7 +266,7 @@ module.exports = function(config){ } } - surge.cut = function(hooks){ + surge.switch = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub @@ -264,6 +285,44 @@ module.exports = function(config){ } } + surge.cutover = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, shorthand, + cutover, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.select = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, shorthand, + select, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.teardown = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub From 40771de2bb52fa84ede80a1cd130429c176f6ece Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Dec 2019 16:03:04 -0800 Subject: [PATCH 054/214] moved cli.js to bin dir --- lib/cli.js => bin/surge | 0 package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/cli.js => bin/surge (100%) diff --git a/lib/cli.js b/bin/surge similarity index 100% rename from lib/cli.js rename to bin/surge diff --git a/package.json b/package.json index 50d083f..8320ed3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.21.3", "description": "CDN for front-end developers", "author": "Brock Whitten ", - "bin": "./lib/cli.js", + "bin": "./bin/surge", "dependencies": { "cli-table3": "^0.5.1", "surge-fstream-ignore": "^1.0.6", From 529bf7b1effbc6d64e45e03ce94aa5a6378651b7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Dec 2019 22:18:19 -0800 Subject: [PATCH 055/214] restructuring project files --- lib/middleware/_shared/{card.js => _card.js} | 2 +- .../_shared/{creds.js => _creds.js} | 4 +- .../_shared/{domain.js => _domain.js} | 2 +- .../{domainOrSilent.js => _domainOrSilent.js} | 2 +- .../_shared/{email.js => _email.js} | 3 +- .../_shared/{endpoint.js => _endpoint.js} | 0 .../_shared/{ipaddress.js => _ipaddress.js} | 0 lib/middleware/_shared/{log.js => _log.js} | 2 +- .../_shared/{payment.js => _payment.js} | 2 +- .../{pemOrSilent.js => _pemOrSilent.js} | 2 +- lib/middleware/_shared/{pkg.js => _pkg.js} | 0 .../_shared/{plans.js => _plans.js} | 2 +- lib/middleware/_shared/{prep.js => _prep.js} | 0 .../_shared/{project.js => _project.js} | 2 +- .../_shared/{protocol.js => _protocol.js} | 0 .../_shared/{setcard.js => _setcard.js} | 2 +- .../_shared/{shorthand.js => _shorthand.js} | 0 lib/middleware/_shared/{size.js => _size.js} | 2 +- .../_shared/{stats.js => _stats.js} | 0 .../_shared/{subscribe.js => _subscribe.js} | 2 +- .../{subscription.js => _subscription.js} | 2 +- .../_shared/{tokencheck.js => _tokencheck.js} | 4 +- .../_shared/{version.js => _version.js} | 2 +- .../_shared/{welcome.js => _welcome.js} | 2 +- .../_shared/{whitelist.js => _whitelist.js} | 2 +- lib/middleware/_shared/auth.js | 4 +- lib/middleware/_shared/discovery.js | 2 +- lib/middleware/cut/cutto.js | 2 +- lib/middleware/cut/interactive.js | 4 +- lib/middleware/cutover.js | 2 +- lib/middleware/{_shared => }/deploy.js | 2 +- lib/middleware/help.js | 2 +- lib/middleware/{_shared => }/list.js | 0 lib/middleware/{_shared => }/login.js | 0 lib/middleware/{_shared => }/logout.js | 0 lib/middleware/{_shared => }/plan.js | 0 lib/middleware/{_shared => }/plus.js | 0 lib/middleware/select.js | 2 +- lib/middleware/{_shared => }/ssl.js | 0 lib/middleware/{_shared => }/teardown.js | 0 lib/middleware/{_shared => }/token.js | 0 lib/middleware/{_shared => }/whoami.js | 0 lib/surge.js | 82 ++++++++++--------- lib/{middleware => }/util/creds.js | 0 lib/{middleware => }/util/helpers.js | 2 +- lib/{middleware => }/util/skin.js | 0 lib/{middleware => }/util/table-revision.js | 0 47 files changed, 76 insertions(+), 69 deletions(-) rename lib/middleware/_shared/{card.js => _card.js} (83%) rename lib/middleware/_shared/{creds.js => _creds.js} (80%) rename lib/middleware/_shared/{domain.js => _domain.js} (97%) rename lib/middleware/_shared/{domainOrSilent.js => _domainOrSilent.js} (95%) rename lib/middleware/_shared/{email.js => _email.js} (97%) rename lib/middleware/_shared/{endpoint.js => _endpoint.js} (100%) rename lib/middleware/_shared/{ipaddress.js => _ipaddress.js} (100%) rename lib/middleware/_shared/{log.js => _log.js} (62%) rename lib/middleware/_shared/{payment.js => _payment.js} (88%) rename lib/middleware/_shared/{pemOrSilent.js => _pemOrSilent.js} (95%) rename lib/middleware/_shared/{pkg.js => _pkg.js} (100%) rename lib/middleware/_shared/{plans.js => _plans.js} (94%) rename lib/middleware/_shared/{prep.js => _prep.js} (100%) rename lib/middleware/_shared/{project.js => _project.js} (96%) rename lib/middleware/_shared/{protocol.js => _protocol.js} (100%) rename lib/middleware/_shared/{setcard.js => _setcard.js} (95%) rename lib/middleware/_shared/{shorthand.js => _shorthand.js} (100%) rename lib/middleware/_shared/{size.js => _size.js} (95%) rename lib/middleware/_shared/{stats.js => _stats.js} (100%) rename lib/middleware/_shared/{subscribe.js => _subscribe.js} (95%) rename lib/middleware/_shared/{subscription.js => _subscription.js} (94%) rename lib/middleware/_shared/{tokencheck.js => _tokencheck.js} (89%) rename lib/middleware/_shared/{version.js => _version.js} (83%) rename lib/middleware/_shared/{welcome.js => _welcome.js} (80%) rename lib/middleware/_shared/{whitelist.js => _whitelist.js} (93%) rename lib/middleware/{_shared => }/deploy.js (99%) rename lib/middleware/{_shared => }/list.js (100%) rename lib/middleware/{_shared => }/login.js (100%) rename lib/middleware/{_shared => }/logout.js (100%) rename lib/middleware/{_shared => }/plan.js (100%) rename lib/middleware/{_shared => }/plus.js (100%) rename lib/middleware/{_shared => }/ssl.js (100%) rename lib/middleware/{_shared => }/teardown.js (100%) rename lib/middleware/{_shared => }/token.js (100%) rename lib/middleware/{_shared => }/whoami.js (100%) rename lib/{middleware => }/util/creds.js (100%) rename lib/{middleware => }/util/helpers.js (99%) rename lib/{middleware => }/util/skin.js (100%) rename lib/{middleware => }/util/table-revision.js (100%) diff --git a/lib/middleware/_shared/card.js b/lib/middleware/_shared/_card.js similarity index 83% rename from lib/middleware/_shared/card.js rename to lib/middleware/_shared/_card.js index 9dd14e0..cada85b 100644 --- a/lib/middleware/_shared/card.js +++ b/lib/middleware/_shared/_card.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/creds.js b/lib/middleware/_shared/_creds.js similarity index 80% rename from lib/middleware/_shared/creds.js rename to lib/middleware/_shared/_creds.js index ed979dc..3d6e175 100644 --- a/lib/middleware/_shared/creds.js +++ b/lib/middleware/_shared/_creds.js @@ -1,8 +1,8 @@ var path = require("path") var fs = require("fs") var netrc = require("netrc") -var localCreds = require("../util/creds.js") -var helpers = require("../util/helpers.js") +var localCreds = require("../../util/creds.js") +var helpers = require("../../util/helpers.js") module.exports = function(req, next){ req.passintoken = req.argv.token || process.env['SURGE_TOKEN'] || process.env['TRAVIS_SURGE_TOKEN'] || null diff --git a/lib/middleware/_shared/domain.js b/lib/middleware/_shared/_domain.js similarity index 97% rename from lib/middleware/_shared/domain.js rename to lib/middleware/_shared/_domain.js index 27f5927..c9eb5b4 100644 --- a/lib/middleware/_shared/domain.js +++ b/lib/middleware/_shared/_domain.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/domainOrSilent.js b/lib/middleware/_shared/_domainOrSilent.js similarity index 95% rename from lib/middleware/_shared/domainOrSilent.js rename to lib/middleware/_shared/_domainOrSilent.js index 6ccb5d6..3b3cacc 100644 --- a/lib/middleware/_shared/domainOrSilent.js +++ b/lib/middleware/_shared/_domainOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/email.js b/lib/middleware/_shared/_email.js similarity index 97% rename from lib/middleware/_shared/email.js rename to lib/middleware/_shared/_email.js index 1522b68..59bf295 100644 --- a/lib/middleware/_shared/email.js +++ b/lib/middleware/_shared/_email.js @@ -1,5 +1,6 @@ + +var helpers = require("../../util/helpers") var pattern = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i -var helpers = require("../util/helpers") module.exports = function(req, next, abort){ //var label = " email:".grey diff --git a/lib/middleware/_shared/endpoint.js b/lib/middleware/_shared/_endpoint.js similarity index 100% rename from lib/middleware/_shared/endpoint.js rename to lib/middleware/_shared/_endpoint.js diff --git a/lib/middleware/_shared/ipaddress.js b/lib/middleware/_shared/_ipaddress.js similarity index 100% rename from lib/middleware/_shared/ipaddress.js rename to lib/middleware/_shared/_ipaddress.js diff --git a/lib/middleware/_shared/log.js b/lib/middleware/_shared/_log.js similarity index 62% rename from lib/middleware/_shared/log.js rename to lib/middleware/_shared/_log.js index bf1ae72..92e5123 100644 --- a/lib/middleware/_shared/log.js +++ b/lib/middleware/_shared/_log.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next){ helpers.show() diff --git a/lib/middleware/_shared/payment.js b/lib/middleware/_shared/_payment.js similarity index 88% rename from lib/middleware/_shared/payment.js rename to lib/middleware/_shared/_payment.js index 9f318ba..b6f29cb 100644 --- a/lib/middleware/_shared/payment.js +++ b/lib/middleware/_shared/_payment.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/pemOrSilent.js b/lib/middleware/_shared/_pemOrSilent.js similarity index 95% rename from lib/middleware/_shared/pemOrSilent.js rename to lib/middleware/_shared/_pemOrSilent.js index ba83edb..c2c70b5 100644 --- a/lib/middleware/_shared/pemOrSilent.js +++ b/lib/middleware/_shared/_pemOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/pkg.js b/lib/middleware/_shared/_pkg.js similarity index 100% rename from lib/middleware/_shared/pkg.js rename to lib/middleware/_shared/_pkg.js diff --git a/lib/middleware/_shared/plans.js b/lib/middleware/_shared/_plans.js similarity index 94% rename from lib/middleware/_shared/plans.js rename to lib/middleware/_shared/_plans.js index 4a79a2b..53e1b50 100644 --- a/lib/middleware/_shared/plans.js +++ b/lib/middleware/_shared/_plans.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/_shared/prep.js b/lib/middleware/_shared/_prep.js similarity index 100% rename from lib/middleware/_shared/prep.js rename to lib/middleware/_shared/_prep.js diff --git a/lib/middleware/_shared/project.js b/lib/middleware/_shared/_project.js similarity index 96% rename from lib/middleware/_shared/project.js rename to lib/middleware/_shared/_project.js index 3f5067a..c5e7b0f 100644 --- a/lib/middleware/_shared/project.js +++ b/lib/middleware/_shared/_project.js @@ -1,6 +1,6 @@ var path = require("path") var fs = require("fs") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/protocol.js b/lib/middleware/_shared/_protocol.js similarity index 100% rename from lib/middleware/_shared/protocol.js rename to lib/middleware/_shared/_protocol.js diff --git a/lib/middleware/_shared/setcard.js b/lib/middleware/_shared/_setcard.js similarity index 95% rename from lib/middleware/_shared/setcard.js rename to lib/middleware/_shared/_setcard.js index df11699..216df32 100644 --- a/lib/middleware/_shared/setcard.js +++ b/lib/middleware/_shared/_setcard.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/shorthand.js b/lib/middleware/_shared/_shorthand.js similarity index 100% rename from lib/middleware/_shared/shorthand.js rename to lib/middleware/_shared/_shorthand.js diff --git a/lib/middleware/_shared/size.js b/lib/middleware/_shared/_size.js similarity index 95% rename from lib/middleware/_shared/size.js rename to lib/middleware/_shared/_size.js index 6128088..56984a3 100644 --- a/lib/middleware/_shared/size.js +++ b/lib/middleware/_shared/_size.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var fsReader = require('surge-fstream-ignore') var fs = require("fs") var ignore = require("surge-ignore") diff --git a/lib/middleware/_shared/stats.js b/lib/middleware/_shared/_stats.js similarity index 100% rename from lib/middleware/_shared/stats.js rename to lib/middleware/_shared/_stats.js diff --git a/lib/middleware/_shared/subscribe.js b/lib/middleware/_shared/_subscribe.js similarity index 95% rename from lib/middleware/_shared/subscribe.js rename to lib/middleware/_shared/_subscribe.js index d4e33c2..82a4cbd 100644 --- a/lib/middleware/_shared/subscribe.js +++ b/lib/middleware/_shared/_subscribe.js @@ -2,7 +2,7 @@ var request = require("request") var url = require("url") var path = require("path") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/subscription.js b/lib/middleware/_shared/_subscription.js similarity index 94% rename from lib/middleware/_shared/subscription.js rename to lib/middleware/_shared/_subscription.js index 1de02f9..6b2de86 100644 --- a/lib/middleware/_shared/subscription.js +++ b/lib/middleware/_shared/_subscription.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/_shared/tokencheck.js b/lib/middleware/_shared/_tokencheck.js similarity index 89% rename from lib/middleware/_shared/tokencheck.js rename to lib/middleware/_shared/_tokencheck.js index 3102b87..3e3734e 100644 --- a/lib/middleware/_shared/tokencheck.js +++ b/lib/middleware/_shared/_tokencheck.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("../util/creds.js") -var helpers = require("../util/helpers.js") +var localCreds = require("../../util/creds.js") +var helpers = require("../../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/_shared/version.js b/lib/middleware/_shared/_version.js similarity index 83% rename from lib/middleware/_shared/version.js rename to lib/middleware/_shared/_version.js index e0ff93b..8eacc2a 100644 --- a/lib/middleware/_shared/version.js +++ b/lib/middleware/_shared/_version.js @@ -1,5 +1,5 @@ var pkg = require("../../../package.json") -var helpers = require("../util/helpers.js") +var helpers = require("../../util/helpers.js") module.exports = function(req, next){ if (req.argv.version || req.argv.V) { diff --git a/lib/middleware/_shared/welcome.js b/lib/middleware/_shared/_welcome.js similarity index 80% rename from lib/middleware/_shared/welcome.js rename to lib/middleware/_shared/_welcome.js index 2976555..3ea770d 100644 --- a/lib/middleware/_shared/welcome.js +++ b/lib/middleware/_shared/_welcome.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers.js") +var helpers = require("../../util/helpers.js") module.exports = function(req, next){ diff --git a/lib/middleware/_shared/whitelist.js b/lib/middleware/_shared/_whitelist.js similarity index 93% rename from lib/middleware/_shared/whitelist.js rename to lib/middleware/_shared/_whitelist.js index 129844c..4970c7e 100644 --- a/lib/middleware/_shared/whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform diff --git a/lib/middleware/_shared/auth.js b/lib/middleware/_shared/auth.js index 03dfcdf..b20b944 100644 --- a/lib/middleware/_shared/auth.js +++ b/lib/middleware/_shared/auth.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("../util/creds.js") -var helpers = require("../util/helpers.js") +var localCreds = require("../../util/creds.js") +var helpers = require("../../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/_shared/discovery.js b/lib/middleware/_shared/discovery.js index ca5e90f..c9eaa29 100644 --- a/lib/middleware/_shared/discovery.js +++ b/lib/middleware/_shared/discovery.js @@ -3,7 +3,7 @@ var moniker = require("moniker") var fs = require("fs") var path = require("path") var os = require("os") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") exports.suggestDomainFromCname = function(req, next){ diff --git a/lib/middleware/cut/cutto.js b/lib/middleware/cut/cutto.js index 0b0ef50..de0e532 100644 --- a/lib/middleware/cut/cutto.js +++ b/lib/middleware/cut/cutto.js @@ -1,5 +1,5 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next){ helpers.space() diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js index 7789733..0a955a6 100644 --- a/lib/middleware/cut/interactive.js +++ b/lib/middleware/cut/interactive.js @@ -2,10 +2,10 @@ var url = require("url") var request = require("request") var Table = require("cli-table3") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var inquirer = require("inquirer") -var tableRevisions = require("../util/table-revision.js") +var tableRevisions = require("../../util/table-revision.js") module.exports = function(req, next){ diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 594a398..f386623 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -1,5 +1,5 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var cutto = require("./cut/cutto") var interactive = require("./cut/interactive.js") diff --git a/lib/middleware/_shared/deploy.js b/lib/middleware/deploy.js similarity index 99% rename from lib/middleware/_shared/deploy.js rename to lib/middleware/deploy.js index bfa85ea..7d88ea5 100644 --- a/lib/middleware/_shared/deploy.js +++ b/lib/middleware/deploy.js @@ -5,7 +5,7 @@ var localCreds = require("../util/creds.js") var tar = require('tarr') var zlib = require('zlib') var fsReader = require('surge-fstream-ignore') -var surge = require('../../surge') +var surge = require('../surge') var ProgressBar = require("progress") var split = require("split") var url = require("url") diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 9f73e43..8b7c8c3 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ if (req.argv.help || req.argv.h) { diff --git a/lib/middleware/_shared/list.js b/lib/middleware/list.js similarity index 100% rename from lib/middleware/_shared/list.js rename to lib/middleware/list.js diff --git a/lib/middleware/_shared/login.js b/lib/middleware/login.js similarity index 100% rename from lib/middleware/_shared/login.js rename to lib/middleware/login.js diff --git a/lib/middleware/_shared/logout.js b/lib/middleware/logout.js similarity index 100% rename from lib/middleware/_shared/logout.js rename to lib/middleware/logout.js diff --git a/lib/middleware/_shared/plan.js b/lib/middleware/plan.js similarity index 100% rename from lib/middleware/_shared/plan.js rename to lib/middleware/plan.js diff --git a/lib/middleware/_shared/plus.js b/lib/middleware/plus.js similarity index 100% rename from lib/middleware/_shared/plus.js rename to lib/middleware/plus.js diff --git a/lib/middleware/select.js b/lib/middleware/select.js index 8281230..e86be54 100644 --- a/lib/middleware/select.js +++ b/lib/middleware/select.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var cutto = require("./cut/cutto") var interactive = require("./cut/interactive.js") diff --git a/lib/middleware/_shared/ssl.js b/lib/middleware/ssl.js similarity index 100% rename from lib/middleware/_shared/ssl.js rename to lib/middleware/ssl.js diff --git a/lib/middleware/_shared/teardown.js b/lib/middleware/teardown.js similarity index 100% rename from lib/middleware/_shared/teardown.js rename to lib/middleware/teardown.js diff --git a/lib/middleware/_shared/token.js b/lib/middleware/token.js similarity index 100% rename from lib/middleware/_shared/token.js rename to lib/middleware/token.js diff --git a/lib/middleware/_shared/whoami.js b/lib/middleware/whoami.js similarity index 100% rename from lib/middleware/_shared/whoami.js rename to lib/middleware/whoami.js diff --git a/lib/surge.js b/lib/surge.js index b65a99c..7bda811 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -1,55 +1,61 @@ -//var middleware = require('./middleware') +// load help first so we can display and exit quickly var help = require('./middleware/help') -var skin = require('./middleware/util/skin.js') + +// modules var read = require("read") var minimist = require('minimist') -var whitelist = require("./middleware/_shared/whitelist") -var endpoint = require("./middleware/_shared/endpoint") -var pkg = require("./middleware/_shared/pkg") -var version = require("./middleware/_shared/version") -var welcome = require("./middleware/_shared/welcome") -var creds = require("./middleware/_shared/creds") -var whoami = require("./middleware/_shared/whoami") -var tokencheck = require("./middleware/_shared/tokencheck") -var email = require("./middleware/_shared/email") +// utils +var helpers = require('./util/helpers') +var skin = require('./util/skin.js') + +// mini-libs that return middleware var auth = require("./middleware/_shared/auth") -var logout = require("./middleware/_shared/logout") -var project = require("./middleware/_shared/project") -var size = require("./middleware/_shared/size") -var domain = require("./middleware/_shared/domain") -var protocol = require("./middleware/_shared/protocol") -var deploy = require("./middleware/_shared/deploy") -var domainOrSilent = require("./middleware/_shared/domainOrSilent") -var pemOrSilent = require("./middleware/_shared/pemOrSilent") -var ipaddress = require("./middleware/_shared/ipaddress") -var login = require("./middleware/_shared/login") -var shorthand = require("./middleware/_shared/shorthand") -var list = require("./middleware/_shared/list") - -var token = require("./middleware/_shared/token") -var teardown = require("./middleware/_shared/teardown") var discovery = require("./middleware/_shared/discovery") -var plus = require("./middleware/_shared/plus") -var subscription = require("./middleware/_shared/subscription") -var plans = require("./middleware/_shared/plans") -var plan = require("./middleware/_shared/plan") -var payment = require("./middleware/_shared/payment") -var card = require("./middleware/_shared/card") -var setcard = require("./middleware/_shared/setcard") -var subscribe = require("./middleware/_shared/subscribe") -var ssl = require("./middleware/_shared/ssl") -var log = require("./middleware/_shared/log") - +// middleware +var whitelist = require("./middleware/_shared/_whitelist") +var endpoint = require("./middleware/_shared/_endpoint") +var pkg = require("./middleware/_shared/_pkg") +var version = require("./middleware/_shared/_version") +var welcome = require("./middleware/_shared/_welcome") +var creds = require("./middleware/_shared/_creds") +var tokencheck = require("./middleware/_shared/_tokencheck") +var email = require("./middleware/_shared/_email") +var project = require("./middleware/_shared/_project") +var size = require("./middleware/_shared/_size") +var domain = require("./middleware/_shared/_domain") +var protocol = require("./middleware/_shared/_protocol") +var domainOrSilent = require("./middleware/_shared/_domainOrSilent") +var pemOrSilent = require("./middleware/_shared/_pemOrSilent") +var ipaddress = require("./middleware/_shared/_ipaddress") +var shorthand = require("./middleware/_shared/_shorthand") +var subscription = require("./middleware/_shared/_subscription") +var plans = require("./middleware/_shared/_plans") +var payment = require("./middleware/_shared/_payment") +var setcard = require("./middleware/_shared/_setcard") +var subscribe = require("./middleware/_shared/_subscribe") +var log = require("./middleware/_shared/_log") + +// also middleware but contains main functionality for command +var logout = require("./middleware/logout") +var login = require("./middleware/login") +var whoami = require("./middleware/whoami") +var deploy = require("./middleware/deploy") +var list = require("./middleware/list") +var token = require("./middleware/token") +var teardown = require("./middleware/teardown") +var plus = require("./middleware/plus") +var plan = require("./middleware/plan") +var card = require("./middleware/_shared/_card") +var ssl = require("./middleware/ssl") var select = require("./middleware/select") var yankrev = require("./middleware/yankrev") var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") -var helpers = require('./middleware/util/helpers') diff --git a/lib/middleware/util/creds.js b/lib/util/creds.js similarity index 100% rename from lib/middleware/util/creds.js rename to lib/util/creds.js diff --git a/lib/middleware/util/helpers.js b/lib/util/helpers.js similarity index 99% rename from lib/middleware/util/helpers.js rename to lib/util/helpers.js index 7c21e7a..44d4fe7 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/util/helpers.js @@ -8,7 +8,7 @@ var urlAddy = require("url-parse-as-address") var read = require("read") var isDomain = require("is-domain") var s = 0 -var pkg = require("../../../package.json") +var pkg = require("../../package.json") exports.read = read diff --git a/lib/middleware/util/skin.js b/lib/util/skin.js similarity index 100% rename from lib/middleware/util/skin.js rename to lib/util/skin.js diff --git a/lib/middleware/util/table-revision.js b/lib/util/table-revision.js similarity index 100% rename from lib/middleware/util/table-revision.js rename to lib/util/table-revision.js From e15a72bd1863d7a6bc21dd1ca800da8fc77dbe9a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 21 Dec 2019 09:38:15 -0800 Subject: [PATCH 056/214] adding new commands for revisions --- lib/middleware/cut/index.js | 18 ------ lib/middleware/cut/interactive.js | 4 +- lib/middleware/cutover.js | 15 ++++- lib/middleware/list.js | 2 +- lib/util/helpers.js | 101 +++++++++++++++++++++++++++++- 5 files changed, 113 insertions(+), 27 deletions(-) delete mode 100644 lib/middleware/cut/index.js diff --git a/lib/middleware/cut/index.js b/lib/middleware/cut/index.js deleted file mode 100644 index 9fea8ec..0000000 --- a/lib/middleware/cut/index.js +++ /dev/null @@ -1,18 +0,0 @@ - -var instructions = require("./instructions.js") -var interactive = require("./interactive.js") -var cutto = require("./cutto.js") - -module.exports = function(req, next){ - console.log(req.argv["_"]) - - - if (req.argv["_"].length === 0) { - return instructions(req, next) - } else if (req.argv["_"].length === 1) { - return interactive(req, next) - } else if (req.argv["_"].length === 2) { - return cutto(req, next) - } - -} diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js index 0a955a6..ca6655c 100644 --- a/lib/middleware/cut/interactive.js +++ b/lib/middleware/cut/interactive.js @@ -43,9 +43,7 @@ module.exports = function(req, next){ } var indexOfCurrent = 0 - - - var choices = list.map(choice) + var choices = list.map(choice) var args = { type: 'list', diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index f386623..9077b71 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -6,9 +6,20 @@ var interactive = require("./cut/interactive.js") module.exports = function(req, next){ if (req.argv.i){ - return interactive(req, next) + helpers.revisionSelector(req, function(errors, answers){ + if (!answers) return next() + + if (answers.revision.current){ + helpers.trunc("No change".green + " - Selected revision is already current".grey ) + return next() + } else { + return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + } + + }) } else { - return cutto(req, next) + helpers.space() + return helpers.cutto(req.argv["_"][0], req.argv["_"][1], next) } } \ No newline at end of file diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 8878b04..b76c7fa 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -62,7 +62,7 @@ module.exports = function(req, next){ var listSingleProject = function(){ var options = { - 'url': url.resolve(req.endpoint.format(), '/list/' + req.argv["_"][0]), + 'url': url.resolve(req.endpoint.format(), req.argv["_"][0] + '/list'), 'method': 'get', 'auth': { 'user': "token", diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 44d4fe7..7946b52 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -10,6 +10,12 @@ var isDomain = require("is-domain") var s = 0 var pkg = require("../../package.json") +var url = require("url") +var Table = require("cli-table3") +var inquirer = require("inquirer") + +var tableRevisions = require("./table-revision.js") + exports.read = read @@ -91,9 +97,37 @@ exports.stacktrace = function(str, options){ return context } -var cutto = exports.cutto = function(domain, rev, callback){ - trunc("cut "+ domain.underline +" to " + rev) - callback() +var switchRevision = exports.switchRevision = function(domain, rev, callback){ + var options = { + 'url': url.resolve(endpoint.format(), domain + "/cutover"), + 'method': 'put', + 'headers': { version: pkg.version }, + 'form': { rev: rev }, + 'auth': { + 'user': "token", + 'pass': pass || "", + 'sendImmediately': true + } + } + request(options, function(e, r, obj){ + if (e) throw e + + if (r.statusCode == 200){ + return callback(null, JSON.parse(obj)) + } else if (r.statusCode == 417){ + space() + trunc("Aborted".yellow + " - your client requires upgrade".grey) + space() + process.exit(1) + } else if (r.statusCode == 503){ + space() + trunc("Error".red + " - Deployment endpoint temporarily unreachable".grey) + space() + process.exit(1) + }else{ + return callback(JSON.parse(obj)) + } + }) } @@ -447,6 +481,67 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.revisionSelector = function(req, callback){ + + var options = { + 'url': url.resolve(req.endpoint.format(), req.argv["_"][0] + '/list'), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } + } + + request(options, function(e, r, obj){ + if (e) throw e + // TODO: handle 410 + + var list = JSON.parse(obj) + + if (list.length == 0){ + space() + trunc("Empty".blue + (" - There are no revisions for " + req.argv["_"][0]).grey) + return callback(null, null) + } else { + + var table = tableRevisions(req.argv["_"][0], list) + var rows = table.toString().split("\n") + + var choice = function(revision, i){ + return { + short: " ", + value: revision, + name: rows[i] + } + } + + var indexOfCurrent = 0 + var choices = list.map(choice) + + var args = { + type: 'list', + name: 'revision', + default: indexOfCurrent, + choices: choices, + pageSize: 8, + separator: true, + message: ' ' + } + + inquirer.prompt([args]).then(function (answers) { + if (answers.revision.current){ + trunc("No change".green + " - Selected revision is already current".grey ) + return next() + } else { + return callback(null, answers) + //return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + } + }) + } + }) +} + exports.validDomain = function(domain) { if (domain && (isDomain(domain) === true || isDomain(urlAddy(domain).host) === true)) { return true From 46bdb8608affe59889f1c3e722e5a56b4a6bfd7d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 18 Feb 2020 02:17:04 -0800 Subject: [PATCH 057/214] integrated regions payload --- lib/middleware/deploy.js | 13 ++++++++++--- lib/util/helpers.js | 15 +++++++++++++++ lib/util/table-regions.js | 26 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 lib/util/table-regions.js diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 7d88ea5..b3ded10 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -163,10 +163,17 @@ module.exports = function(req, next){ } else if (payload.hasOwnProperty("type") && payload.type === "ip") { + // req.success = true + // if (payload.data) { + // helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) + // } + } else + + if (payload.hasOwnProperty("type") && payload.type === "regionInfo") { req.success = true - if (payload.data) { - helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) - } + //helpers.log(helpers.smart("regions:").grey + " " + Object.keys(payload.regions).join(", ")) + helpers.displayRegions(payload) + } else diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 7946b52..009e968 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -15,6 +15,7 @@ var Table = require("cli-table3") var inquirer = require("inquirer") var tableRevisions = require("./table-revision.js") +var tableRegions = require("./table-regions.js") exports.read = read @@ -481,6 +482,20 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.displayRegions = function(payload){ + var table = tableRegions(payload) + var rows = table.toString().split("\n") + + //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) + space() + //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) + //log(" Origin regions…".grey) + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) +} + exports.revisionSelector = function(req, callback){ var options = { diff --git a/lib/util/table-regions.js b/lib/util/table-regions.js new file mode 100644 index 0000000..9076ae6 --- /dev/null +++ b/lib/util/table-regions.js @@ -0,0 +1,26 @@ + +var Table = require("cli-table3") + +module.exports = function(payload){ + + var table = new Table({ + head:["Region".grey, "IP".grey, "Country".grey, "City".grey], + style: { + 'compact': true, + 'padding-left': 3, + 'padding-right': 3, + } + }) + + var keys = Object.keys(payload.regions) + var rows = [] + + keys.forEach(function(key){ + var val = payload.regions[key] + table.push([(key + "." + payload.nsDomain), val.ip, { hAlign: "center", content: val.country }, val.city]) + }) + + return table + +} + \ No newline at end of file From 00baa9545d84520dc5c948ed4c17d4191d28f98e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 21 Feb 2020 21:14:03 -0800 Subject: [PATCH 058/214] adds surge-sdk and rollfoe rollback commands --- lib/middleware/_shared/_welcome.js | 1 + lib/middleware/rollback.js | 37 +++++++++++++++++++++++++++++ lib/middleware/rollfore.js | 37 +++++++++++++++++++++++++++++ lib/surge.js | 38 ++++++++++++++++++++++++++++++ lib/util/helpers.js | 23 ++++++++++++++++++ 5 files changed, 136 insertions(+) diff --git a/lib/middleware/_shared/_welcome.js b/lib/middleware/_shared/_welcome.js index 3ea770d..e1ccc9c 100644 --- a/lib/middleware/_shared/_welcome.js +++ b/lib/middleware/_shared/_welcome.js @@ -3,6 +3,7 @@ var helpers = require("../../util/helpers.js") module.exports = function(req, next){ if (req.creds == null) { + helpers.space() helpers.trunc(("Welcome to " + (req.config.name || "Surge").underline + "!").blue + (" (" + req.config.platform +")").grey) } diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index e69de29..efd857a 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -0,0 +1,37 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req["argv"]["_"][0] + + sdk.rollback(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 201 + var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") + helpers.space() + if (success){ + helpers.log(" ⟲ Rollback".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ⟲ Rollback".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) + +} \ No newline at end of file diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index e69de29..0d1452f 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -0,0 +1,37 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req["argv"]["_"][0] + + sdk.rollfore(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 201 + var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") + helpers.space() + if (success){ + helpers.log(" ⟳ Forward".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ⟳ Forward".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) + +} \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index 7bda811..01d2ad3 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -272,6 +272,44 @@ module.exports = function(config){ } } + surge.rollback = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, authInfo, postAuth, + rollback, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.rollfore = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, authInfo, postAuth, + rollfore, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.switch = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 009e968..5cd9c63 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -482,6 +482,20 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.displayRevisionBasicInfo = function(revision, domain){ + space() + log((" " + [revision.rev, domain].join(".").underline).grey) + log((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) + log((" " + revision.email).grey) + space() +} + +exports.displayRevision = function(payload){ + space() + log(" Promoted revision ".grey + payload.revision.rev + " to production.".grey) + space() +} + exports.displayRegions = function(payload){ var table = tableRegions(payload) var rows = table.toString().split("\n") @@ -494,6 +508,7 @@ exports.displayRegions = function(payload){ rows.forEach(function(row, i){ log(" ", row.grey) }) + space() } exports.revisionSelector = function(req, callback){ @@ -565,3 +580,11 @@ exports.validDomain = function(domain) { } } +exports.defaults = { + 404: function(e, r, b){ + space() + trunc("Error".red + " - Project Not Found".grey) + space() + process.exit(1) + } +} \ No newline at end of file From d781f0078315e10d7756c0c9753e4cefe8c42778 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 29 Feb 2020 00:43:53 -0800 Subject: [PATCH 059/214] cutover implemented --- lib/middleware/_shared/_ipaddress.js | 18 +- lib/middleware/_shared/_whitelist.js | 4 +- lib/middleware/cutover.js | 33 +- lib/middleware/deploy.js | 473 +++++++++++---------------- lib/middleware/list.js | 17 +- lib/middleware/whoami.js | 2 +- lib/surge.js | 8 +- 7 files changed, 243 insertions(+), 312 deletions(-) diff --git a/lib/middleware/_shared/_ipaddress.js b/lib/middleware/_shared/_ipaddress.js index 767426c..91d2e87 100644 --- a/lib/middleware/_shared/_ipaddress.js +++ b/lib/middleware/_shared/_ipaddress.js @@ -1,14 +1,14 @@ module.exports = function(req, next){ - if (req.success === true) { - console.log() - console.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) - console.log() - } else { - console.log() - console.log(" Error".red + " - Deployment failed. ".grey) - console.log() - } + // if (req.success === true) { + // console.log() + // console.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) + // console.log() + // } else { + // console.log() + // console.log(" Error".red + " - Deployment failed. ".grey) + // console.log() + // } return next() } \ No newline at end of file diff --git a/lib/middleware/_shared/_whitelist.js b/lib/middleware/_shared/_whitelist.js index 4970c7e..73ec554 100644 --- a/lib/middleware/_shared/_whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -3,7 +3,7 @@ var helpers = require("../../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform - var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; + var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; var args = []; for (param in req.argv) { @@ -14,7 +14,7 @@ module.exports = function(req, next){ if (filteredSet.length != 0) { helpers.log() - helpers.trunc("Aborted - `" + filteredSet[0] + "` is not a surge command.").hr() + helpers.trunc("Aborted".yellow + ` - \`${ filteredSet[0] }\` is not a surge argument.`.grey).hr() } else { return next() } diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 9077b71..e0956f0 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -3,7 +3,17 @@ var helpers = require("../util/helpers") var cutto = require("./cut/cutto") var interactive = require("./cut/interactive.js") +var surgeSDK = require("surge-sdk") + module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] if (req.argv.i){ helpers.revisionSelector(req, function(errors, answers){ @@ -19,7 +29,28 @@ module.exports = function(req, next){ }) } else { helpers.space() - return helpers.cutto(req.argv["_"][0], req.argv["_"][1], next) + sdk.cutover(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 201 + var revDomain = [response.revision.rev, domain].join(".") + helpers.space() + if (success){ + helpers.log(" ⤮ Cutover".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ⤮ Cutover".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) } } \ No newline at end of file diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index b3ded10..f1f16d6 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -1,349 +1,242 @@ -var fs = require("fs") -var request = require("request") -var helpers = require('../util/helpers') + +var helpers = require('../util/helpers') var localCreds = require("../util/creds.js") -var tar = require('tarr') -var zlib = require('zlib') -var fsReader = require('surge-fstream-ignore') -var surge = require('../surge') +var surge = require('../surge') +var surgeSDK = require("surge-sdk") var ProgressBar = require("progress") -var split = require("split") -var url = require("url") -var ignore = require("surge-ignore") module.exports = function(req, next){ - req.success = false; + + var progress = {} + var ts = new Date().toJSON() + + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + /** - * Some useful metadata + * progress + * + * payload includes upload progress + * */ - var headers = { + sdk.publish(req.project, req.domain, { + "user":"token", + "pass": req.creds.token + }, { "version" : req.pkg.version, "file-count": req.fileCount, - "cmd": req.config.cmd, "project-size": req.projectSize, - "timestamp": new Date().toJSON() - } + "cmd": req.config.cmd, + "timestamp": ts, + "stage": req.argv.s, + "message": req.argv.m, + "add": req.argv.a, + "rem": req.argv.r, + "ssl": req.ssl + }) /** - * Collaborators to add + * progress + * + * payload includes upload progress + * */ - if (req.argv.a) - headers["add"] = req.argv.a; + .on("progress", function(payload){ + try { - /** - * Collaborators to remove - */ + // we have two different display for the progress bars + var displays = { + "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' + } - if (req.argv.r) - headers["rem"] = req.argv.r; + // create progress bar (if one doesnt exist) + progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { + complete: '=', incomplete: ' ', width: 20, total: payload.total + }) + // clear file name on last update + var file = payload.written >= payload.total ? "" : payload.file - /** - * Perform build on server - */ + // refresh view + progress[payload.id].update(payload.written / payload.total, { file: file }) - if (req.argv.build) - headers["build"] = req.argv.build; + } catch(e){} + + }) /** - * Force Protocol? + * regionInfo + * + * payload includes information about surge edgenode regions + * + * { + * nsDomain: "surge.world", + * regions: { + * "yyz":{ "ip": "159.203.50.177", "country": "CA", "city": "Toronto" }, + * "jfk":{ "ip": "159.203.159.100", "country": "US", "city": "New York" }, + * "sfo":{ "ip": "138.197.235.123", "country": "US", "city": "San Francisco" }, + * "lhr":{ "ip": "46.101.67.123", "country": "GB", "city": "London" }, + * "ams":{ "ip": "188.166.132.94", "country": "NL", "city": "Amsterdam" }, + * "fra":{ "ip": "138.68.112.220", "country": "DE", "city": "Frankfurt" }, + * "sgp":{ "ip": "139.59.195.30", "country": "SG", "city": "Singapore" }, + * "blr":{ "ip": "139.59.50.135", "country": "IN", "city": "Bangalore" } + * } + * } + * */ - if (req.ssl !== null) - headers["ssl"] = req.ssl + .on("regionInfo", function(payload){ + helpers.displayRegions(payload) + }) - req.headers = headers /** - * Progress Bars - */ + * users + * + * payload includes list of collaborators + * + */ + + .on("users", function(payload){ + helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) + }) - var progress = {} + + /** + * cert + * + * payload includes information about SSL certificate + * + */ + + .on("cert", function(payload){ + try{ + helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + } catch(e){ + helpers.space() + helpers.log(helpers.smart("Error").red + (" - " + "please report error to support@surge.sh").grey) + helpers.space() + } + }) /** - * Our upload "data" handle + * collect + * + * payload includes information needed to subscribe to a plan that will then accept the upload + * */ - var tick = function(tick){ - //console.log("tick", tick.toString()) - - if (Object.keys(progress).length > 1) global.ponr = true + .on("collect", function(payload){ + var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey + helpers.log() + if (payload.hasOwnProperty("perks")) { + helpers.log(msg += "\n\n Includes...".blue) + payload.perks.forEach(function(perk){ helpers.log((" - " + perk).blue); }) + helpers.log() + } else { + helpers.log(msg) + } + req.plan = payload.plan.name + helpers.payment(req, payload.stripe_pk, payload.card)(function(paymentToken){ + sdk.subscribe({ + "plan": payload.plan.id, + "token": paymentToken, + "timestamp": ts + }, { "user": "token", "pass": req.creds.token }, function(errors, rsp){ + + }) + }) + }) - //try { - try { - var payload = JSON.parse(tick.toString()) - } catch(e) { - //console.log(e) - return; - } + /** + * unauthenticated + * + */ + .on("unauthenticated", function(payload){ + localCreds(req.argv.endpoint).set(null) + helpers.log() + helpers.trunc("Aborted".yellow + (" - local token has expired and cleared. please try again.").grey) + helpers.log() + process.exit(1) + }) - if (payload.hasOwnProperty("type") && payload.type === "error") { - console.log() - console.log() - helpers.log(" Processing Error:".yellow, payload.error.filename).log() - - console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno })) - helpers.log() - console.log(" ", payload.error.message) - - console.log() - process.exit(1) - req.status = req.status || "Compile Error" - } else - - if (payload.hasOwnProperty("type") && payload.type === "users") { - helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) - } else - - if (payload.hasOwnProperty("type") && payload.type === "collect") { - //console.log("payload:collect", payload) - var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey - - helpers.log() - if (payload.hasOwnProperty("perks")) { - helpers.log(msg += "\n\n Includes...".blue) - payload.perks.forEach(function(perk){ - helpers.log((" - " + perk).blue) - }) - helpers.log() - } else { - helpers.log(msg) - } - - req.plan = payload.plan.name - - helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ - - // can this be passed in? - var uri = url.resolve(req.endpoint, "subscription") - request({ - uri: uri, - method: "PUT", - auth: { - 'user': 'token', - 'pass': req.creds.token, - 'sendImmediately': true - }, - form: { - plan: payload.plan.id, - token: token, - timestamp: req.headers.timestamp - } - }, function(e,r,b){ - if (r.statusCode == 201 || r.statusCode == 200) { - //console.log("here") - if (token === null) console.log() - // var sub = JSON.parse(b) - // console.log(" plan:".grey, sub.plan.name) - } else { - console.log("ERROR") - } - }) - }) - - // prompt for user - } else - if (payload.hasOwnProperty("type") && payload.type === "cert") { - try{ - helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) - } catch(e){ - console.log("ERROR (please report error to support@surge.sh") - console.log(e) - } - } else - - if (payload.hasOwnProperty("type") && payload.type === "ip") { - // req.success = true - // if (payload.data) { - // helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) - // } - } else - - if (payload.hasOwnProperty("type") && payload.type === "regionInfo") { - req.success = true - //helpers.log(helpers.smart("regions:").grey + " " + Object.keys(payload.regions).join(", ")) - helpers.displayRegions(payload) - - } else - - - if (payload.hasOwnProperty("type") && payload.type === "event_registration") { - if (payload.data) { - console.log() - console.log((" " + payload.data.event.name + " is set!").bold) - - if (payload.data.event.start) - console.log(" start:".grey, payload.data.event.start) - - if (payload.data.event.end) - console.log(" end:".grey, payload.data.event.end) - - if (payload.data.event.website) - console.log(" website:".grey, payload.data.event.website) - - if (payload.data.event.email) - console.log(" email:".grey, payload.data.event.email) - - if (payload.data.event.twitter) - console.log(" twitter:".grey, payload.data.event.twitter) - } - } else - - if (payload.hasOwnProperty("type") && payload.type === "event_participant") { - - if (payload.data) { - console.log() - - // end time - var out = [" You are in ".grey + payload.data.event.name.bold + "!".grey] - if (payload.data.event.endTime) - out.push("Competition ends in ".grey + payload.data.event.endTime.toString().green) - - // output - console.log(out.join(" ")) - - // help bar - out = [" w: ".grey + payload.data.event.website + " e: ".grey + payload.data.event.email] - - // if (payload.data.event.website) - // console.log(" website:".grey, payload.data.event.website) - - // if (payload.data.event.email) - // console.log(" email:".grey, payload.data.event.email) - - if (payload.data.event.twitter) - out.push(" t: ".grey, payload.data.event.twitter) - - console.log(out.join("")) - } - } else - - - - if (payload.hasOwnProperty("type") && payload.type === "subscription") { - if (payload.data) { - //console.log(" plan:".grey, payload.data.plan.name) - } else { - //console.log(" plan:".grey, "Free") - } - } else { - try { - // we have two different display for the progress bars - var displays = { - "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, - "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' - } - - // create progress bar (if one doesnt exist) - progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { - complete: '=', - incomplete: ' ', - width: 20, - total: payload.total - }) - - // clear file name on last update - var file = payload.written >= payload.total - ? "" - : payload.file - - // refresh view - progress[payload.id].update(payload.written / payload.total, { file: file }) - } catch(e){ - //console.log(e) - } - } - // } catch(e) { - // console.log("CATCH", e) - // } - } + /** + * forbidden + * + */ - var verbose = function(line){ - console.log("N", line.toString()) - } + .on("forbidden", function(payload){ + helpers.log() + helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) + helpers.log() + process.exit(1) + }) /** - * Upload + * error (depricated) + * + * payload includes information needed to display compile errors to user + * */ - // create upload - var uri = url.resolve(req.endpoint, req.domain) - var handshake = request.put(uri, { headers: headers }) - - // apply basic auth - handshake.auth("token", req.creds.token, true) - - // catch errors - handshake.on('error', console.log) + .on("error", function(payload){ + console.log() + console.log() + helpers.log(" Processing Error:".yellow, payload.error.filename).log() + console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno })) + helpers.log() + console.log(" ", payload.error.message) + console.log() + req.status = req.status || "Compile Error" + process.exit(1) + }) - // split replies on new line - handshake.pipe(split()) - // output result - handshake.on("data", tick) + /** + * fail + * + * the deployment has failed + * + */ - // done - handshake.on("end", function(){ - if (req.success === true){ - return next() - } else { - helpers.log() - helpers.log() - helpers.log(" Error".red + " - Deployment did not succeed.".grey) - helpers.log() - process.exit(1) - } - + .on("fail", function(){ + console.log() + console.log() + helpers.log(" Error".red + " - Deployment did not succeed.".grey) + helpers.space() + process.exit(1) }) - handshake.on("response", function(rsp){ + /** + * success + * + * the deployment has failed + * + */ - if (rsp.statusCode == 403) { - helpers.log() - if(rsp.headers.hasOwnProperty("reason")){ - helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) - } else { - helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) - } - helpers.log() - process.exit(1) - } else if (rsp.statusCode == 401) { - localCreds(req.argv.endpoint).set(null) - helpers.log() - if(rsp.headers.hasOwnProperty("reason")){ - helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) - } else { - helpers.trunc("Aborted".yellow + " - local token has expired and cleared. please try again.") - } - helpers.log() - process.exit(1) - // console.log(rsp.statusCode) - } + .on("success", function(){ + helpers.space() + helpers.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) + helpers.space() + return next() }) - // Read Project - var project = fsReader({ 'path': req.project, ignoreFiles: [".surgeignore"] }) - - // we always ignore .git directory - project.addIgnoreRules(ignore) - - // chain all this together... - project - .pipe(tar.Pack()) - .pipe(zlib.Gzip()) - .pipe(handshake) } diff --git a/lib/middleware/list.js b/lib/middleware/list.js index b76c7fa..021bbd1 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -82,29 +82,34 @@ module.exports = function(req, next){ style: { 'padding-left': 0, 'padding-right': 1 } }) var lastcmd = "" + var terminalBreakpoint = 100 project = req.project if (list.length != 0) { list.forEach(function(revision){ if (revision.current){ - var perm = revision.rev ? (revision.rev + ".").blue.underline + req.project.blue.underline : "" + var perm = revision.rev ? (revision.rev + ".").yellow.underline + req.project.yellow.underline : "" var row = [ perm || project.domain.blue.underline, + revision.timeAgoInWords.blue.underline, revision.email.blue.underline, revision.fileCount.toString().blue.underline + " files".blue.underline, - revision.totalSize.toString().blue.underline + " bytes".blue.underline + //revision.totalSize.toString().blue.underline + " bytes".blue.underline, + revision.friendlySize.blue.underline ] + if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) } else { - var perm = revision.rev ? (revision.rev + ".").grey + req.project.grey : "" + var perm = revision.rev ? (revision.rev + ".").yellow + req.project.yellow : "" var row = [ perm || project.domain, + revision.timeAgoInWords.grey, revision.email.grey, revision.fileCount.toString().grey + " files".grey, - revision.totalSize.toString().grey + " bytes".grey + //revision.totalSize.toString().grey + " bytes".grey, + revision.friendlySize.grey ] + if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) } - - table.push(row) lastcmd = project.cmd }) diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index dc356ea..47fb0f1 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -22,7 +22,7 @@ module.exports = function(req, next){ } else { creds(req.endpoint).set(req.creds.email, null) helpers.space() - helpers.trunc("You are not Authenticated. It is not true. You are not authed. You are not!".grey) + helpers.trunc("Not Authenticated!".grey) helpers.space() process.exit() } diff --git a/lib/surge.js b/lib/surge.js index 01d2ad3..db104a8 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -103,9 +103,11 @@ module.exports = function(config){ d: 'domain', e: 'endpoint', a: 'add', - r: 'remove' + r: 'remove', + s: 'stage', + m: 'message' }, - default: { e: ep } + default: { e: ep, s: false } } var authInfo = function(req, next){ @@ -335,7 +337,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, - preAuth, creds, welcome, auth, postAuth, shorthand, + preAuth, creds, welcome, auth, postAuth, cutover, space ] return function(){ From 4a4a9501315c0266a268f82e9f3e51964f3d75c1 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 4 Mar 2020 03:27:54 -0800 Subject: [PATCH 060/214] added discard call --- lib/middleware/discard.js | 58 +++++++++++++++++++++++++++++++++++++++ lib/surge.js | 22 ++++++++++++++- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 lib/middleware/discard.js diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js new file mode 100644 index 0000000..7ffa21a --- /dev/null +++ b/lib/middleware/discard.js @@ -0,0 +1,58 @@ + +var helpers = require("../util/helpers") +var cutto = require("./cut/cutto") +var interactive = require("./cut/interactive.js") + +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] + + if (req.argv.i){ + helpers.revisionSelector(req, function(errors, answers){ + if (!answers) return next() + + if (answers.revision.current){ + helpers.trunc("No change".green + " - Selected revision is already current".grey ) + return next() + } else { + return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + } + + }) + } else { + helpers.space() + sdk.delRevision(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 200 + var revDomain = [response.revision.rev, domain].join(".") + helpers.space() + if (success){ + helpers.log(" ✂ Discarded".green + (" revision " + revDomain).grey) + helpers.space() + helpers.log(" ⤮ Cutover".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ✂ Discard".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) + } + +} \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index db104a8..1022304 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -55,6 +55,7 @@ var yankrev = require("./middleware/yankrev") var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") +var discard = require("./middleware/discard") @@ -134,7 +135,7 @@ module.exports = function(config){ "rollback", "rollfore", "cutover", - "yankrev", + "discard", "publish", "teardown", "select", @@ -350,6 +351,25 @@ module.exports = function(config){ } } + surge.discard = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + discard, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.select = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub From 97fc5ed6105544ab78b3fbe3786816fa6b14c3cb Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Mar 2020 00:14:43 -0800 Subject: [PATCH 061/214] cutover and discard functioning. rollback rollfore updated --- lib/middleware/cutover.js | 31 ++++++++++----------- lib/middleware/discard.js | 57 ++++++++++++++++++++++++++++++-------- lib/middleware/rollback.js | 2 +- lib/middleware/rollfore.js | 2 +- lib/util/helpers.js | 8 ++++-- 5 files changed, 66 insertions(+), 34 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index e0956f0..9c2d585 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -13,20 +13,18 @@ module.exports = function(req, next){ }) var domain = req.argv["_"][0] - var rev = req.argv["_"][1] + var rev = req.argv["_"][1] || null if (req.argv.i){ - helpers.revisionSelector(req, function(errors, answers){ - if (!answers) return next() - - if (answers.revision.current){ - helpers.trunc("No change".green + " - Selected revision is already current".grey ) - return next() - } else { - return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) - } - - }) + // helpers.revisionSelector(req, function(errors, answers){ + // if (!answers) return next() + // if (answers.revision.current){ + // helpers.trunc("No change".green + " - Selected revision is already current".grey ) + // return next() + // } else { + // return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + // } + // }) } else { helpers.space() sdk.cutover(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ @@ -36,17 +34,16 @@ module.exports = function(req, next){ helpers.space() }else{ var success = response.status && response.status == 201 - var revDomain = [response.revision.rev, domain].join(".") helpers.space() if (success){ helpers.log(" ⤮ Cutover".green) - helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + [response.revision.rev, response.domain].join(".").underline).grey) }else{ helpers.log(" ⤮ Cutover".yellow) - helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.displayRevisionBasicInfo(response.revision, response.domain) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + [response.revision.rev, response.domain].join(".").underline).grey) } return next() } diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index 7ffa21a..bf04190 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -13,7 +13,7 @@ module.exports = function(req, next){ }) var domain = req.argv["_"][0] - var rev = req.argv["_"][1] + var rev = req.argv["_"][1] || null if (req.argv.i){ helpers.revisionSelector(req, function(errors, answers){ @@ -35,20 +35,53 @@ module.exports = function(req, next){ helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ - var success = response.status && response.status == 200 - var revDomain = [response.revision.rev, domain].join(".") - helpers.space() - if (success){ - helpers.log(" ✂ Discarded".green + (" revision " + revDomain).grey) + + if (response.status && response.status == 200){ + // display discard information + helpers.space() + helpers.log(" ✂ Discarded".green + (" " + [response.rev, response.domain].join(".").underline).grey) + helpers.space() + + // display change + if (response.uncached.change){ + helpers.space() + if (response.uncached.change == "rollfore"){ + helpers.log(" ⟳ Rollfore".green) + helpers.displayRevisionBasicInfo(response.revision, response.domain) + } else if (response.uncached.change == "rollback"){ + helpers.log(" ⟲ Rollback".green) + helpers.displayRevisionBasicInfo(response.revision, response.domain) + } else if (response.uncached.change == "offline"){ + helpers.log(" ⤫ Offline".green) + } + helpers.space() + } + + // display regions helpers.space() - helpers.log(" ⤮ Cutover".green) - helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.space() + + if (response.uncached.change){ + helpers.space() + if (response.uncached.change == "rollfore"){ + var revDomain = [response.revision.rev, domain].join(".") + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled forward to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + } else if (response.uncached.change == "rollback"){ + var revDomain = [response.revision.rev, domain].join(".") + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled back to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + } else if (response.uncached.change == "offline"){ + helpers.log(" Done".green + (" - No revisions to serve. Project now offline.").grey) + } + helpers.space() + } else { + helpers.log(" Done".green + (" - " + response.domain.underline + " still serving " + [response.revision.rev, response.domain].join(".").underline).grey) + } + }else{ - helpers.log(" ✂ Discard".yellow) - helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.space() + helpers.log(" Unchanged".yellow + (" - No revisions discarded.").grey) + helpers.space() } return next() } diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index efd857a..3347a9d 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -26,7 +26,7 @@ module.exports = function(req, next){ helpers.displayRegions(response) helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) }else{ - helpers.log(" ⟲ Rollback".yellow) + helpers.log(" ⟲ Rollback (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) } diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index 0d1452f..b882a59 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -26,7 +26,7 @@ module.exports = function(req, next){ helpers.displayRegions(response) helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) }else{ - helpers.log(" ⟳ Forward".yellow) + helpers.log(" ⟳ Forward (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) } diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 5cd9c63..8f5041c 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -484,9 +484,11 @@ exports.payment = function(req, stripe_pk, existing){ exports.displayRevisionBasicInfo = function(revision, domain){ space() - log((" " + [revision.rev, domain].join(".").underline).grey) - log((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) - log((" " + revision.email).grey) + trunc((" " + [revision.rev, domain].join(".").underline).grey) + trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) + trunc((" " + revision.email).grey) + // trunc((" " + [revision.rev, domain].join(".").underline).yellow + " " + revision.email.grey) + // trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) space() } From fa95876a3188fb887708929592a94b23ca729fe2 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 9 Mar 2020 03:40:12 -0700 Subject: [PATCH 062/214] adds invite command --- lib/middleware/invite.js | 48 +++++++++++++++++++++++++++ lib/middleware/yankrev.js | 0 lib/surge.js | 68 ++++++++++++++++++++++++++++++++++++--- lib/util/helpers.js | 32 +++++++++++++++++- 4 files changed, 143 insertions(+), 5 deletions(-) create mode 100644 lib/middleware/invite.js delete mode 100644 lib/middleware/yankrev.js diff --git a/lib/middleware/invite.js b/lib/middleware/invite.js new file mode 100644 index 0000000..21918f8 --- /dev/null +++ b/lib/middleware/invite.js @@ -0,0 +1,48 @@ + +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var args = helpers.parseDomainsEmails(req.argv["_"]) + + // helpers.displayInvites({ + // invites: [ + // { + // domain: 'test.lvh.me', + // email: 'brock@sintaxi.com', + // invite: 'surge.lvh.me/invite/19d7e810-493b-4b9c-8020-46e7c3712028', + // status: 'success' + // }, + // { + // domain: 'test.lvh.me', + // email: 'brock@sintaxi.com', + // invite: 'surge.lvh.me/invite/19d7e810-493b-4b9c-8020-46e7c3712028', + // status: 'success' + // }, + // { + // domain: 'test.lvh.me', + // email: 'brock@sintaxi.com', + // invite: 'surge.lvh.me/invite/19d7e810-493b-4b9c-8020-46e7c3712028', + // status: 'success' + // } + // ], + // status: 202 + // }) + + sdk.invite(args.domains[0] || null, args, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + helpers.displayInvites(rsp) + return next() + } + }) + +} diff --git a/lib/middleware/yankrev.js b/lib/middleware/yankrev.js deleted file mode 100644 index e69de29..0000000 diff --git a/lib/surge.js b/lib/surge.js index 1022304..71ef4d9 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -51,13 +51,13 @@ var plan = require("./middleware/plan") var card = require("./middleware/_shared/_card") var ssl = require("./middleware/ssl") var select = require("./middleware/select") -var yankrev = require("./middleware/yankrev") var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") var discard = require("./middleware/discard") - - +var invite = require("./middleware/invite") +var revoke = require("./middleware/revoke") +var encrypt = require("./middleware/encrypt") @@ -143,7 +143,10 @@ module.exports = function(config){ "plus", "ssl", "plan", - "card" + "card", + "invite", + "revoke", + "encrypt" ] if (commands.indexOf(cmd) !== -1) { @@ -491,6 +494,63 @@ module.exports = function(config){ } } + surge.invite = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + invite, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.revoke = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + revoke, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.encrypt = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + encrypt, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + return surge } diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 8f5041c..f197f3a 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -16,6 +16,7 @@ var inquirer = require("inquirer") var tableRevisions = require("./table-revision.js") var tableRegions = require("./table-regions.js") +var tables = require("./tables.js") exports.read = read @@ -513,6 +514,15 @@ exports.displayRegions = function(payload){ space() } +exports.displayInvites = function(payload){ + var table = tables.invites(payload.invites) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ + log(row.grey) + }) + space() +} + exports.revisionSelector = function(req, callback){ var options = { @@ -582,10 +592,30 @@ exports.validDomain = function(domain) { } } +exports.parseDomainsEmails = function(args){ + var domains = [] + var emails = [] + + args.forEach(function(item){ + if (item.indexOf("@") !== -1){ + emails.push(item) + } else { + if (item.split(".").length > 1){ + domains.push(item) + } + } + }) + + return { + domains: domains, + emails: emails + } +} + exports.defaults = { 404: function(e, r, b){ space() - trunc("Error".red + " - Project Not Found".grey) + trunc("Error".red + " - Not Found".grey) space() process.exit(1) } From 6d2352ae17d19a9425eb4834696d4bbea5e3ccb5 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 7 Apr 2020 04:54:22 -0700 Subject: [PATCH 063/214] updates sdk calls --- lib/middleware/deploy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index f1f16d6..ec4e3a7 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -150,7 +150,7 @@ module.exports = function(req, next){ } req.plan = payload.plan.name helpers.payment(req, payload.stripe_pk, payload.card)(function(paymentToken){ - sdk.subscribe({ + sdk.plan({ "plan": payload.plan.id, "token": paymentToken, "timestamp": ts From 2ee18d1d9934d0be1971a8fb32913b8c9ac2317e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 7 Apr 2020 04:55:13 -0700 Subject: [PATCH 064/214] adds files --- lib/middleware/deploy-old.js | 349 +++++++++++++++++++++++++++++++++++ lib/middleware/encrypt.js | 19 ++ lib/middleware/revoke.js | 24 +++ lib/util/table-ns.js | 28 +++ lib/util/tables.js | 48 +++++ 5 files changed, 468 insertions(+) create mode 100644 lib/middleware/deploy-old.js create mode 100644 lib/middleware/encrypt.js create mode 100644 lib/middleware/revoke.js create mode 100644 lib/util/table-ns.js create mode 100644 lib/util/tables.js diff --git a/lib/middleware/deploy-old.js b/lib/middleware/deploy-old.js new file mode 100644 index 0000000..b3ded10 --- /dev/null +++ b/lib/middleware/deploy-old.js @@ -0,0 +1,349 @@ +var fs = require("fs") +var request = require("request") +var helpers = require('../util/helpers') +var localCreds = require("../util/creds.js") +var tar = require('tarr') +var zlib = require('zlib') +var fsReader = require('surge-fstream-ignore') +var surge = require('../surge') +var ProgressBar = require("progress") +var split = require("split") +var url = require("url") +var ignore = require("surge-ignore") + + +module.exports = function(req, next){ + req.success = false; + + /** + * Some useful metadata + */ + + var headers = { + "version" : req.pkg.version, + "file-count": req.fileCount, + "cmd": req.config.cmd, + "project-size": req.projectSize, + "timestamp": new Date().toJSON() + } + + + /** + * Collaborators to add + */ + + if (req.argv.a) + headers["add"] = req.argv.a; + + + /** + * Collaborators to remove + */ + + if (req.argv.r) + headers["rem"] = req.argv.r; + + + /** + * Perform build on server + */ + + if (req.argv.build) + headers["build"] = req.argv.build; + + + /** + * Force Protocol? + */ + + if (req.ssl !== null) + headers["ssl"] = req.ssl + + req.headers = headers + + /** + * Progress Bars + */ + + var progress = {} + + + /** + * Our upload "data" handle + */ + + var tick = function(tick){ + //console.log("tick", tick.toString()) + + if (Object.keys(progress).length > 1) global.ponr = true + + //try { + + try { + var payload = JSON.parse(tick.toString()) + } catch(e) { + //console.log(e) + return; + } + + + if (payload.hasOwnProperty("type") && payload.type === "error") { + console.log() + console.log() + helpers.log(" Processing Error:".yellow, payload.error.filename).log() + + console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno })) + helpers.log() + console.log(" ", payload.error.message) + + console.log() + process.exit(1) + req.status = req.status || "Compile Error" + } else + + if (payload.hasOwnProperty("type") && payload.type === "users") { + helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) + } else + + if (payload.hasOwnProperty("type") && payload.type === "collect") { + //console.log("payload:collect", payload) + var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey + + helpers.log() + if (payload.hasOwnProperty("perks")) { + helpers.log(msg += "\n\n Includes...".blue) + payload.perks.forEach(function(perk){ + helpers.log((" - " + perk).blue) + }) + helpers.log() + } else { + helpers.log(msg) + } + + req.plan = payload.plan.name + + helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ + + // can this be passed in? + var uri = url.resolve(req.endpoint, "subscription") + request({ + uri: uri, + method: "PUT", + auth: { + 'user': 'token', + 'pass': req.creds.token, + 'sendImmediately': true + }, + form: { + plan: payload.plan.id, + token: token, + timestamp: req.headers.timestamp + } + }, function(e,r,b){ + if (r.statusCode == 201 || r.statusCode == 200) { + //console.log("here") + if (token === null) console.log() + // var sub = JSON.parse(b) + // console.log(" plan:".grey, sub.plan.name) + } else { + console.log("ERROR") + } + }) + }) + + // prompt for user + } else + if (payload.hasOwnProperty("type") && payload.type === "cert") { + try{ + helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + } catch(e){ + console.log("ERROR (please report error to support@surge.sh") + console.log(e) + } + } else + + if (payload.hasOwnProperty("type") && payload.type === "ip") { + // req.success = true + // if (payload.data) { + // helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) + // } + } else + + if (payload.hasOwnProperty("type") && payload.type === "regionInfo") { + req.success = true + //helpers.log(helpers.smart("regions:").grey + " " + Object.keys(payload.regions).join(", ")) + helpers.displayRegions(payload) + + } else + + + if (payload.hasOwnProperty("type") && payload.type === "event_registration") { + if (payload.data) { + console.log() + console.log((" " + payload.data.event.name + " is set!").bold) + + if (payload.data.event.start) + console.log(" start:".grey, payload.data.event.start) + + if (payload.data.event.end) + console.log(" end:".grey, payload.data.event.end) + + if (payload.data.event.website) + console.log(" website:".grey, payload.data.event.website) + + if (payload.data.event.email) + console.log(" email:".grey, payload.data.event.email) + + if (payload.data.event.twitter) + console.log(" twitter:".grey, payload.data.event.twitter) + } + } else + + if (payload.hasOwnProperty("type") && payload.type === "event_participant") { + + if (payload.data) { + console.log() + + // end time + var out = [" You are in ".grey + payload.data.event.name.bold + "!".grey] + if (payload.data.event.endTime) + out.push("Competition ends in ".grey + payload.data.event.endTime.toString().green) + + // output + console.log(out.join(" ")) + + // help bar + out = [" w: ".grey + payload.data.event.website + " e: ".grey + payload.data.event.email] + + // if (payload.data.event.website) + // console.log(" website:".grey, payload.data.event.website) + + // if (payload.data.event.email) + // console.log(" email:".grey, payload.data.event.email) + + if (payload.data.event.twitter) + out.push(" t: ".grey, payload.data.event.twitter) + + console.log(out.join("")) + } + } else + + + + if (payload.hasOwnProperty("type") && payload.type === "subscription") { + if (payload.data) { + //console.log(" plan:".grey, payload.data.plan.name) + } else { + //console.log(" plan:".grey, "Free") + } + } else { + try { + // we have two different display for the progress bars + var displays = { + "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' + } + + // create progress bar (if one doesnt exist) + progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { + complete: '=', + incomplete: ' ', + width: 20, + total: payload.total + }) + + // clear file name on last update + var file = payload.written >= payload.total + ? "" + : payload.file + + // refresh view + progress[payload.id].update(payload.written / payload.total, { file: file }) + } catch(e){ + //console.log(e) + } + + } + // } catch(e) { + // console.log("CATCH", e) + // } + } + + var verbose = function(line){ + console.log("N", line.toString()) + } + + + /** + * Upload + */ + + // create upload + var uri = url.resolve(req.endpoint, req.domain) + var handshake = request.put(uri, { headers: headers }) + + // apply basic auth + handshake.auth("token", req.creds.token, true) + + // catch errors + handshake.on('error', console.log) + + // split replies on new line + handshake.pipe(split()) + + // output result + handshake.on("data", tick) + + // done + handshake.on("end", function(){ + if (req.success === true){ + return next() + } else { + helpers.log() + helpers.log() + helpers.log(" Error".red + " - Deployment did not succeed.".grey) + helpers.log() + process.exit(1) + } + + }) + + + handshake.on("response", function(rsp){ + + if (rsp.statusCode == 403) { + helpers.log() + if(rsp.headers.hasOwnProperty("reason")){ + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) + } else { + helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) + } + helpers.log() + process.exit(1) + } else if (rsp.statusCode == 401) { + localCreds(req.argv.endpoint).set(null) + helpers.log() + if(rsp.headers.hasOwnProperty("reason")){ + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) + } else { + helpers.trunc("Aborted".yellow + " - local token has expired and cleared. please try again.") + } + helpers.log() + process.exit(1) + // console.log(rsp.statusCode) + } + }) + + // Read Project + var project = fsReader({ 'path': req.project, ignoreFiles: [".surgeignore"] }) + + // we always ignore .git directory + project.addIgnoreRules(ignore) + + // chain all this together... + project + .pipe(tar.Pack()) + .pipe(zlib.Gzip()) + .pipe(handshake) + +} diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js new file mode 100644 index 0000000..8bf467b --- /dev/null +++ b/lib/middleware/encrypt.js @@ -0,0 +1,19 @@ + +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + helpers.log("ENCRYPT:", req.argv) + helpers.log({ user: "token", pass: req.creds.token }) + + sdk.encrypt(req.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + return next() + }) + +} \ No newline at end of file diff --git a/lib/middleware/revoke.js b/lib/middleware/revoke.js new file mode 100644 index 0000000..9fa5f6a --- /dev/null +++ b/lib/middleware/revoke.js @@ -0,0 +1,24 @@ + +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + helpers.log("REVOKE:", req.argv) + helpers.log({ user: "token", pass: req.creds.token }) + + sdk.revoke(req.argv["_"], { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + return next() + } + }) + +} diff --git a/lib/util/table-ns.js b/lib/util/table-ns.js new file mode 100644 index 0000000..fe8f4bc --- /dev/null +++ b/lib/util/table-ns.js @@ -0,0 +1,28 @@ + +var Table = require("cli-table3") + + +// returns a table +module.exports = function(message, length){ + var table = new Table({ + chars: { + 'mid': '', + 'left-mid': '', + 'mid-mid': '', + 'right-mid': '' + }, + style: { + 'padding-left': 3, + 'padding-right': 3 + } + }) + + table.push([{ colSpan:4, content: message }]) + + return table + +} + + + + \ No newline at end of file diff --git a/lib/util/tables.js b/lib/util/tables.js new file mode 100644 index 0000000..1b7bf54 --- /dev/null +++ b/lib/util/tables.js @@ -0,0 +1,48 @@ + +var Table = require("cli-table3") + +exports.invites = function(invites){ + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 1 + } + }) + + invites.forEach(function(invite){ + + var row = [ + //invite.domain.yellow, + invite.email.blue, + invite.invite.underline.grey + ] + + if (invite.status == "sent"){ + row.push(invite.status.green) + } else if (invite.status == "failed") { + row.push(invite.status.red) + }else{ + row.push(invite.status.yellow) + } + + table.push(row) + }) + + return table +} From ad18027549240bbb1522e3918c0655c970e61c55 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 22 Apr 2020 02:46:48 -0700 Subject: [PATCH 065/214] changes delRevision to discard --- lib/middleware/discard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index bf04190..eca9b19 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -29,7 +29,7 @@ module.exports = function(req, next){ }) } else { helpers.space() - sdk.delRevision(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ + sdk.discard(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) From c558884c53b69a5fcc2ef539ba02cb085a56dd81 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 22 Apr 2020 04:43:23 -0700 Subject: [PATCH 066/214] cleanup publish output --- lib/middleware/_shared/_size.js | 1 + lib/middleware/_shared/auth.js | 2 +- lib/middleware/deploy.js | 4 ++-- lib/surge.js | 2 +- lib/util/helpers.js | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/middleware/_shared/_size.js b/lib/middleware/_shared/_size.js index 56984a3..8cf45da 100644 --- a/lib/middleware/_shared/_size.js +++ b/lib/middleware/_shared/_size.js @@ -30,6 +30,7 @@ module.exports = function(req, next){ if (!stats.isDirectory()) req.fileCount++ }) }).on("close", function(){ + helpers.log(helpers.smart('size:').grey + " " + req.fileCount + " files, " + humanFileSize(req.projectSize)) //helpers.log(req.fileCount + " files,", humanFileSize(req.projectSize)) next() }) diff --git a/lib/middleware/_shared/auth.js b/lib/middleware/_shared/auth.js index b20b944..e130b2a 100644 --- a/lib/middleware/_shared/auth.js +++ b/lib/middleware/_shared/auth.js @@ -11,7 +11,7 @@ module.exports = function(req, next, abort){ if (req.creds){ helpers.space() } - helpers.trunc("Login (or create surge account) by entering email & password.".grey) + helpers.trunc("Login or create surge account by entering email & password.".grey) helpers.space() helpers.loginForm(req, function(creds){ localCreds(req.endpoint).set(creds.email, creds.token) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index ec4e3a7..01be901 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -55,13 +55,13 @@ module.exports = function(req, next){ // we have two different display for the progress bars var displays = { - "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "upload": helpers.smart('upload:').grey + ' [:bar] :percent', "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' } // create progress bar (if one doesnt exist) progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { - complete: '=', incomplete: ' ', width: 20, total: payload.total + complete: '=', incomplete: ' ', width: 25, total: payload.total }) // clear file name on last update diff --git a/lib/surge.js b/lib/surge.js index 71ef4d9..097c8e8 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -229,8 +229,8 @@ module.exports = function(config){ whitelist, endpoint, pkg, help, version, space, preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, preProject, project, postProject, - preSize, size, postSize, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, + preSize, size, postSize, prePublish, protocol, deploy, postPublish, ipaddress ] return function(){ diff --git a/lib/util/helpers.js b/lib/util/helpers.js index f197f3a..1bb9017 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -509,7 +509,7 @@ exports.displayRegions = function(payload){ //log(" Origin regions…".grey) space() rows.forEach(function(row, i){ - log(" ", row.grey) + log(" ", row.grey) }) space() } From bc54673a81e230eb4530c96e15272a4bad80980d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 01:54:55 -0700 Subject: [PATCH 067/214] fixes deployment output --- lib/middleware/cutover.js | 4 ++-- lib/middleware/deploy.js | 13 ++++++++++--- lib/middleware/discard.js | 10 ++++------ lib/middleware/list.js | 11 ++++------- lib/middleware/rollback.js | 5 ++--- lib/middleware/rollfore.js | 5 ++--- lib/util/helpers.js | 11 +++++------ 7 files changed, 29 insertions(+), 30 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 9c2d585..48df901 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -39,11 +39,11 @@ module.exports = function(req, next){ helpers.log(" ⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⤮ Cutover".yellow) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 01be901..ac5f983 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -155,7 +155,14 @@ module.exports = function(req, next){ "token": paymentToken, "timestamp": ts }, { "user": "token", "pass": req.creds.token }, function(errors, rsp){ - + if (errors) { + helpers.log("error".red + " - troubles switching plan".grey) + }else{ + helpers.reset() + helpers.space() + helpers.trunc(rsp.msg.grey) + helpers.space() + } }) }) }) @@ -216,8 +223,8 @@ module.exports = function(req, next){ */ .on("fail", function(){ - console.log() - console.log() + helpers.reset() + helpers.space() helpers.log(" Error".red + " - Deployment did not succeed.".grey) helpers.space() process.exit(1) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index eca9b19..bf4e703 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -39,7 +39,7 @@ module.exports = function(req, next){ if (response.status && response.status == 200){ // display discard information helpers.space() - helpers.log(" ✂ Discarded".green + (" " + [response.rev, response.domain].join(".").underline).grey) + helpers.log(" ✂ Discarded".green + (" " + response.revision.preview.underline).grey) helpers.space() // display change @@ -65,17 +65,15 @@ module.exports = function(req, next){ if (response.uncached.change){ helpers.space() if (response.uncached.change == "rollfore"){ - var revDomain = [response.revision.rev, domain].join(".") - helpers.log(" Done".green + (" - " + response.domain.underline + " rolled forward to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled forward to revision " + response.revision.preview.underline).grey) } else if (response.uncached.change == "rollback"){ - var revDomain = [response.revision.rev, domain].join(".") - helpers.log(" Done".green + (" - " + response.domain.underline + " rolled back to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled back to revision " + response.revision.preview.underline).grey) } else if (response.uncached.change == "offline"){ helpers.log(" Done".green + (" - No revisions to serve. Project now offline.").grey) } helpers.space() } else { - helpers.log(" Done".green + (" - " + response.domain.underline + " still serving " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + response.domain.underline + " still serving " + response.revision.preview.underline).grey) } }else{ diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 021bbd1..43a6530 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -86,26 +86,23 @@ module.exports = function(req, next){ project = req.project if (list.length != 0) { list.forEach(function(revision){ - if (revision.current){ - var perm = revision.rev ? (revision.rev + ".").yellow.underline + req.project.yellow.underline : "" + var perm = revision.preview.blue.underline var row = [ perm || project.domain.blue.underline, revision.timeAgoInWords.blue.underline, revision.email.blue.underline, - revision.fileCount.toString().blue.underline + " files".blue.underline, - //revision.totalSize.toString().blue.underline + " bytes".blue.underline, + revision.publicFileCount.toString().blue.underline + " files".blue.underline, revision.friendlySize.blue.underline ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) } else { - var perm = revision.rev ? (revision.rev + ".").yellow + req.project.yellow : "" + var perm = revision.preview.grey var row = [ perm || project.domain, revision.timeAgoInWords.grey, revision.email.grey, - revision.fileCount.toString().grey + " files".grey, - //revision.totalSize.toString().grey + " bytes".grey, + revision.publicFileCount.toString().grey + " files".grey, revision.friendlySize.grey ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 3347a9d..305adcc 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -18,17 +18,16 @@ module.exports = function(req, next){ helpers.space() }else{ var success = response.status && response.status == 201 - var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") helpers.space() if (success){ helpers.log(" ⟲ Rollback".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⟲ Rollback (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index b882a59..2a2826d 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -18,17 +18,16 @@ module.exports = function(req, next){ helpers.space() }else{ var success = response.status && response.status == 201 - var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") helpers.space() if (success){ helpers.log(" ⟳ Forward".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⟳ Forward (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 1bb9017..b50f6b6 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -485,11 +485,9 @@ exports.payment = function(req, stripe_pk, existing){ exports.displayRevisionBasicInfo = function(revision, domain){ space() - trunc((" " + [revision.rev, domain].join(".").underline).grey) - trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) - trunc((" " + revision.email).grey) - // trunc((" " + [revision.rev, domain].join(".").underline).yellow + " " + revision.email.grey) - // trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) + trunc((revision.preview.underline).grey) + trunc((revision.publicFileCount + " files, " + revision.publicTotalSize + " size").grey) + trunc((revision.email).grey) space() } @@ -504,9 +502,10 @@ exports.displayRegions = function(payload){ var rows = table.toString().split("\n") //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) - space() + //space() //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) //log(" Origin regions…".grey) + reset() space() rows.forEach(function(row, i){ log(" ", row.grey) From 853bc8a9065f5c2a89a58d18d2c470ad2627a62d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 01:59:51 -0700 Subject: [PATCH 068/214] resolving dep warnings --- package-lock.json | 771 ++++++++++++++++++++++++++++++++++++++++++++-- package.json | 4 +- 2 files changed, 744 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e826ef..205e07c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,12 @@ "uri-js": "^4.2.2" } }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -34,6 +40,25 @@ "color-convert": "^1.9.0" } }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -99,6 +124,12 @@ "tweetnacl": "^0.14.3" } }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -116,6 +147,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -163,6 +203,22 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -303,12 +359,12 @@ } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "decamelize": { @@ -322,6 +378,15 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -342,11 +407,53 @@ "safer-buffer": "^2.1.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -390,6 +497,33 @@ "escape-string-regexp": "^1.0.5" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -410,6 +544,25 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -441,6 +594,15 @@ } } }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -472,16 +634,31 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "http-signature": { @@ -598,11 +775,44 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, "is-domain": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=" }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -612,21 +822,70 @@ "number-is-nan": "^1.0.0" } }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -673,6 +932,31 @@ "invert-kv": "^1.0.0" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", @@ -700,9 +984,9 @@ } }, "minimist": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", - "integrity": "sha1-G8K8cWWM3KVxJHVoQ2NhWwtPaVs=" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.3.tgz", + "integrity": "sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw==" }, "mkdirp": { "version": "0.5.1", @@ -720,29 +1004,143 @@ } }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", + "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", "dev": true, "requires": { + "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", + "chokidar": "3.3.0", + "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "glob": "7.1.2", + "find-up": "3.0.0", + "glob": "7.1.3", "growl": "1.10.5", - "he": "1.1.1", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } } } }, @@ -752,9 +1150,9 @@ "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "mute-stream": { @@ -783,6 +1181,22 @@ "shell-quote": "^1.4.1" } }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -799,6 +1213,40 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -829,6 +1277,36 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -839,6 +1317,12 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pkginfo": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", @@ -884,6 +1368,15 @@ "mute-stream": "~0.0.4" } }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -911,6 +1404,18 @@ "uuid": "^3.3.2" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -959,6 +1464,18 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, "shell-quote": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", @@ -1019,6 +1536,12 @@ "through": "2" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -1051,6 +1574,48 @@ "strip-ansi": "^3.0.0" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1060,10 +1625,16 @@ "ansi-regex": "^2.0.0" } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "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" @@ -1133,6 +1704,15 @@ "os-tmpdir": "~1.0.2" } }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -1215,6 +1795,30 @@ "extsprintf": "^1.2.0" } }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", @@ -1281,6 +1885,115 @@ "window-size": "^0.1.2", "y18n": "^3.2.0" } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + } + } } } } diff --git a/package.json b/package.json index 8320ed3..4a1ef4f 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "surge-fstream-ignore": "^1.0.6", "inquirer": "^6.2.2", "is-domain": "0.0.1", - "minimist": "1.1.1", + "minimist": "1.2.3", "moniker": "0.1.2", "netrc": "0.1.4", "progress": "1.1.8", @@ -23,7 +23,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "^5.2.0", + "mocha": "^7.1.2", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From 7dd8051ebe08f8dd37de2757385f6cea773e5e11 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 02:24:29 -0700 Subject: [PATCH 069/214] switched list to use sdk --- lib/middleware/list.js | 52 ++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 43a6530..9c0441d 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -1,25 +1,17 @@ var url = require("url") -var request = require("request") var Table = require("cli-table3") var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") module.exports = function(req, next){ - var listAllProjects = function(){ - var options = { - 'url': url.resolve(req.endpoint.format(), '/list'), - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - - request(options, function(e, r, obj){ - if (e) throw e - var list = JSON.parse(obj) + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + var listAllProjects = function(){ + sdk.list({ user: "token", pass: req.creds.token }, function(error, projects){ var table = new Table({ //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' @@ -28,9 +20,10 @@ module.exports = function(req, next){ , 'right': '' , 'right-mid': '' , 'middle': ' ' }, style: { 'padding-left': 1, 'padding-right': 1 } }) + var lastcmd = "" - if (list.length != 0) { - list.forEach(function(project){ + if (projects.length != 0) { + projects.forEach(function(project){ var perm = project.rev ? (project.rev + " ").grey + project.domain : "" if (project.planName) { if (project.planName.indexOf("Standard") !== -1){ @@ -56,24 +49,14 @@ module.exports = function(req, next){ helpers.space() helpers.trunc(("Empty").grey) } - next() + return next() }) } var listSingleProject = function(){ - var options = { - 'url': url.resolve(req.endpoint.format(), req.argv["_"][0] + '/list'), - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - request(options, function(e, r, obj){ - if (e) throw e - var list = JSON.parse(obj) - list.reverse() + + sdk.list(req.argv["_"][0], { user: "token", pass: req.creds.token }, function(error, revisions){ + revisions.reverse() var table = new Table({ chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' @@ -84,8 +67,8 @@ module.exports = function(req, next){ var lastcmd = "" var terminalBreakpoint = 100 project = req.project - if (list.length != 0) { - list.forEach(function(revision){ + if (revisions.length != 0) { + revisions.forEach(function(revision){ if (revision.current){ var perm = revision.preview.blue.underline var row = [ @@ -116,9 +99,8 @@ module.exports = function(req, next){ helpers.space() helpers.trunc(("Empty").grey) } - next() + return next() }) - } From 4faeed073d1347a4f908099e0bfa7c84eb740f5b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 02:35:39 -0700 Subject: [PATCH 070/214] removes request from teardown --- lib/middleware/plan.js | 1 - lib/middleware/teardown.js | 30 +++++++++--------------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 9faf2cf..a00068f 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -1,5 +1,4 @@ -var request = require("request") var url = require("url") var helpers = require("../util/helpers") var path = require("path") diff --git a/lib/middleware/teardown.js b/lib/middleware/teardown.js index fe38db1..1c82aa5 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/teardown.js @@ -1,41 +1,29 @@ -var request = require("request") var url = require("url") var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") var parseUrl = require("url-parse-as-address") +var surgeSDK = require("surge-sdk") module.exports = function(req, next, abort){ - var remove = function(domain){ - var options = { - 'url': url.resolve(req.endpoint, domain), - 'method': 'delete', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - - request(options, function(e, r, obj){ - if (e) throw e + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) - if (r.statusCode == 200 || r.statusCode == 204 || r.statusCode == 210) { - helpers.space() - helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey) - helpers.space() - process.exit() - } else if (r.statusCode == 403) { + var remove = function(domain){ + sdk.teardown(domain, { user: "token", pass: req.creds.token }, function(error, info){ + if (error) { helpers.space() helpers.trunc("Aborted".yellow + (" - Unable to remove " + domain.underline + ".").grey) helpers.space() process.exit(1) } else { helpers.space() - helpers.log(obj) + helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey) helpers.space() process.exit() } From 911bc1e08ecdbd3e4c0ec84a7a64a9edbfa93b25 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 02:51:03 -0700 Subject: [PATCH 071/214] uses sdk to set card --- lib/middleware/_shared/_setcard.js | 39 +++++++++++++----------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/lib/middleware/_shared/_setcard.js b/lib/middleware/_shared/_setcard.js index 216df32..1bebd60 100644 --- a/lib/middleware/_shared/_setcard.js +++ b/lib/middleware/_shared/_setcard.js @@ -1,10 +1,15 @@ -var request = require("request") var url = require("url") var helpers = require("../../util/helpers") +var surgeSDK = require("surge-sdk") module.exports = function(req, next, abort){ + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + if (!req.paymentToken){ helpers.log() if (req.card){ @@ -21,28 +26,18 @@ module.exports = function(req, next, abort){ fields.token = req.paymentToken } - request({ - uri: url.resolve(req.endpoint, "card"), - method: "PUT", - auth: { - 'user': 'token', - 'pass': req.creds.token, - 'sendImmediately': true - }, - form: fields - }, function(e,r,b){ - if ([200,201].indexOf(r.statusCode) !== -1) { - var obj = JSON.parse(b) - console.log() - console.log((" Success".green + " - ".grey + obj.msg.grey)) - console.log() - } else { - var obj = JSON.parse(b) - console.log() - console.log(" Error ".red + " - " + (obj.message || obj.msg).grey) - console.log() + sdk.card(fields, { user: "token", pass: req.creds.token }, function(error, obj){ + if (error){ + helpers.space() + helpers.trunc("Error ".red + " - " + (obj.message || obj.msg).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + helpers.trunc(("Success".green + " - ".grey + obj.msg.grey)) + helpers.space() + process.exit() } }) - } } From 7d5bd062dc28c423410761d3c9b598287e2d466b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 03:05:12 -0700 Subject: [PATCH 072/214] using sdk to fetch plans --- lib/middleware/_shared/_plans.js | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/lib/middleware/_shared/_plans.js b/lib/middleware/_shared/_plans.js index 53e1b50..d4a0ce2 100644 --- a/lib/middleware/_shared/_plans.js +++ b/lib/middleware/_shared/_plans.js @@ -6,31 +6,20 @@ var path = require("path") var fs = require("fs") var os = require("os") var parseUrl = require("url-parse-as-address") +var surgeSDK = require("surge-sdk") module.exports = function(req, next, abort){ - - var plansUrl = req.domain - ? url.resolve(req.endpoint, path.join(req.domain, "plans")) - : url.resolve(req.endpoint, "plans") + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + var headers = {} if (req.argv.promo) headers.promo = req.argv.promo - - var options = { - 'url': plansUrl, - 'method': 'get', - 'headers': headers, - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - - request(options, function(e, r, obj){ - if (r.statusCode == 200){ - req.plans = JSON.parse(obj) - } + + sdk.plans(req.domain, headers, { user: "token", pass: req.creds.token }, function(error, plans){ + req.plans = plans return next() }) From 559a1ccf58c65f60acda67d0f0e432d74af03f02 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 03:11:33 -0700 Subject: [PATCH 073/214] removing request where not used --- lib/middleware/_shared/_plans.js | 3 +-- lib/middleware/_shared/_tokencheck.js | 22 +--------------------- lib/middleware/_shared/auth.js | 2 +- 3 files changed, 3 insertions(+), 24 deletions(-) diff --git a/lib/middleware/_shared/_plans.js b/lib/middleware/_shared/_plans.js index d4a0ce2..4827701 100644 --- a/lib/middleware/_shared/_plans.js +++ b/lib/middleware/_shared/_plans.js @@ -1,5 +1,4 @@ -var request = require("request") var url = require("url") var helpers = require("../../util/helpers") var path = require("path") @@ -14,7 +13,7 @@ module.exports = function(req, next, abort){ endpoint: req.endpoint.format(), defaults: helpers.defaults }) - + var headers = {} if (req.argv.promo) headers.promo = req.argv.promo diff --git a/lib/middleware/_shared/_tokencheck.js b/lib/middleware/_shared/_tokencheck.js index 3e3734e..b499142 100644 --- a/lib/middleware/_shared/_tokencheck.js +++ b/lib/middleware/_shared/_tokencheck.js @@ -1,31 +1,11 @@ -var request = require("request") -var localCreds = require("../../util/creds.js") -var helpers = require("../../util/helpers.js") -var os = require('os') -var url = require("url") -var parseUrl = require("url-parse-as-address") module.exports = function(req, next){ if (req.creds) { req.authed = true helpers.trunc(("As " + "brock@sintaxi.com".underline + " on " + "Student" + " plan.").grey) helpers.log() - next() - // helpers.fetchToken(req.argv.endpoint)("token", req.creds.token, function(err, obj){ - // if (err) { - // localCreds(req.argv.endpoint).set(null) - // req.creds = null - // req.authed = false - // next() - // //auth(req, next) - // } else { - // req.creds = localCreds(req.argv.endpoint).set(obj.email, obj.token) - // req.authed = true - // next() - // } - // }) + return next() } else { next() } - } diff --git a/lib/middleware/_shared/auth.js b/lib/middleware/_shared/auth.js index e130b2a..4c748f1 100644 --- a/lib/middleware/_shared/auth.js +++ b/lib/middleware/_shared/auth.js @@ -1,4 +1,4 @@ -var request = require("request") + var localCreds = require("../../util/creds.js") var helpers = require("../../util/helpers.js") var os = require('os') From eb8273520a50d309e4f7324d73ed28938283b46d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 28 Apr 2020 16:21:44 -0700 Subject: [PATCH 074/214] remove unused deps --- lib/middleware/list.js | 4 ++-- package-lock.json | 41 +++++++++++++++++++++++++++++++++-------- package.json | 12 +++++------- 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 9c0441d..70f4c98 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -75,7 +75,7 @@ module.exports = function(req, next){ perm || project.domain.blue.underline, revision.timeAgoInWords.blue.underline, revision.email.blue.underline, - revision.publicFileCount.toString().blue.underline + " files".blue.underline, + (revision.publicFileCount ? revision.publicFileCount.toString().underline.grey + " files".underline.grey : ""), revision.friendlySize.blue.underline ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) @@ -85,7 +85,7 @@ module.exports = function(req, next){ perm || project.domain, revision.timeAgoInWords.grey, revision.email.grey, - revision.publicFileCount.toString().grey + " files".grey, + (revision.publicFileCount ? revision.publicFileCount.toString().grey + " files".grey : ""), revision.friendlySize.grey ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) diff --git a/package-lock.json b/package-lock.json index 205e07c..aa62c67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1528,14 +1528,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, - "split": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", - "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", - "requires": { - "through": "2" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -1668,6 +1660,34 @@ "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, + "surge-sdk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.1.2.tgz", + "integrity": "sha512-dxivxkeF5NY2ttVCiM3YlByLzQrjFl2TpRjQWfprE1dgeJtE56g8oo5ZKCN6/6pyqBc3U7sEOK0AHkX9JqKuNg==", + "requires": { + "request": "^2.88.0", + "split": "^1.0.1", + "surge-fstream-ignore": "^1.0.6", + "surge-ignore": "^0.3.0", + "tarr": "^1.1.0", + "zlib": "^1.0.5" + }, + "dependencies": { + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, + "surge-ignore": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", + "integrity": "sha1-METmyiMw81hAHihfkAxtKM9e3C4=" + } + } + }, "tarr": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", @@ -1994,6 +2014,11 @@ } } } + }, + "zlib": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", + "integrity": "sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA=" } } } diff --git a/package.json b/package.json index 4a1ef4f..5aa0bb6 100644 --- a/package.json +++ b/package.json @@ -5,20 +5,18 @@ "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { - "cli-table3": "^0.5.1", - "surge-fstream-ignore": "^1.0.6", + "surge-sdk": "0.1.2", + "minimist": "1.2.3", "inquirer": "^6.2.2", + "prompt": "~0.2.14", + "cli-table3": "^0.5.1", + "progress": "1.1.8", "is-domain": "0.0.1", - "minimist": "1.2.3", "moniker": "0.1.2", "netrc": "0.1.4", - "progress": "1.1.8", - "prompt": "~0.2.14", "read": "1.0.5", "request": "^2.88.0", - "split": "0.3.1", "surge-ignore": "0.2.0", - "tarr": "1.1.0", "url-parse-as-address": "1.0.0" }, "devDependencies": { From 2e6a3fd96dfbad352d0d317d6371093ab60cbec8 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 29 Apr 2020 03:09:46 -0700 Subject: [PATCH 075/214] cleaner reads of json data using split --- lib/middleware/cutover.js | 6 +++--- lib/middleware/deploy.js | 26 ++++++++++++++++---------- lib/util/helpers.js | 4 +--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 48df901..34e0501 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -36,14 +36,14 @@ module.exports = function(req, next){ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.log(" ⤮ Cutover".green) + helpers.trunc(" ⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⤮ Cutover".yellow) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) + helpers.trunc("Unchanged".yellow + (" - already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index ac5f983..d91a129 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -9,6 +9,7 @@ var ProgressBar = require("progress") module.exports = function(req, next){ var progress = {} + var progressDone = {} var ts = new Date().toJSON() @@ -68,7 +69,11 @@ module.exports = function(req, next){ var file = payload.written >= payload.total ? "" : payload.file // refresh view - progress[payload.id].update(payload.written / payload.total, { file: file }) + if (!progressDone[payload.id]){ + if (payload.written / payload.total === 1) progressDone[payload.id] = true + progress[payload.id].update(payload.written / payload.total) + } + } catch(e){} @@ -96,7 +101,8 @@ module.exports = function(req, next){ * */ - .on("regionInfo", function(payload){ + .on("info", function(payload){ + //helpers.displayPreview(payload.preview) helpers.displayRegions(payload) }) @@ -156,9 +162,10 @@ module.exports = function(req, next){ "timestamp": ts }, { "user": "token", "pass": req.creds.token }, function(errors, rsp){ if (errors) { - helpers.log("error".red + " - troubles switching plan".grey) + helpers.space() + helpers.trunc("Error".red + " - troubles switching plan".grey) + helpers.space() }else{ - helpers.reset() helpers.space() helpers.trunc(rsp.msg.grey) helpers.space() @@ -174,10 +181,10 @@ module.exports = function(req, next){ */ .on("unauthenticated", function(payload){ - localCreds(req.argv.endpoint).set(null) - helpers.log() + helpers.space() helpers.trunc("Aborted".yellow + (" - local token has expired and cleared. please try again.").grey) - helpers.log() + helpers.space() + localCreds(req.argv.endpoint).set(null) process.exit(1) }) @@ -188,9 +195,9 @@ module.exports = function(req, next){ */ .on("forbidden", function(payload){ - helpers.log() + helpers.space() helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) - helpers.log() + helpers.space() process.exit(1) }) @@ -223,7 +230,6 @@ module.exports = function(req, next){ */ .on("fail", function(){ - helpers.reset() helpers.space() helpers.log(" Error".red + " - Deployment did not succeed.".grey) helpers.space() diff --git a/lib/util/helpers.js b/lib/util/helpers.js index b50f6b6..d15efdd 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -35,7 +35,7 @@ var show = exports.show = function(){ } -var space = exports.space = function(){ +var space = exports.space = function(d){ if (s === 0){ s++ console.log() @@ -500,12 +500,10 @@ exports.displayRevision = function(payload){ exports.displayRegions = function(payload){ var table = tableRegions(payload) var rows = table.toString().split("\n") - //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) //space() //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) //log(" Origin regions…".grey) - reset() space() rows.forEach(function(row, i){ log(" ", row.grey) From 6216b0f6d668b7cfaa0469a802a0602b69377285 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 29 Apr 2020 12:55:35 -0700 Subject: [PATCH 076/214] improve revision output --- lib/middleware/cutover.js | 8 ++++---- lib/middleware/deploy.js | 4 ++-- lib/middleware/list.js | 10 +++++----- lib/middleware/rollback.js | 10 +++++----- lib/middleware/rollfore.js | 10 +++++----- lib/surge.js | 4 ++-- lib/util/helpers.js | 9 ++++++--- 7 files changed, 29 insertions(+), 26 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 34e0501..ee8d307 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -30,18 +30,18 @@ module.exports = function(req, next){ sdk.cutover(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() - helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.trunc(" ⤮ Cutover".green) + helpers.trunc("⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.trunc(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc("Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.log(" ⤮ Cutover".yellow) + helpers.trunc("⤮ Cutover".yellow) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.trunc("Unchanged".yellow + (" - already serving " + response.revision.preview.underline).grey) } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index d91a129..edffb44 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -73,7 +73,6 @@ module.exports = function(req, next){ if (payload.written / payload.total === 1) progressDone[payload.id] = true progress[payload.id].update(payload.written / payload.total) } - } catch(e){} @@ -102,7 +101,8 @@ module.exports = function(req, next){ */ .on("info", function(payload){ - //helpers.displayPreview(payload.preview) + req.info = payload + helpers.displayPreview(payload) helpers.displayRegions(payload) }) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 70f4c98..7e83f96 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -34,9 +34,9 @@ module.exports = function(req, next){ } var row = [ perm || project.domain, - project.timeAgoInWords.grey, - project.cmd.grey, - project.platform.grey, + (project.timeAgoInWords || "").grey, + (project.cmd || "").grey, + (project.platform || "").grey, pn || "", //lastcmd !== project.cmd ? (project.cmd).grey : "", ] @@ -75,7 +75,7 @@ module.exports = function(req, next){ perm || project.domain.blue.underline, revision.timeAgoInWords.blue.underline, revision.email.blue.underline, - (revision.publicFileCount ? revision.publicFileCount.toString().underline.grey + " files".underline.grey : ""), + (revision.publicFileCount ? (revision.publicFileCount + " files").underline.blue : ""), revision.friendlySize.blue.underline ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) @@ -85,7 +85,7 @@ module.exports = function(req, next){ perm || project.domain, revision.timeAgoInWords.grey, revision.email.grey, - (revision.publicFileCount ? revision.publicFileCount.toString().grey + " files".grey : ""), + (revision.publicFileCount ? (revision.publicFileCount + " files").grey : ""), revision.friendlySize.grey ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 305adcc..87134bc 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -14,20 +14,20 @@ module.exports = function(req, next){ sdk.rollback(domain, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() - helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.log(" ⟲ Rollback".green) + helpers.trunc("⟲ Rollback".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.log(" ⟲ Rollback (failed)".yellow) + helpers.trunc("⟲ Rollback (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) + helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index 2a2826d..a90f5ca 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -14,20 +14,20 @@ module.exports = function(req, next){ sdk.rollfore(domain, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() - helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.log(" ⟳ Forward".green) + helpers.trunc("⟳ Forward".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.log(" ⟳ Forward (failed)".yellow) + helpers.trunc("⟳ Forward (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) + helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/surge.js b/lib/surge.js index 097c8e8..21ee814 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -284,7 +284,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, - preAuth, creds, welcome, auth, authInfo, postAuth, + preAuth, creds, welcome, auth, postAuth, rollback, space ] return function(){ @@ -303,7 +303,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, - preAuth, creds, welcome, auth, authInfo, postAuth, + preAuth, creds, welcome, auth, postAuth, rollfore, space ] return function(){ diff --git a/lib/util/helpers.js b/lib/util/helpers.js index d15efdd..f98390d 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -485,9 +485,8 @@ exports.payment = function(req, stripe_pk, existing){ exports.displayRevisionBasicInfo = function(revision, domain){ space() - trunc((revision.preview.underline).grey) - trunc((revision.publicFileCount + " files, " + revision.publicTotalSize + " size").grey) - trunc((revision.email).grey) + trunc((revision.preview.underline).grey + (" (" + revision.publicFileCount + " files, " + revision.publicTotalSize + " size)").grey) + trunc(("by " + revision.email).grey) space() } @@ -497,6 +496,10 @@ exports.displayRevision = function(payload){ space() } +exports.displayPreview = function(payload){ + log(smart("preview:").grey + " " + payload.metadata.preview.underline) +} + exports.displayRegions = function(payload){ var table = tableRegions(payload) var rows = table.toString().split("\n") From 8a46c60c0b53539879ae7743f20b1e05dd38c480 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 30 Apr 2020 02:10:29 -0700 Subject: [PATCH 077/214] adds preview flag. outputs preview info --- lib/middleware/_shared/_whitelist.js | 2 +- lib/middleware/deploy.js | 7 ++++++- lib/surge.js | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/middleware/_shared/_whitelist.js b/lib/middleware/_shared/_whitelist.js index 73ec554..cc99e05 100644 --- a/lib/middleware/_shared/_whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -3,7 +3,7 @@ var helpers = require("../../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform - var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; + var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build', 'preview', '$0','_']; var args = []; for (param in req.argv) { diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index edffb44..f028d3e 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -246,7 +246,12 @@ module.exports = function(req, next){ .on("success", function(){ helpers.space() - helpers.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) + if (req.argv.stage){ + helpers.trunc("Success!".green + (" - Preveiw available at " + (req.info.metadata.preview).underline).grey) + } else { + helpers.trunc("Success!".green + (" - Published to " + (req.domain).underline).grey) + } + helpers.space() return next() }) diff --git a/lib/surge.js b/lib/surge.js index 21ee814..f67c26b 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -127,6 +127,8 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] + if (argv.preview) argv.stage = argv.preview + var commands = [ "login", "logout", From f05753be2dfbb37b7969c39b49482f94bad8d553 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 5 May 2020 03:35:22 -0700 Subject: [PATCH 078/214] updates help output --- lib/middleware/deploy.js | 7 +++-- lib/middleware/help.js | 57 +++++++++++++++++++++-------------- lib/middleware/revoke.js | 10 ++++--- package-lock.json | 65 ++++++++++++++++------------------------ package.json | 2 +- 5 files changed, 71 insertions(+), 70 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index f028d3e..2c29682 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -229,9 +229,10 @@ module.exports = function(req, next){ * */ - .on("fail", function(){ - helpers.space() - helpers.log(" Error".red + " - Deployment did not succeed.".grey) + .on("fail", function(obj){ + console.log() + console.log() + helpers.trunc("Error".red + " - Deployment did not succeed.".grey) helpers.space() process.exit(1) }) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 8b7c8c3..c82993e 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -3,34 +3,47 @@ var helpers = require("../util/helpers") module.exports = function(req, next){ if (req.argv.help || req.argv.h) { helpers + //.log() + //.log(" " + req.config.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) .log() - .log(" " + req.config.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) + .log(" Main Usage:".grey) + .log(" "+ req.config.name +" publish project to domain") .log() - .log(" Usage:".grey) - .log(" "+ req.config.name +" ") + .log(" Project Commands:".grey) + .log(" "+ req.config.name +" cutover change to latest revision") + .log(" "+ req.config.name +" discard remove revision from system") + .log(" "+ req.config.name +" rollfore change to next revision") + .log(" "+ req.config.name +" rollback change to previous revision") + .log(" "+ req.config.name +" teardown tear down a published project") + .log(" "+ req.config.name +" invite invites user to be a contributor") + .log(" "+ req.config.name +" revoke revokes contributor rights") + .log(" "+ req.config.name +" list list all revisions") + .log(" "+ req.config.name +" ssl publish .pem file for SSL support") .log() - .log(" Options:".grey) - .log(" -a, --add adds user to list of collaborators (email address)") - .log(" -r, --remove removes user from list of collaborators (email address)") - .log(" -V, --version show the version number") - .log(" -h, --help show this help message") + .log(" Account Commands:".grey) + .log(" "+ req.config.name +" whoami show who you are logged in as") + .log(" "+ req.config.name +" login only performs authentication step") + .log(" "+ req.config.name +" logout expire local token") + .log(" "+ req.config.name +" token create token for automation purposes") + .log(" "+ req.config.name +" plan upgrade or downgrade account plan") + .log(" "+ req.config.name +" list list all projects") .log() - .log(" Additional commands:".grey) - .log(" "+ req.config.name +" whoami show who you are logged in as") - .log(" "+ req.config.name +" logout expire local token") - .log(" "+ req.config.name +" login only performs authentication step") - .log(" "+ req.config.name +" list list all domains you have access to") - .log(" "+ req.config.name +" teardown tear down a published project") - .log(" "+ req.config.name +" plan set account plan") + .log(" Options:".grey) + .log(" -s, --preview (when publishing) publishes preview") + .log(" -t, --token pass in token to use for call") + .log(" -V, --version show the version number") + .log(" -h, --help show this help message") .log() - // .log(" Examples:".grey) - // .log(" surge ./www example.com") - // .log(" surge .") + .log(" Examples:".grey) + .log(" "+ req.config.name +" www example.com publishes www directory to example.com") + .log(" "+ req.config.name +" . example.com --preview publishes current directory for preview") + .log(" "+ req.config.name +" cutover example.com switches latest preview to production") + .log(" "+ req.config.name +" . _ publish current dir to random subdomain") // .log() - .log(" Guides:".grey) - .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey) - .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) - .log(" Additional help " + "surge.sh/help".underline.grey) + // .log(" Guides:".grey) + // .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey) + // .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) + // .log(" Additional help " + "surge.sh/help".underline.grey) .log() .log(" When in doubt, run ".grey + req.config.name.green.underline + " from within your project directory.".grey) .log() diff --git a/lib/middleware/revoke.js b/lib/middleware/revoke.js index 9fa5f6a..c7c4395 100644 --- a/lib/middleware/revoke.js +++ b/lib/middleware/revoke.js @@ -9,14 +9,16 @@ module.exports = function(req, next){ defaults: helpers.defaults }) - helpers.log("REVOKE:", req.argv) - helpers.log({ user: "token", pass: req.creds.token }) - - sdk.revoke(req.argv["_"], { user: "token", pass: req.creds.token }, function(error, rsp){ + sdk.revoke(req.argv["_"], { user: "token", pass: req.creds.token }, function(error, reply){ if (error) { + helpers.space() + helpers.trunc("Failed".red + " - ".grey + error.messages.join(". ").grey) helpers.space() process.exit(1) } else { + helpers.space() + helpers.trunc("Success".green + " - ".grey + reply.successes.join(", ") + "have been revoked.") + helpers.space() return next() } }) diff --git a/package-lock.json b/package-lock.json index aa62c67..c8562eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -551,6 +551,17 @@ "dev": true, "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -604,9 +615,9 @@ } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "graceful-readlink": { "version": "1.0.1", @@ -1528,6 +1539,14 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -1640,19 +1659,6 @@ "fstream": ">=1.0.12", "inherits": "2", "minimatch": "^3.0.0" - }, - "dependencies": { - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - } } }, "surge-ignore": { @@ -1661,9 +1667,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.1.2.tgz", - "integrity": "sha512-dxivxkeF5NY2ttVCiM3YlByLzQrjFl2TpRjQWfprE1dgeJtE56g8oo5ZKCN6/6pyqBc3U7sEOK0AHkX9JqKuNg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.2.0.tgz", + "integrity": "sha512-fbCvHIfsaV1QF/NaNQSm0agQFld07GErF71XYDQ7YTpTbcyZSedhdsUFE23d4irULpL5GlstlCd51N/oEl++6w==", "requires": { "request": "^2.88.0", "split": "^1.0.1", @@ -1673,14 +1679,6 @@ "zlib": "^1.0.5" }, "dependencies": { - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2" - } - }, "surge-ignore": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", @@ -1696,19 +1694,6 @@ "block-stream": "*", "fstream": ">=1.0.12", "inherits": "2" - }, - "dependencies": { - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - } } }, "through": { diff --git a/package.json b/package.json index 5aa0bb6..dc60075 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { - "surge-sdk": "0.1.2", + "surge-sdk": "0.2.0", "minimist": "1.2.3", "inquirer": "^6.2.2", "prompt": "~0.2.14", From d9b1754e78b76f0b04c0100204b9391f4d629e7a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 17 May 2020 05:56:31 -0700 Subject: [PATCH 079/214] adds NS servers to server list --- lib/middleware/deploy.js | 2 +- lib/util/helpers.js | 10 +++++++--- lib/util/table-regions.js | 31 +++++++++++++++++++++++-------- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 2c29682..2f76c9a 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -103,7 +103,7 @@ module.exports = function(req, next){ .on("info", function(payload){ req.info = payload helpers.displayPreview(payload) - helpers.displayRegions(payload) + helpers.displayRegions(payload, req.domain) }) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index f98390d..6fe3a41 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -500,8 +500,12 @@ exports.displayPreview = function(payload){ log(smart("preview:").grey + " " + payload.metadata.preview.underline) } -exports.displayRegions = function(payload){ - var table = tableRegions(payload) +exports.displayCname = function(payload){ + if (payload.cname) log(smart("cname:").grey + " " + payload.cname.underline) +} + +exports.displayRegions = function(payload, domain){ + var table = tableRegions(payload, domain) var rows = table.toString().split("\n") //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) //space() @@ -509,7 +513,7 @@ exports.displayRegions = function(payload){ //log(" Origin regions…".grey) space() rows.forEach(function(row, i){ - log(" ", row.grey) + log(" ", row.grey) }) space() } diff --git a/lib/util/table-regions.js b/lib/util/table-regions.js index 9076ae6..62628eb 100644 --- a/lib/util/table-regions.js +++ b/lib/util/table-regions.js @@ -1,10 +1,10 @@ var Table = require("cli-table3") -module.exports = function(payload){ +module.exports = function(payload, domain){ var table = new Table({ - head:["Region".grey, "IP".grey, "Country".grey, "City".grey], + //head:[{ colSpan:4, content: payload.metadata.preview.grey, hAlign:"center" }], style: { 'compact': true, 'padding-left': 3, @@ -12,13 +12,28 @@ module.exports = function(payload){ } }) - var keys = Object.keys(payload.regions) var rows = [] - - keys.forEach(function(key){ - var val = payload.regions[key] - table.push([(key + "." + payload.nsDomain), val.ip, { hAlign: "center", content: val.country }, val.city]) - }) + + var report = function(str, status){ + if (["green"].indexOf(status) !== -1) return str.green + return str.grey + } + + var iterateMachines = function(machines){ + Object.keys(machines).forEach(function(key, i){ + var val = machines[key] + table.push([ + { hAlign: "center", content: val.info.grey }, + (key + "." + val.apex), + (val.country + ", " + val.city), + { hAlign:"center", content: report(val.report, val.status) } + ]) + }) + } + + if (payload.hasOwnProperty("regions")) iterateMachines(payload.regions) + if (payload.hasOwnProperty("nameservers")) iterateMachines(payload.nameservers) + if (payload.hasOwnProperty("additional")) iterateMachines(payload.additional) return table From d877bbdb54bbc4c72c16f15579877ad3469e1e73 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 6 Jun 2020 01:09:13 -0700 Subject: [PATCH 080/214] adds dns and props commands --- lib/surge.js | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/lib/surge.js b/lib/surge.js index f67c26b..1108e88 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -58,6 +58,8 @@ var discard = require("./middleware/discard") var invite = require("./middleware/invite") var revoke = require("./middleware/revoke") var encrypt = require("./middleware/encrypt") +var dns = require("./middleware/dns") +var props = require("./middleware/props") @@ -148,7 +150,9 @@ module.exports = function(config){ "card", "invite", "revoke", - "encrypt" + "encrypt", + "props", + "dns" ] if (commands.indexOf(cmd) !== -1) { @@ -553,6 +557,44 @@ module.exports = function(config){ } } + surge.props = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + props, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.dns = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + dns, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + return surge } From 43402414ec0db10ecc20eb6c5d3006285e54d3b5 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 6 Jun 2020 01:09:32 -0700 Subject: [PATCH 081/214] adds files for props and dns --- lib/middleware/dns.js | 61 +++++++++++++++++++++++++++++++++++++++++ lib/middleware/props.js | 23 ++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 lib/middleware/dns.js create mode 100644 lib/middleware/props.js diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js new file mode 100644 index 0000000..83a892e --- /dev/null +++ b/lib/middleware/dns.js @@ -0,0 +1,61 @@ +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + + +var parseArgs = function(argv){ + var args = JSON.parse(JSON.stringify(argv)) + + if (argv["_"][0] && argv["_"][0].indexOf(".") !== -1){ + args.domain = argv["_"][0] + args.cmd = argv["_"][1] + args.type = argv["_"][2] + args.name = argv["_"][3] + args.value = argv["_"][4] + } + + return args +} + + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var args = parseArgs(req.argv) + + if (args.cmd === "add") { + sdk.dnsAdd(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + } else if (args.cmd === "rem") { + sdk.dnsRem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + } else { + sdk.dns(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + } + +} diff --git a/lib/middleware/props.js b/lib/middleware/props.js new file mode 100644 index 0000000..2d6d398 --- /dev/null +++ b/lib/middleware/props.js @@ -0,0 +1,23 @@ +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + + sdk.props(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + +} \ No newline at end of file From 3c24bab6c6fab1d6303eb340ed54e92e2569868e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 6 Jun 2020 04:32:31 -0700 Subject: [PATCH 082/214] adds props set/get --- lib/middleware/_shared/_whitelist.js | 2 +- lib/middleware/props.js | 17 ++++++++++++++++- lib/surge.js | 2 +- lib/util/helpers.js | 9 +++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/middleware/_shared/_whitelist.js b/lib/middleware/_shared/_whitelist.js index cc99e05..2a0d7ef 100644 --- a/lib/middleware/_shared/_whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -1,7 +1,7 @@ var helpers = require("../../util/helpers") module.exports = function(req, next){ - //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform + //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform) var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build', 'preview', '$0','_']; diff --git a/lib/middleware/props.js b/lib/middleware/props.js index 2d6d398..045fddc 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/props.js @@ -12,10 +12,25 @@ module.exports = function(req, next){ sdk.props(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { + helpers.space() + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) helpers.space() process.exit(1) } else { - console.log(rsp) + var keys = Object.keys(rsp) + if (keys.length == 0){ + helpers.space() + helpers.trunc(("Empty").grey) + }else{ + helpers.space() + keys.forEach(function(k){ + helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k]) + }) + helpers.space() + } + return next() } }) diff --git a/lib/surge.js b/lib/surge.js index 1108e88..15ecb75 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -562,7 +562,7 @@ module.exports = function(config){ var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, + endpoint, pkg, help, version, space, preAuth, creds, auth, postAuth, props, space ] diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 6fe3a41..d7b3804 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -68,6 +68,15 @@ var smart = exports.smart = function(str){ return rsp + str } +var shortsmart = exports.shortsmart = function(str){ + var difference = 12 - str.length + var rsp = "" + for(var i=0; i < difference; i++){ + rsp += " " + } + return rsp + str +} + var trunc = exports.trunc = function(arg){ log(" " + arg) s = 0 From 0c49b4a3e9c237ff54522407c6ac4c9cf53775d9 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 10 Jun 2020 03:58:14 -0700 Subject: [PATCH 083/214] dns CRUD implemented --- lib/middleware/dns.js | 31 +++++++++++++++++++++++++------ lib/middleware/props.js | 14 +++++++++----- lib/surge.js | 5 +++-- lib/util/helpers.js | 7 +++++++ lib/util/tables.js | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 13 deletions(-) diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js index 83a892e..7367534 100644 --- a/lib/middleware/dns.js +++ b/lib/middleware/dns.js @@ -29,30 +29,49 @@ module.exports = function(req, next){ if (args.cmd === "add") { sdk.dnsAdd(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { + helpers.space() + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) helpers.space() process.exit(1) } else { - console.log(rsp) - return next() + helpers.space() + helpers.trunc("Success".green + (" - " + rsp.message).grey) + helpers.space() + process.exit() } }) } else if (args.cmd === "rem") { sdk.dnsRem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { + helpers.space() + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) helpers.space() process.exit(1) } else { - console.log(rsp) - return next() + helpers.space() + helpers.trunc("Success".green + (" - " + rsp.message).grey) + helpers.space() } }) } else { sdk.dns(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() process.exit(1) } else { - console.log(rsp) + var keys = Object.keys(rsp) + if (keys.length == 0){ + helpers.space() + helpers.trunc(("Empty").grey) + }else{ + helpers.space() + helpers.displayRecords(rsp) + helpers.space() + } + return next() } }) diff --git a/lib/middleware/props.js b/lib/middleware/props.js index 045fddc..8076d9b 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/props.js @@ -13,10 +13,14 @@ module.exports = function(req, next){ sdk.props(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { helpers.space() - error.messages.forEach(function(m){ - helpers.trunc("Error".red + (" - " + m).grey) - }) - helpers.space() + if (error.hasOwnProperty("message")){ + helpers.trunc("Error".red + (" - " + error.message).grey) + }else{ + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) + } + helpers.space() process.exit(1) } else { var keys = Object.keys(rsp) @@ -26,7 +30,7 @@ module.exports = function(req, next){ }else{ helpers.space() keys.forEach(function(k){ - helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k]) + helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k].green) }) helpers.space() } diff --git a/lib/surge.js b/lib/surge.js index 15ecb75..daa07f0 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -129,7 +129,8 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - if (argv.preview) argv.stage = argv.preview + // we accept --preview + if (argv.preview) argv.stage = argv.s = argv.preview var commands = [ "login", @@ -581,7 +582,7 @@ module.exports = function(config){ var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, + whitelist, endpoint, pkg, help, version, preAuth, creds, auth, postAuth, dns, space ] diff --git a/lib/util/helpers.js b/lib/util/helpers.js index d7b3804..26ab004 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -536,6 +536,13 @@ exports.displayInvites = function(payload){ space() } +exports.displayRecords = function(payload){ + var table = tables.records(payload.records) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ log(row.grey) }) + space() +} + exports.revisionSelector = function(req, callback){ var options = { diff --git a/lib/util/tables.js b/lib/util/tables.js index 1b7bf54..0eb7190 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -1,6 +1,44 @@ var Table = require("cli-table3") +exports.records = function(records){ + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 5 + } + }) + + records.forEach(function(record){ + var row = [ + { hAlign: "center", content: record.id.grey }, + { hAlign: "center", content: record.type.blue }, + { hAlign: "center", content: record.name.green }, + { hAlign: "right", content: record.value.green } + ] + table.push(row) + }) + + return table + +} + exports.invites = function(invites){ var table = new Table({ chars: { From 1f1b76f08e954077e697e736944d23822e610999 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 11 Jun 2020 04:25:07 -0700 Subject: [PATCH 084/214] apply props on publish --- lib/middleware/deploy.js | 2 +- lib/middleware/props.js | 18 ++++++++++++++++-- lib/surge.js | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 2f76c9a..50a7763 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -40,7 +40,7 @@ module.exports = function(req, next){ "add": req.argv.a, "rem": req.argv.r, "ssl": req.ssl - }) + }, req.argv) /** diff --git a/lib/middleware/props.js b/lib/middleware/props.js index 8076d9b..0a99e98 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/props.js @@ -29,8 +29,22 @@ module.exports = function(req, next){ helpers.trunc(("Empty").grey) }else{ helpers.space() - keys.forEach(function(k){ - helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k].green) + keys.forEach(function(k){ + var key = k + var value = rsp[k] + + if (rsp[k] === null){ + key = helpers.shortsmart(key).grey + value = "null".grey + } else if (!isNaN(parseInt(value))){ + key = helpers.shortsmart(key).grey + value = value.blue + } else { + key = helpers.shortsmart(key).grey + value = value.green + } + + helpers.log(key + " : ".grey + value) }) helpers.space() } diff --git a/lib/surge.js b/lib/surge.js index daa07f0..05ea359 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -233,7 +233,7 @@ module.exports = function(config){ var prePublish = hooks.prePublish || stub var postPublish = hooks.postPublish || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, + endpoint, pkg, help, version, space, preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, preProject, project, postProject, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, From d024bc35e7ded07f2649cf2f9af6d1e698d1cb6a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 2 Jul 2020 02:09:26 -0700 Subject: [PATCH 085/214] updates to CLI output --- lib/middleware/cutover.js | 2 +- lib/middleware/deploy.js | 2 +- lib/middleware/discard.js | 3 +- lib/middleware/dns.js | 139 ++++++++++++++--------- lib/middleware/rollback.js | 2 +- lib/middleware/rollfore.js | 2 +- lib/surge.js | 24 +++- lib/util/helpers.js | 44 +++++++- lib/util/tables.js | 224 +++++++++++++++++++++++++++++++++++-- 9 files changed, 369 insertions(+), 73 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index ee8d307..7eb8362 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -38,7 +38,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.displayRegions(response) + helpers.displayServers(response) helpers.trunc("Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⤮ Cutover".yellow) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 50a7763..0ec9b8b 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -103,7 +103,7 @@ module.exports = function(req, next){ .on("info", function(payload){ req.info = payload helpers.displayPreview(payload) - helpers.displayRegions(payload, req.domain) + helpers.displayServers(payload, req.domain) }) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index bf4e703..b84d600 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -59,7 +59,8 @@ module.exports = function(req, next){ // display regions helpers.space() - helpers.displayRegions(response) + //helpers.displayRegions(response) + helpers.displayServers(response) helpers.space() if (response.uncached.change){ diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js index 7367534..c9b2a49 100644 --- a/lib/middleware/dns.js +++ b/lib/middleware/dns.js @@ -8,73 +8,104 @@ var parseArgs = function(argv){ if (argv["_"][0] && argv["_"][0].indexOf(".") !== -1){ args.domain = argv["_"][0] args.cmd = argv["_"][1] - args.type = argv["_"][2] - args.name = argv["_"][3] - args.value = argv["_"][4] + args.type = argv.type || argv["_"][2] + args.name = argv.name || argv["_"][3] + args.value = argv.value || argv["_"][4] + if (args.type === "MX"){ + if (argv["_"].length === 5){ + args.name = argv.name || "@" + args.priority = argv.priority || argv["_"][3] + args.value = argv.value || argv["_"][4] + }else if (argv["_"].length === 6){ + args.name = argv.name || argv["_"][3] + args.priority = argv.priority || argv["_"][4] + args.value = argv.value || argv["_"][5] + } + } } return args } +module.exports = function(type){ -module.exports = function(req, next){ + return function(req, next){ + var add, rem, get - var sdk = surgeSDK({ - endpoint: req.endpoint.format(), - defaults: helpers.defaults - }) + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) - var args = parseArgs(req.argv) + if (type === "dns"){ + add = sdk.dnsAdd + rem = sdk.dnsRem + get = sdk.dns + } else if(type === "zone"){ + add = sdk.zoneAdd + rem = sdk.zoneRem + get = sdk.zone + } - if (args.cmd === "add") { - sdk.dnsAdd(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ - if (error) { - helpers.space() - error.messages.forEach(function(m){ - helpers.trunc("Error".red + (" - " + m).grey) - }) - helpers.space() - process.exit(1) - } else { - helpers.space() - helpers.trunc("Success".green + (" - " + rsp.message).grey) - helpers.space() - process.exit() - } - }) - } else if (args.cmd === "rem") { - sdk.dnsRem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ - if (error) { - helpers.space() - error.messages.forEach(function(m){ - helpers.trunc("Error".red + (" - " + m).grey) - }) - helpers.space() - process.exit(1) - } else { - helpers.space() - helpers.trunc("Success".green + (" - " + rsp.message).grey) - helpers.space() - } - }) - } else { - sdk.dns(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ - if (error) { - process.exit(1) - } else { - var keys = Object.keys(rsp) - if (keys.length == 0){ + var args = parseArgs(req.argv) + + if (args.cmd === "add") { + add(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } else { helpers.space() - helpers.trunc(("Empty").grey) - }else{ + helpers.displayRecords(rsp, type) helpers.space() - helpers.displayRecords(rsp) + helpers.trunc("Success".green + " - record added".grey) helpers.space() + process.exit() } + }) + } else if (args.cmd === "rem") { + rem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } else { + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + helpers.trunc("Success".green + " - record removed".grey) + helpers.space() + } + }) + } else { + get(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + helpers.trunc("Error".red + (" - " + error.message).grey) + helpers.space() + process.exit(1) + } else { + var keys = Object.keys(rsp) + if (keys.length == 0){ + helpers.space() + helpers.trunc(("Empty").grey) + helpers.space() + }else{ + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + } + return next() + } + }) + } - return next() - } - }) } - } diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 87134bc..99b4fae 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -22,7 +22,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⟲ Rollback".green) helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayRegions(response) + helpers.displayServers(response) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⟲ Rollback (failed)".yellow) diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index a90f5ca..17e7876 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -22,7 +22,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⟳ Forward".green) helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayRegions(response) + helpers.displayServers(response) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⟳ Forward (failed)".yellow) diff --git a/lib/surge.js b/lib/surge.js index 05ea359..b33475b 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -153,7 +153,8 @@ module.exports = function(config){ "revoke", "encrypt", "props", - "dns" + "dns", + "zone" ] if (commands.indexOf(cmd) !== -1) { @@ -584,7 +585,26 @@ module.exports = function(config){ var onion = [ whitelist, endpoint, pkg, help, version, preAuth, creds, auth, postAuth, - dns, space + dns("dns"), space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.zone = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, auth, postAuth, + dns("zone"), space ] return function(){ var argv = parse(arguments[arguments.length -1]) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 26ab004..a9bd0bf 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -527,6 +527,20 @@ exports.displayRegions = function(payload, domain){ space() } +exports.displayServers = function(payload, domain){ + var table = tables.servers(payload) + var rows = table.toString().split("\n") + //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) + //space() + //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) + //log(" Origin regions…".grey) + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + exports.displayInvites = function(payload){ var table = tables.invites(payload.invites) var rows = table.toString().split("\n") @@ -536,13 +550,37 @@ exports.displayInvites = function(payload){ space() } -exports.displayRecords = function(payload){ - var table = tables.records(payload.records) + + + + +var displayZoneFull = exports.displayZoneFull = function(payload){ + var table = tables.zone(payload) var rows = table.toString().split("\n") - rows.forEach(function(row, i){ log(row.grey) }) + rows.forEach(function(row, i){ log("", row.grey); }) space() } +var displayZonePart = exports.displayZonePart = function(payload){ + var table = tables.customRecords(payload) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ log("", row.grey); }) + space() +} + +exports.displayRecords = function(arg, type){ + reset() + if (!arg.records || arg.records.length === 0){ + trunc("Empty".grey) + }else{ + if (type === "dns"){ + return displayZonePart(arg) + }else if(type === "zone"){ + return displayZoneFull(arg) + } + } +} + exports.revisionSelector = function(req, callback){ var options = { diff --git a/lib/util/tables.js b/lib/util/tables.js index 0eb7190..7bc1102 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -1,7 +1,47 @@ var Table = require("cli-table3") -exports.records = function(records){ +var fqdn = function(domain){ + return domain.match(/\.$/) ? domain : domain + "." +} + +var dotnotation = function(email){ + return email.replace("@", ".") +} + +exports.servers = function(payload){ + + var table = new Table({ + //head:[{ colSpan:4, content: payload.metadata.preview.grey, hAlign:"center" }], + style: { + 'compact': true, + 'padding-left': 3, + 'padding-right': 3, + } + }) + + var rows = [] + + var report = function(str, status){ + if (["green"].indexOf(status) !== -1) return str.green + return str.grey + } + + payload.data.forEach(function(s){ + table.push([ + { hAlign: "center", content: s.info.grey }, + s.domain, + s.location, + { hAlign:"center", content: report(s.status, s.statusColor) } + ]) + }) + + return table + +} + + +exports.customRecords = function(dninfo){ var table = new Table({ chars: { 'top': '' , @@ -25,17 +65,183 @@ exports.records = function(records){ } }) - records.forEach(function(record){ - var row = [ - { hAlign: "center", content: record.id.grey }, - { hAlign: "center", content: record.type.blue }, - { hAlign: "center", content: record.name.green }, - { hAlign: "right", content: record.value.green } - ] - table.push(row) + dninfo.records.forEach(function(record){ + table.push([ + { hAlign: "left", content: record.name }, + { hAlign: "left", content: record.type.blue }, + { hAlign: "left", content: record.priority }, + { hAlign: "left", content: record.value.green.underline }, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + ]) }) return table + +} + +exports.zone = function(dninfo){ + var records = dninfo.records + + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 5 + } + }) + + // $ORIGIN + table.push([ + { hAlign: "left", content: ("$ORIGIN " + fqdn(dninfo.origin)).grey, colSpan: 5 }, + ]) + + // $TTL + var ttl = dninfo.props ? (dninfo.props.ttl || 1600) : 1600 + table.push([ + { hAlign: "left", content: ("$TTL " + ttl).grey, colSpan: 5 }, + ]) + + var current; + + dninfo.records.forEach(function(record){ + // if (current !== record.category){ + // table.push([{ content: "", colSpan: 5 }]) + // current = record.category + // } + + if (record.type === "SOA"){ + table.push([ + { hAlign: "left", content: fqdn(record.name).grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: fqdn(record.value).grey }, + { hAlign: "left", content: dotnotation(record.email).grey }, + { hAlign: "left", content: ("( " + dninfo.serial + " 1d 2h 4w 1h )").grey }, + ]) + }else if (record.type === "NS"){ + table.push([ + { hAlign: "left", content: fqdn(record.name).grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: fqdn(record.value).grey}, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + ]) + }else if (record.category === "glue"){ + table.push([ + { hAlign: "left", content: fqdn(record.name).grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: record.value.grey}, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + ]) + }else{ + table.push([ + { hAlign: "left", content: record.name.grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: record.value.grey}, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + ]) + } + }) + + + + + + //table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + // // SOA + // table.push([ + // { hAlign: "left", content: "surge.world.".grey }, + // { hAlign: "left", content: "SOA".grey }, + // { hAlign: "left", content: "ns1.surge.world".grey }, + // { hAlign: "left", content: "username.example.com ( 2007120710 1d 2h 4w 1h )".grey }, + // ]) + + // table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + // // NS + // records.filter(function(record){ return record.type == "GLUE" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: "surge.world.".grey }, + // { hAlign: "left", content: "NS".grey }, + // { hAlign: "left", content: (record.name + ".surge.world").grey }, + // { hAlign: "left", content: "; New York".grey }, + // ]) + // }) + + // table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + // // GLUE + // records.filter(function(record){ return record.type == "GLUE" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: "A".grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: "; glue".grey }, + // ]) + // }) + + // table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + + // // A + // records.filter(function(record){ return record.type == "A" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: record.type.grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: ";".grey + (record.id ? record.id : "N/A").grey }, + // ]) + // }) + + + // // CNAME + // records.filter(function(record){ return record.type == "CNAME" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: record.type.grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: ";".grey + record.id.grey }, + // ]) + // }) + + // records.forEach(function(record){ + // if (record.id.indexOf("rec") === 0){ + // var row = [ + // { hAlign: "left", content: record.name.green }, + // { hAlign: "left", content: record.type.green }, + // { hAlign: "left", content: record.value.green }, + // { hAlign: "left", content: "; ".green + record.id.green }, + // ] + // }else{ + // var row = [ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: record.type.grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: "; resolved via Geo IP".grey }, + // ] + // } + + // table.push(row) + // }) + + return table } From 63aaaae3386a59c561ade0e06af49ec18c754a44 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 2 Jul 2020 02:44:24 -0700 Subject: [PATCH 086/214] renaming attrs --- lib/util/tables.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 7bc1102..9e80256 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -27,7 +27,7 @@ exports.servers = function(payload){ return str.grey } - payload.data.forEach(function(s){ + payload.servers.forEach(function(s){ table.push([ { hAlign: "center", content: s.info.grey }, s.domain, From 3ac12aa2524f0fabf24ffc5b30c301e5c5897d4d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 4 Jul 2020 03:53:40 -0700 Subject: [PATCH 087/214] adds output for invalid dns call --- lib/middleware/deploy.js | 5 +++- lib/middleware/dns.js | 55 ++++++++++++++++++++++++++++------------ lib/util/tables.js | 20 +++++++++++---- 3 files changed, 58 insertions(+), 22 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 0ec9b8b..857b742 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -4,6 +4,7 @@ var localCreds = require("../util/creds.js") var surge = require('../surge') var surgeSDK = require("surge-sdk") var ProgressBar = require("progress") +var fs = require("fs") module.exports = function(req, next){ @@ -71,7 +72,7 @@ module.exports = function(req, next){ // refresh view if (!progressDone[payload.id]){ if (payload.written / payload.total === 1) progressDone[payload.id] = true - progress[payload.id].update(payload.written / payload.total) + progress[payload.id].update(payload.written / payload.total) } } catch(e){} @@ -100,6 +101,8 @@ module.exports = function(req, next){ * */ + //.on("data", console.log) + .on("info", function(payload){ req.info = payload helpers.displayPreview(payload) diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js index c9b2a49..eb6fc97 100644 --- a/lib/middleware/dns.js +++ b/lib/middleware/dns.js @@ -52,10 +52,17 @@ module.exports = function(type){ if (args.cmd === "add") { add(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() - error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) - helpers.space() - process.exit(1) + if (error.status === 405){ + helpers.space() + helpers.trunc("Invalid".yellow + (" - " + error.message).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } } else { helpers.space() helpers.displayRecords(rsp, type) @@ -68,12 +75,19 @@ module.exports = function(type){ } else if (args.cmd === "rem") { rem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() - helpers.displayRecords(rsp, type) - helpers.space() - error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) - helpers.space() - process.exit(1) + if (error.status === 405){ + helpers.space() + helpers.trunc("Invalid".yellow + (" - " + error.message).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } } else { helpers.space() helpers.displayRecords(rsp, type) @@ -85,12 +99,21 @@ module.exports = function(type){ } else { get(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() - helpers.displayRecords(rsp, type) - helpers.space() - helpers.trunc("Error".red + (" - " + error.message).grey) - helpers.space() - process.exit(1) + if (error.status === 405){ + helpers.space() + helpers.trunc("Invalid".yellow + (" - " + error.message).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + if (rsp){ + helpers.displayRecords(rsp, type) + helpers.space() + } + helpers.trunc("Error".red + (" - " + error.message).grey) + helpers.space() + process.exit(1) + } } else { var keys = Object.keys(rsp) if (keys.length == 0){ diff --git a/lib/util/tables.js b/lib/util/tables.js index 9e80256..9446e03 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -28,12 +28,22 @@ exports.servers = function(payload){ } payload.servers.forEach(function(s){ - table.push([ + if(s.hasOwnProperty("ip")){ + table.push([ + { hAlign: "center", content: s.info.grey }, + s.domain, + s.location, + s.ip.grey, + { hAlign:"center", content: report(s.status, s.statusColor) } + ]) + }else{ + table.push([ { hAlign: "center", content: s.info.grey }, - s.domain, - s.location, - { hAlign:"center", content: report(s.status, s.statusColor) } - ]) + s.domain, + s.location, + { hAlign:"center", content: report(s.status, s.statusColor) } + ]) + } }) return table From bbceb2d6b911a86dcf9e6f93756e66653cc658f7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 4 Jul 2020 04:16:36 -0700 Subject: [PATCH 088/214] fixes progress bar edgecase: --- lib/middleware/deploy.js | 1 + package-lock.json | 6 +++--- package.json | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 857b742..1e664aa 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -72,6 +72,7 @@ module.exports = function(req, next){ // refresh view if (!progressDone[payload.id]){ if (payload.written / payload.total === 1) progressDone[payload.id] = true + if (payload.written > payload.total) progressDone[payload.id] = true progress[payload.id].update(payload.written / payload.total) } diff --git a/package-lock.json b/package-lock.json index c8562eb..bb6fcd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1340,9 +1340,9 @@ "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "prompt": { "version": "0.2.14", diff --git a/package.json b/package.json index dc60075..6660871 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "inquirer": "^6.2.2", "prompt": "~0.2.14", "cli-table3": "^0.5.1", - "progress": "1.1.8", + "progress": "2.0.3", "is-domain": "0.0.1", "moniker": "0.1.2", "netrc": "0.1.4", From a2f03eb5937175bf35897bd448ddbe6474819a81 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 6 Jul 2020 01:55:26 -0700 Subject: [PATCH 089/214] bump v0.21.4. upgrades minimist 1.2.3 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 50d083f..5875063 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.3", + "version": "0.21.4", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", @@ -9,7 +9,7 @@ "surge-fstream-ignore": "^1.0.6", "inquirer": "^6.2.2", "is-domain": "0.0.1", - "minimist": "1.1.1", + "minimist": "1.2.3", "moniker": "0.1.2", "netrc": "0.1.4", "progress": "1.1.8", From 03ff37af69d6d258dd81e49bf7bdeba5edbebddd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 6 Jul 2020 02:01:25 -0700 Subject: [PATCH 090/214] updates package lock. bump v0.21.5 --- package-lock.json | 346 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 174 insertions(+), 174 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4cc7827..f54d37d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.3", + "version": "0.21.4", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -9,10 +9,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-escapes": { @@ -31,7 +31,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "array-filter": { @@ -57,7 +57,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { @@ -96,7 +96,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -104,7 +104,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "brace-expansion": { @@ -112,7 +112,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -138,9 +138,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "has-flag": { @@ -153,7 +153,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -168,7 +168,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-table3": { @@ -176,9 +176,9 @@ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "requires": { - "colors": "1.3.3", - "object-assign": "4.1.1", - "string-width": "2.1.1" + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" }, "dependencies": { "ansi-regex": { @@ -202,8 +202,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -211,7 +211,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -227,9 +227,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "clone": { @@ -267,7 +267,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -276,7 +276,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { @@ -299,7 +299,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -338,8 +338,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "escape-string-regexp": { @@ -357,9 +357,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "requires": { - "chardet": "0.7.0", - "iconv-lite": "0.4.24", - "tmp": "0.0.33" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, "extsprintf": { @@ -387,7 +387,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "forever-agent": { @@ -400,9 +400,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.7", - "mime-types": "2.1.22" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -415,7 +415,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -423,12 +423,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "dependencies": { "minimatch": { @@ -436,7 +436,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } } } @@ -468,8 +468,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "6.9.2", - "har-schema": "2.0.0" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has-flag": { @@ -489,9 +489,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.16.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "i": { @@ -504,7 +504,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "inflight": { @@ -512,8 +512,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -526,19 +526,19 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", "requires": { - "ansi-escapes": "3.2.0", - "chalk": "2.4.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "3.0.3", - "figures": "2.0.0", - "lodash": "4.17.11", + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rxjs": "6.4.0", - "string-width": "2.1.1", - "strip-ansi": "5.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" }, "dependencies": { "ansi-regex": { @@ -561,8 +561,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "strip-ansi": { @@ -570,7 +570,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -580,7 +580,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "requires": { - "ansi-regex": "4.0.0" + "ansi-regex": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -609,7 +609,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-promise": { @@ -670,7 +670,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "mime-db": { @@ -683,7 +683,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "requires": { - "mime-db": "1.38.0" + "mime-db": "~1.38.0" } }, "mimic-fn": { @@ -696,13 +696,13 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", - "integrity": "sha1-G8K8cWWM3KVxJHVoQ2NhWwtPaVs=" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.3.tgz", + "integrity": "sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw==" }, "mkdirp": { "version": "0.5.1", @@ -778,9 +778,9 @@ "integrity": "sha512-FlRpYm9sopR+aN05WSTZUA68nolYbH1MRB8JnQfDquToyo1YJCTJvhKnQzNZV3XLHKcLVURWWtMgAJr5IZ2wUg==", "dev": true, "requires": { - "assertion-error": "1.0.2", - "clone": "1.0.4", - "shell-quote": "1.6.1" + "assertion-error": "~1.0.0", + "clone": "^1.0.2", + "shell-quote": "^1.4.1" } }, "number-is-nan": { @@ -804,7 +804,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -812,7 +812,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "os-locale": { @@ -821,7 +821,7 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-tmpdir": { @@ -854,11 +854,11 @@ "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", "requires": { - "pkginfo": "0.4.1", - "read": "1.0.5", - "revalidator": "0.1.8", - "utile": "0.2.1", - "winston": "0.8.3" + "pkginfo": "0.x.x", + "read": "1.0.x", + "revalidator": "0.1.x", + "utile": "0.2.x", + "winston": "0.8.x" } }, "psl": { @@ -881,7 +881,7 @@ "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", "requires": { - "mute-stream": "0.0.7" + "mute-stream": "~0.0.4" } }, "request": { @@ -889,26 +889,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.7", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.3", - "har-validator": "5.1.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.22", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "restore-cursor": { @@ -916,8 +916,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "revalidator": { @@ -930,7 +930,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "run-async": { @@ -938,7 +938,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rxjs": { @@ -946,7 +946,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "requires": { - "tslib": "1.9.3" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -965,10 +965,10 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "should": { @@ -1016,7 +1016,7 @@ "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", "requires": { - "through": "2.3.8" + "through": "2" } }, "sshpk": { @@ -1024,15 +1024,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stack-trace": { @@ -1046,9 +1046,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -1057,7 +1057,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1066,7 +1066,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "surge-fstream-ignore": { @@ -1074,9 +1074,9 @@ "resolved": "https://registry.npmjs.org/surge-fstream-ignore/-/surge-fstream-ignore-1.0.6.tgz", "integrity": "sha512-hNN52cz2fYCAzhlHmWPn4aE3bFbpBt01AkWFLljrtSzFvxlipLAeLuLtQ3t4f0RKoUkjzXWCAFK13WoET2iM1A==", "requires": { - "fstream": "1.0.12", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": ">=1.0.12", + "inherits": "2", + "minimatch": "^3.0.0" }, "dependencies": { "fstream": { @@ -1084,10 +1084,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } } } @@ -1102,9 +1102,9 @@ "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", "integrity": "sha512-tENbQ43IQckay71stp1p1lljRhoEZpZk10FzEZKW2tJcMcnLwV3CfZdxBAERlH6nwnFvnHMS9eJOJl6IzSsG0g==", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.12", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": ">=1.0.12", + "inherits": "2" }, "dependencies": { "fstream": { @@ -1112,10 +1112,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } } } @@ -1130,7 +1130,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "tough-cookie": { @@ -1138,8 +1138,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "1.1.31", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" }, "dependencies": { "punycode": { @@ -1159,7 +1159,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -1172,7 +1172,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" } }, "url-parse-as-address": { @@ -1185,12 +1185,12 @@ "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", "requires": { - "async": "0.2.10", - "deep-equal": "1.0.1", - "i": "0.3.6", - "mkdirp": "0.5.1", - "ncp": "0.4.2", - "rimraf": "2.6.2" + "async": "~0.2.9", + "deep-equal": "*", + "i": "0.3.x", + "mkdirp": "0.x.x", + "ncp": "0.4.x", + "rimraf": "2.x.x" }, "dependencies": { "async": { @@ -1210,9 +1210,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "window-size": { @@ -1226,13 +1226,13 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", "requires": { - "async": "0.2.10", - "colors": "0.6.2", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "pkginfo": "0.3.1", - "stack-trace": "0.0.10" + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" }, "dependencies": { "async": { @@ -1253,8 +1253,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { @@ -1274,12 +1274,12 @@ "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "window-size": "0.1.4", - "y18n": "3.2.1" + "camelcase": "^1.2.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "window-size": "^0.1.2", + "y18n": "^3.2.0" } } } diff --git a/package.json b/package.json index 5875063..9100eb2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.4", + "version": "0.21.5", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From ebccb8ab0c9b9f858cc34d0999eb1103b29ac2b0 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 11 Jul 2020 01:02:26 -0700 Subject: [PATCH 091/214] version bump v0.21.6. more security patches --- package-lock.json | 913 +++++++++++++++++++++++++++++++++++++++++++--- package.json | 4 +- 2 files changed, 868 insertions(+), 49 deletions(-) diff --git a/package-lock.json b/package-lock.json index f54d37d..6d4ebf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.4", + "version": "0.21.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -15,6 +15,12 @@ "uri-js": "^4.2.2" } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -34,6 +40,25 @@ "color-convert": "^1.9.0" } }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -52,6 +77,18 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -99,6 +136,12 @@ "tweetnacl": "^0.14.3" } }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -116,6 +159,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -163,6 +215,22 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -303,12 +371,12 @@ } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "decamelize": { @@ -322,15 +390,24 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, "ecc-jsbn": { @@ -342,11 +419,74 @@ "safer-buffer": "^2.1.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -390,6 +530,34 @@ "escape-string-regexp": "^1.0.5" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -410,6 +578,25 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -441,6 +628,15 @@ } } }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -472,16 +668,31 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "http-signature": { @@ -551,11 +762,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -598,11 +804,50 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, "is-domain": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=" }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -612,21 +857,110 @@ "number-is-nan": "^1.0.0" } }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, + "requires": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -673,6 +1007,29 @@ "invert-kv": "^1.0.0" } }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", @@ -705,44 +1062,180 @@ "integrity": "sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw==" }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" }, "dependencies": { "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" } } }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", + "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", "dev": true, "requires": { + "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", + "chokidar": "3.3.1", + "debug": "3.2.6", + "diff": "4.0.2", "escape-string-regexp": "1.0.5", - "glob": "7.1.2", + "find-up": "4.1.0", + "glob": "7.1.6", "growl": "1.10.5", - "he": "1.1.1", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "ms": "2.1.2", + "object.assign": "4.1.0", + "promise.allsettled": "1.0.2", + "serialize-javascript": "3.0.0", + "strip-json-comments": "3.0.1", + "supports-color": "7.1.0", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.0.0", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + } + } } } }, @@ -752,9 +1245,9 @@ "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "mute-stream": { @@ -783,6 +1276,12 @@ "shell-quote": "^1.4.1" } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -799,6 +1298,30 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -829,6 +1352,36 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -839,6 +1392,12 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pkginfo": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", @@ -849,6 +1408,19 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" }, + "promise.allsettled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", + "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.1", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "iterate-value": "^1.0.0" + } + }, "prompt": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", @@ -884,6 +1456,15 @@ "mute-stream": "~0.0.4" } }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -911,6 +1492,18 @@ "uuid": "^3.3.2" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -959,6 +1552,18 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "serialize-javascript": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", + "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, "shell-quote": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", @@ -1019,6 +1624,12 @@ "through": "2" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -1051,6 +1662,26 @@ "strip-ansi": "^3.0.0" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1060,13 +1691,19 @@ "ansi-regex": "^2.0.0" } }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "surge-fstream-ignore": { @@ -1133,6 +1770,15 @@ "os-tmpdir": "~1.0.2" } }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -1215,6 +1861,30 @@ "extsprintf": "^1.2.0" } }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", @@ -1247,6 +1917,12 @@ } } }, + "workerpool": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", + "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "dev": true + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -1281,6 +1957,149 @@ "window-size": "^0.1.2", "y18n": "^3.2.0" } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + } + } } } } diff --git a/package.json b/package.json index 9100eb2..6ac15ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.5", + "version": "0.21.6", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", @@ -23,7 +23,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "^5.2.0", + "mocha": "8.0.1", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From c8b820d85815a5cda6d7bbdc6010cc40dde17908 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 11 Jul 2020 01:03:02 -0700 Subject: [PATCH 092/214] version bump in lock file --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 6d4ebf1..1a1dd63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.5", + "version": "0.21.6", "lockfileVersion": 1, "requires": true, "dependencies": { From d702b4bde0c2740416f3c767139ef15a3d1e036e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 2 Dec 2019 23:32:49 -0800 Subject: [PATCH 093/214] adds cut command --- lib/middleware/cut/cutto.js | 8 ++ lib/middleware/cut/index.js | 16 +++ lib/middleware/cut/instructions.js | 7 ++ lib/middleware/cut/interactive.js | 75 ++++++++++++ lib/middleware/list.js | 167 ++++++++++++++++++-------- lib/middleware/util/table-revision.js | 57 +++++++++ lib/surge.js | 22 +++- 7 files changed, 302 insertions(+), 50 deletions(-) create mode 100644 lib/middleware/cut/cutto.js create mode 100644 lib/middleware/cut/index.js create mode 100644 lib/middleware/cut/instructions.js create mode 100644 lib/middleware/cut/interactive.js create mode 100644 lib/middleware/util/table-revision.js diff --git a/lib/middleware/cut/cutto.js b/lib/middleware/cut/cutto.js new file mode 100644 index 0000000..629f4ad --- /dev/null +++ b/lib/middleware/cut/cutto.js @@ -0,0 +1,8 @@ + +var helpers = require("../util/helpers") + +module.exports = function(req, next){ + helpers.trunc("cut cutto " + req.argv["_"][1]) + + return next() +} diff --git a/lib/middleware/cut/index.js b/lib/middleware/cut/index.js new file mode 100644 index 0000000..5edf53c --- /dev/null +++ b/lib/middleware/cut/index.js @@ -0,0 +1,16 @@ + +var instructions = require("./instructions.js") +var interactive = require("./interactive.js") +var cutto = require("./cutto.js") + +module.exports = function(req, next){ + + if (req.argv["_"].length === 0) { + return instructions(req, next) + } else if (req.argv["_"].length === 1) { + return interactive(req, next) + } else if (req.argv["_"].length === 2) { + return cutto(req, next) + } + +} diff --git a/lib/middleware/cut/instructions.js b/lib/middleware/cut/instructions.js new file mode 100644 index 0000000..cdf37bc --- /dev/null +++ b/lib/middleware/cut/instructions.js @@ -0,0 +1,7 @@ + +var helpers = require("../util/helpers") + +module.exports = function(req, next){ + helpers.trunc("cut instructions") + return next() +} diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js new file mode 100644 index 0000000..3aba4a8 --- /dev/null +++ b/lib/middleware/cut/interactive.js @@ -0,0 +1,75 @@ + +var url = require("url") +var request = require("request") +var Table = require("cli-table3") +var helpers = require("../util/helpers") +var inquirer = require("inquirer") + +var tableRevisions = require("../util/table-revision.js") + +module.exports = function(req, next){ + + var options = { + 'url': url.resolve(req.endpoint.format(), '/list/' + req.argv["_"][0]), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } + } + + request(options, function(e, r, obj){ + if (e) throw e + // TODO: handle 410 + // console.log(r.statusCode) + + var list = JSON.parse(obj) + + if (list.length == 0){ + helpers.trunc("Empty".blue + (" - There are no revisions for " + req.argv["_"][0]).grey) + return next() + } else { + + var table = tableRevisions(req.argv["_"][0], list) + var rows = table.toString().split("\n") + + var choice = function(revision, i){ + return { + short: " ", + value: revision, + name: rows[i] + } + } + + var indexOfCurrent = 0 + + + var choices = list.map(choice) + + var args = { + type: 'list', + name: 'revision', + default: indexOfCurrent, + choices: choices, + pageSize: 8, + separator: true, + message: ' ' + } + + inquirer.prompt([args]).then(function (answers) { + if (answers.revision.current){ + helpers.trunc("No change".green + " - Selected revision is already current".grey ) + } else { + helpers.trunc(("Switching " + req.argv["_"][0] + " to " + answers.revision.rev + "...").grey ) + } + + helpers.space() + return next() + }) + + } + + }) + +} diff --git a/lib/middleware/list.js b/lib/middleware/list.js index af0ede9..f0b4f53 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -5,58 +5,127 @@ var helpers = require("./util/helpers") module.exports = function(req, next){ - var options = { - 'url': url.resolve(req.endpoint.format(), '/list'), - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true + var listAllProjects = function(){ + var options = { + 'url': url.resolve(req.endpoint.format(), '/list'), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } } - } - request(options, function(e, r, obj){ - if (e) throw e - var list = JSON.parse(obj) - - var table = new Table({ - //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], - chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' - , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' - , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' - , 'right': '' , 'right-mid': '' , 'middle': ' ' }, - style: { 'padding-left': 1, 'padding-right': 1 } - }) - //console.log(req) - var lastcmd = "" - if (list.length != 0) { - list.forEach(function(project){ - var perm = project.rev ? (project.rev + " ").grey + project.domain : "" - if (project.planName) { - if (project.planName.indexOf("Standard") !== -1){ - var pn = project.planName.grey - }else{ - var pn = project.planName.blue - } - } - var row = [ - perm || project.domain, - project.timeAgoInWords.grey, - project.cmd.grey, - project.platform.grey, - pn || "", - //lastcmd !== project.cmd ? (project.cmd).grey : "", - ] - table.push(row) - lastcmd = project.cmd + request(options, function(e, r, obj){ + if (e) throw e + var list = JSON.parse(obj) + + var table = new Table({ + //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], + chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' + , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' + , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' + , 'right': '' , 'right-mid': '' , 'middle': ' ' }, + style: { 'padding-left': 1, 'padding-right': 1 } }) - helpers.space() - helpers.log(table.toString()) - } else { - helpers.space() - helpers.trunc(("Empty").grey) + var lastcmd = "" + if (list.length != 0) { + list.forEach(function(project){ + var perm = project.rev ? (project.rev + " ").grey + project.domain : "" + if (project.planName) { + if (project.planName.indexOf("Standard") !== -1){ + var pn = project.planName.grey + }else{ + var pn = project.planName.blue + } + } + var row = [ + perm || project.domain, + project.timeAgoInWords.grey, + project.cmd.grey, + project.platform.grey, + pn || "", + //lastcmd !== project.cmd ? (project.cmd).grey : "", + ] + table.push(row) + lastcmd = project.cmd + }) + helpers.space() + helpers.log(table.toString()) + } else { + helpers.space() + helpers.trunc(("Empty").grey) + } + next() + }) + } + + var listSingleProject = function(){ + var options = { + 'url': url.resolve(req.endpoint.format(), '/list/' + req.argv["_"][0]), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } } - next() - }) + request(options, function(e, r, obj){ + if (e) throw e + var list = JSON.parse(obj) + list.reverse() + var table = new Table({ + chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' + , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' + , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' + , 'right': '' , 'right-mid': '' , 'middle': ' ' }, + style: { 'padding-left': 0, 'padding-right': 1 } + }) + var lastcmd = "" + project = req.project + if (list.length != 0) { + list.forEach(function(revision){ + + if (revision.current){ + var perm = revision.rev ? (revision.rev + ".").blue.underline + req.project.blue.underline : "" + var row = [ + perm || project.domain.blue.underline, + revision.email.blue.underline, + revision.fileCount.toString().blue.underline + " files".blue.underline, + revision.totalSize.toString().blue.underline + " bytes".blue.underline + ] + } else { + var perm = revision.rev ? (revision.rev + ".").grey + req.project.grey : "" + var row = [ + perm || project.domain, + revision.email.grey, + revision.fileCount.toString().grey + " files".grey, + revision.totalSize.toString().grey + " bytes".grey + ] + } + + + table.push(row) + lastcmd = project.cmd + }) + helpers.space() + helpers.log(table.toString()) + } else { + helpers.space() + helpers.trunc(("Empty").grey) + } + next() + }) + + } + + + if (req.argv["_"].length > 0) { + listSingleProject() + } else { + listAllProjects() + } + + } diff --git a/lib/middleware/util/table-revision.js b/lib/middleware/util/table-revision.js new file mode 100644 index 0000000..eee58e6 --- /dev/null +++ b/lib/middleware/util/table-revision.js @@ -0,0 +1,57 @@ + +var Table = require("cli-table3") + + +// returns a table +module.exports = function(project, revisions){ + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 1 + } + }) + + revisions.forEach(function(revision){ + if (revision.current){ + var perm = revision.rev ? (revision.rev + ".") + project : "" + var row = [ + (perm || project.domain).blue, + revision.email.blue, + (revision.fileCount.toString() + " files").blue, + (revision.totalSize.toString() + " bytes").blue, + ] + } else { + var perm = revision.rev ? (revision.rev + ".") + project : "" + var row = [ + perm || project.domain, + revision.email, + revision.fileCount.toString() + " files", + revision.totalSize.toString() + " bytes" + ] + } + table.push(row) + }) + + return table + +} + + + + \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index 1265fbc..6a16647 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -29,6 +29,7 @@ var ipaddress = require("./middleware/ipaddress") var login = require("./middleware/login") var shorthand = require("./middleware/shorthand") var list = require("./middleware/list") +var cut = require("./middleware/cut") var token = require("./middleware/token") var teardown = require("./middleware/teardown") var discovery = require("./middleware/discovery") @@ -113,7 +114,7 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - var commands = ["login", "logout", "whoami", "list", "publish", "teardown", "token", "plus", "ssl", "plan", "card"] + var commands = ["login", "logout", "whoami", "list", "cut", "publish", "teardown", "token", "plus", "ssl", "plan", "card"] if (commands.indexOf(cmd) !== -1) { argv._.shift() @@ -244,6 +245,25 @@ module.exports = function(config){ } } + surge.cut = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, shorthand, + cut, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.teardown = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub From 53c65002c4117dd5164f62d44e19c5445918a63e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 6 Dec 2019 00:58:48 -0800 Subject: [PATCH 094/214] consolidated cutto into one helper function --- lib/middleware/cut/cutto.js | 7 +++---- lib/middleware/cut/interactive.js | 6 ++---- lib/middleware/util/helpers.js | 5 +++++ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/middleware/cut/cutto.js b/lib/middleware/cut/cutto.js index 629f4ad..0b0ef50 100644 --- a/lib/middleware/cut/cutto.js +++ b/lib/middleware/cut/cutto.js @@ -1,8 +1,7 @@ -var helpers = require("../util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ - helpers.trunc("cut cutto " + req.argv["_"][1]) - - return next() + helpers.space() + return helpers.cutto(req.argv["_"][0], req.argv["_"][1], next) } diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js index 3aba4a8..7789733 100644 --- a/lib/middleware/cut/interactive.js +++ b/lib/middleware/cut/interactive.js @@ -60,12 +60,10 @@ module.exports = function(req, next){ inquirer.prompt([args]).then(function (answers) { if (answers.revision.current){ helpers.trunc("No change".green + " - Selected revision is already current".grey ) + return next() } else { - helpers.trunc(("Switching " + req.argv["_"][0] + " to " + answers.revision.rev + "...").grey ) + return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) } - - helpers.space() - return next() }) } diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 1d3d3ea..7c21e7a 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -91,6 +91,11 @@ exports.stacktrace = function(str, options){ return context } +var cutto = exports.cutto = function(domain, rev, callback){ + trunc("cut "+ domain.underline +" to " + rev) + callback() +} + var fetchAccount = exports.fetchAccount = function(endpoint){ From 19f34f69905bfcb02fad6ac4eb9067dbdabd70aa Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Dec 2019 15:51:28 -0800 Subject: [PATCH 095/214] renaming files --- lib/middleware/{ => _shared}/auth.js | 4 +- lib/middleware/{ => _shared}/card.js | 2 +- lib/middleware/{ => _shared}/creds.js | 4 +- lib/middleware/{ => _shared}/deploy.js | 6 +- lib/middleware/{ => _shared}/discovery.js | 2 +- lib/middleware/{ => _shared}/domain.js | 2 +- .../{ => _shared}/domainOrSilent.js | 2 +- lib/middleware/{ => _shared}/email.js | 2 +- lib/middleware/{ => _shared}/endpoint.js | 0 lib/middleware/{ => _shared}/index.js | 0 lib/middleware/{ => _shared}/ipaddress.js | 0 lib/middleware/{ => _shared}/list.js | 2 +- lib/middleware/{ => _shared}/log.js | 2 +- lib/middleware/{ => _shared}/login.js | 2 +- lib/middleware/{ => _shared}/logout.js | 4 +- lib/middleware/{ => _shared}/payment.js | 2 +- lib/middleware/{ => _shared}/pemOrSilent.js | 2 +- lib/middleware/_shared/pkg.js | 5 + lib/middleware/{ => _shared}/plan.js | 2 +- lib/middleware/{ => _shared}/plans.js | 2 +- lib/middleware/{ => _shared}/plus.js | 2 +- lib/middleware/{ => _shared}/prep.js | 0 lib/middleware/{ => _shared}/project.js | 2 +- lib/middleware/{ => _shared}/protocol.js | 0 lib/middleware/{ => _shared}/setcard.js | 2 +- lib/middleware/{ => _shared}/shorthand.js | 0 lib/middleware/{ => _shared}/size.js | 2 +- lib/middleware/{ => _shared}/ssl.js | 2 +- lib/middleware/{ => _shared}/stats.js | 2 +- lib/middleware/{ => _shared}/subscribe.js | 2 +- lib/middleware/{ => _shared}/subscription.js | 2 +- lib/middleware/{ => _shared}/teardown.js | 2 +- lib/middleware/{ => _shared}/token.js | 2 +- lib/middleware/{ => _shared}/tokencheck.js | 4 +- lib/middleware/{ => _shared}/version.js | 4 +- lib/middleware/{ => _shared}/welcome.js | 2 +- lib/middleware/{ => _shared}/whitelist.js | 4 +- lib/middleware/{ => _shared}/whoami.js | 4 +- lib/middleware/cut/index.js | 2 + lib/middleware/cutover.js | 14 ++ lib/middleware/pkg.js | 5 - lib/middleware/rollback.js | 0 lib/middleware/rollfore.js | 0 lib/middleware/select.js | 7 + lib/middleware/yankrev.js | 0 lib/surge.js | 157 ++++++++++++------ 46 files changed, 176 insertions(+), 94 deletions(-) rename lib/middleware/{ => _shared}/auth.js (92%) rename lib/middleware/{ => _shared}/card.js (83%) rename lib/middleware/{ => _shared}/creds.js (81%) rename lib/middleware/{ => _shared}/deploy.js (98%) rename lib/middleware/{ => _shared}/discovery.js (96%) rename lib/middleware/{ => _shared}/domain.js (97%) rename lib/middleware/{ => _shared}/domainOrSilent.js (95%) rename lib/middleware/{ => _shared}/email.js (97%) rename lib/middleware/{ => _shared}/endpoint.js (100%) rename lib/middleware/{ => _shared}/index.js (100%) rename lib/middleware/{ => _shared}/ipaddress.js (100%) rename lib/middleware/{ => _shared}/list.js (98%) rename lib/middleware/{ => _shared}/log.js (64%) rename lib/middleware/{ => _shared}/login.js (86%) rename lib/middleware/{ => _shared}/logout.js (82%) rename lib/middleware/{ => _shared}/payment.js (89%) rename lib/middleware/{ => _shared}/pemOrSilent.js (95%) create mode 100644 lib/middleware/_shared/pkg.js rename lib/middleware/{ => _shared}/plan.js (97%) rename lib/middleware/{ => _shared}/plans.js (94%) rename lib/middleware/{ => _shared}/plus.js (98%) rename lib/middleware/{ => _shared}/prep.js (100%) rename lib/middleware/{ => _shared}/project.js (97%) rename lib/middleware/{ => _shared}/protocol.js (100%) rename lib/middleware/{ => _shared}/setcard.js (96%) rename lib/middleware/{ => _shared}/shorthand.js (100%) rename lib/middleware/{ => _shared}/size.js (96%) rename lib/middleware/{ => _shared}/ssl.js (98%) rename lib/middleware/{ => _shared}/stats.js (96%) rename lib/middleware/{ => _shared}/subscribe.js (95%) rename lib/middleware/{ => _shared}/subscription.js (95%) rename lib/middleware/{ => _shared}/teardown.js (96%) rename lib/middleware/{ => _shared}/token.js (79%) rename lib/middleware/{ => _shared}/tokencheck.js (89%) rename lib/middleware/{ => _shared}/version.js (68%) rename lib/middleware/{ => _shared}/welcome.js (81%) rename lib/middleware/{ => _shared}/whitelist.js (66%) rename lib/middleware/{ => _shared}/whoami.js (91%) create mode 100644 lib/middleware/cutover.js delete mode 100644 lib/middleware/pkg.js create mode 100644 lib/middleware/rollback.js create mode 100644 lib/middleware/rollfore.js create mode 100644 lib/middleware/select.js create mode 100644 lib/middleware/yankrev.js diff --git a/lib/middleware/auth.js b/lib/middleware/_shared/auth.js similarity index 92% rename from lib/middleware/auth.js rename to lib/middleware/_shared/auth.js index 4a6c6be..03dfcdf 100644 --- a/lib/middleware/auth.js +++ b/lib/middleware/_shared/auth.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("./util/creds.js") -var helpers = require("./util/helpers.js") +var localCreds = require("../util/creds.js") +var helpers = require("../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/card.js b/lib/middleware/_shared/card.js similarity index 83% rename from lib/middleware/card.js rename to lib/middleware/_shared/card.js index 52c8f6b..9dd14e0 100644 --- a/lib/middleware/card.js +++ b/lib/middleware/_shared/card.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/creds.js b/lib/middleware/_shared/creds.js similarity index 81% rename from lib/middleware/creds.js rename to lib/middleware/_shared/creds.js index 5691a41..ed979dc 100644 --- a/lib/middleware/creds.js +++ b/lib/middleware/_shared/creds.js @@ -1,8 +1,8 @@ var path = require("path") var fs = require("fs") var netrc = require("netrc") -var localCreds = require("./util/creds.js") -var helpers = require("./util/helpers.js") +var localCreds = require("../util/creds.js") +var helpers = require("../util/helpers.js") module.exports = function(req, next){ req.passintoken = req.argv.token || process.env['SURGE_TOKEN'] || process.env['TRAVIS_SURGE_TOKEN'] || null diff --git a/lib/middleware/deploy.js b/lib/middleware/_shared/deploy.js similarity index 98% rename from lib/middleware/deploy.js rename to lib/middleware/_shared/deploy.js index a7ebf03..bfa85ea 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/_shared/deploy.js @@ -1,11 +1,11 @@ var fs = require("fs") var request = require("request") -var helpers = require('./util/helpers') -var localCreds = require("./util/creds.js") +var helpers = require('../util/helpers') +var localCreds = require("../util/creds.js") var tar = require('tarr') var zlib = require('zlib') var fsReader = require('surge-fstream-ignore') -var surge = require('../surge') +var surge = require('../../surge') var ProgressBar = require("progress") var split = require("split") var url = require("url") diff --git a/lib/middleware/discovery.js b/lib/middleware/_shared/discovery.js similarity index 96% rename from lib/middleware/discovery.js rename to lib/middleware/_shared/discovery.js index 2a1eb61..ca5e90f 100644 --- a/lib/middleware/discovery.js +++ b/lib/middleware/_shared/discovery.js @@ -3,7 +3,7 @@ var moniker = require("moniker") var fs = require("fs") var path = require("path") var os = require("os") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") exports.suggestDomainFromCname = function(req, next){ diff --git a/lib/middleware/domain.js b/lib/middleware/_shared/domain.js similarity index 97% rename from lib/middleware/domain.js rename to lib/middleware/_shared/domain.js index 80e8a49..27f5927 100644 --- a/lib/middleware/domain.js +++ b/lib/middleware/_shared/domain.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/domainOrSilent.js b/lib/middleware/_shared/domainOrSilent.js similarity index 95% rename from lib/middleware/domainOrSilent.js rename to lib/middleware/_shared/domainOrSilent.js index 63a97c5..6ccb5d6 100644 --- a/lib/middleware/domainOrSilent.js +++ b/lib/middleware/_shared/domainOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/email.js b/lib/middleware/_shared/email.js similarity index 97% rename from lib/middleware/email.js rename to lib/middleware/_shared/email.js index a3917fd..1522b68 100644 --- a/lib/middleware/email.js +++ b/lib/middleware/_shared/email.js @@ -1,5 +1,5 @@ var pattern = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ //var label = " email:".grey diff --git a/lib/middleware/endpoint.js b/lib/middleware/_shared/endpoint.js similarity index 100% rename from lib/middleware/endpoint.js rename to lib/middleware/_shared/endpoint.js diff --git a/lib/middleware/index.js b/lib/middleware/_shared/index.js similarity index 100% rename from lib/middleware/index.js rename to lib/middleware/_shared/index.js diff --git a/lib/middleware/ipaddress.js b/lib/middleware/_shared/ipaddress.js similarity index 100% rename from lib/middleware/ipaddress.js rename to lib/middleware/_shared/ipaddress.js diff --git a/lib/middleware/list.js b/lib/middleware/_shared/list.js similarity index 98% rename from lib/middleware/list.js rename to lib/middleware/_shared/list.js index f0b4f53..8878b04 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/_shared/list.js @@ -1,7 +1,7 @@ var url = require("url") var request = require("request") var Table = require("cli-table3") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ diff --git a/lib/middleware/log.js b/lib/middleware/_shared/log.js similarity index 64% rename from lib/middleware/log.js rename to lib/middleware/_shared/log.js index 155ff32..bf1ae72 100644 --- a/lib/middleware/log.js +++ b/lib/middleware/_shared/log.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ helpers.show() diff --git a/lib/middleware/login.js b/lib/middleware/_shared/login.js similarity index 86% rename from lib/middleware/login.js rename to lib/middleware/_shared/login.js index c30d888..2bb1ff5 100644 --- a/lib/middleware/login.js +++ b/lib/middleware/_shared/login.js @@ -1,5 +1,5 @@ var path = require("path") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ helpers.log() diff --git a/lib/middleware/logout.js b/lib/middleware/_shared/logout.js similarity index 82% rename from lib/middleware/logout.js rename to lib/middleware/_shared/logout.js index 7e37cee..64b34f4 100644 --- a/lib/middleware/logout.js +++ b/lib/middleware/_shared/logout.js @@ -1,5 +1,5 @@ -var helpers = require("./util/helpers") -var localCreds = require("./util/creds.js") +var helpers = require("../util/helpers") +var localCreds = require("../util/creds.js") var path = require("path") module.exports = function(req, next){ diff --git a/lib/middleware/payment.js b/lib/middleware/_shared/payment.js similarity index 89% rename from lib/middleware/payment.js rename to lib/middleware/_shared/payment.js index 229720c..9f318ba 100644 --- a/lib/middleware/payment.js +++ b/lib/middleware/_shared/payment.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/pemOrSilent.js b/lib/middleware/_shared/pemOrSilent.js similarity index 95% rename from lib/middleware/pemOrSilent.js rename to lib/middleware/_shared/pemOrSilent.js index ce2184c..ba83edb 100644 --- a/lib/middleware/pemOrSilent.js +++ b/lib/middleware/_shared/pemOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/pkg.js b/lib/middleware/_shared/pkg.js new file mode 100644 index 0000000..174168b --- /dev/null +++ b/lib/middleware/_shared/pkg.js @@ -0,0 +1,5 @@ + +module.exports = function(req, next){ + req.pkg = require(__dirname + "/../../../package.json") + next() +} \ No newline at end of file diff --git a/lib/middleware/plan.js b/lib/middleware/_shared/plan.js similarity index 97% rename from lib/middleware/plan.js rename to lib/middleware/_shared/plan.js index eaaacec..9faf2cf 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/_shared/plan.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/plans.js b/lib/middleware/_shared/plans.js similarity index 94% rename from lib/middleware/plans.js rename to lib/middleware/_shared/plans.js index e3102b9..4a79a2b 100644 --- a/lib/middleware/plans.js +++ b/lib/middleware/_shared/plans.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/plus.js b/lib/middleware/_shared/plus.js similarity index 98% rename from lib/middleware/plus.js rename to lib/middleware/_shared/plus.js index 177cac7..9948376 100644 --- a/lib/middleware/plus.js +++ b/lib/middleware/_shared/plus.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/prep.js b/lib/middleware/_shared/prep.js similarity index 100% rename from lib/middleware/prep.js rename to lib/middleware/_shared/prep.js diff --git a/lib/middleware/project.js b/lib/middleware/_shared/project.js similarity index 97% rename from lib/middleware/project.js rename to lib/middleware/_shared/project.js index 74ed499..3f5067a 100644 --- a/lib/middleware/project.js +++ b/lib/middleware/_shared/project.js @@ -1,6 +1,6 @@ var path = require("path") var fs = require("fs") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/protocol.js b/lib/middleware/_shared/protocol.js similarity index 100% rename from lib/middleware/protocol.js rename to lib/middleware/_shared/protocol.js diff --git a/lib/middleware/setcard.js b/lib/middleware/_shared/setcard.js similarity index 96% rename from lib/middleware/setcard.js rename to lib/middleware/_shared/setcard.js index 3927463..df11699 100644 --- a/lib/middleware/setcard.js +++ b/lib/middleware/_shared/setcard.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/shorthand.js b/lib/middleware/_shared/shorthand.js similarity index 100% rename from lib/middleware/shorthand.js rename to lib/middleware/_shared/shorthand.js diff --git a/lib/middleware/size.js b/lib/middleware/_shared/size.js similarity index 96% rename from lib/middleware/size.js rename to lib/middleware/_shared/size.js index c385381..6128088 100644 --- a/lib/middleware/size.js +++ b/lib/middleware/_shared/size.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var fsReader = require('surge-fstream-ignore') var fs = require("fs") var ignore = require("surge-ignore") diff --git a/lib/middleware/ssl.js b/lib/middleware/_shared/ssl.js similarity index 98% rename from lib/middleware/ssl.js rename to lib/middleware/_shared/ssl.js index 2a51225..c222ee4 100644 --- a/lib/middleware/ssl.js +++ b/lib/middleware/_shared/ssl.js @@ -1,6 +1,6 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/stats.js b/lib/middleware/_shared/stats.js similarity index 96% rename from lib/middleware/stats.js rename to lib/middleware/_shared/stats.js index 823a70c..5633eec 100644 --- a/lib/middleware/stats.js +++ b/lib/middleware/_shared/stats.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/subscribe.js b/lib/middleware/_shared/subscribe.js similarity index 95% rename from lib/middleware/subscribe.js rename to lib/middleware/_shared/subscribe.js index 5e3e170..d4e33c2 100644 --- a/lib/middleware/subscribe.js +++ b/lib/middleware/_shared/subscribe.js @@ -2,7 +2,7 @@ var request = require("request") var url = require("url") var path = require("path") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/subscription.js b/lib/middleware/_shared/subscription.js similarity index 95% rename from lib/middleware/subscription.js rename to lib/middleware/_shared/subscription.js index d3eeb6c..1de02f9 100644 --- a/lib/middleware/subscription.js +++ b/lib/middleware/_shared/subscription.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/teardown.js b/lib/middleware/_shared/teardown.js similarity index 96% rename from lib/middleware/teardown.js rename to lib/middleware/_shared/teardown.js index 77a2caa..fe38db1 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/_shared/teardown.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/token.js b/lib/middleware/_shared/token.js similarity index 79% rename from lib/middleware/token.js rename to lib/middleware/_shared/token.js index f48f69e..1c79c1a 100644 --- a/lib/middleware/token.js +++ b/lib/middleware/_shared/token.js @@ -1,5 +1,5 @@ var path = require("path") -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ //console.log(req.authed) diff --git a/lib/middleware/tokencheck.js b/lib/middleware/_shared/tokencheck.js similarity index 89% rename from lib/middleware/tokencheck.js rename to lib/middleware/_shared/tokencheck.js index d46a611..3102b87 100644 --- a/lib/middleware/tokencheck.js +++ b/lib/middleware/_shared/tokencheck.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("./util/creds.js") -var helpers = require("./util/helpers.js") +var localCreds = require("../util/creds.js") +var helpers = require("../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/version.js b/lib/middleware/_shared/version.js similarity index 68% rename from lib/middleware/version.js rename to lib/middleware/_shared/version.js index d2e4f1c..e0ff93b 100644 --- a/lib/middleware/version.js +++ b/lib/middleware/_shared/version.js @@ -1,5 +1,5 @@ -var pkg = require("../../package.json") -var helpers = require("./util/helpers.js") +var pkg = require("../../../package.json") +var helpers = require("../util/helpers.js") module.exports = function(req, next){ if (req.argv.version || req.argv.V) { diff --git a/lib/middleware/welcome.js b/lib/middleware/_shared/welcome.js similarity index 81% rename from lib/middleware/welcome.js rename to lib/middleware/_shared/welcome.js index e59eae8..2976555 100644 --- a/lib/middleware/welcome.js +++ b/lib/middleware/_shared/welcome.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers.js") +var helpers = require("../util/helpers.js") module.exports = function(req, next){ diff --git a/lib/middleware/whitelist.js b/lib/middleware/_shared/whitelist.js similarity index 66% rename from lib/middleware/whitelist.js rename to lib/middleware/_shared/whitelist.js index 50893d7..129844c 100644 --- a/lib/middleware/whitelist.js +++ b/lib/middleware/_shared/whitelist.js @@ -1,9 +1,9 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform - var commands = ['h','b', 'd','e','a','r','v','V','p','endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; + var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; var args = []; for (param in req.argv) { diff --git a/lib/middleware/whoami.js b/lib/middleware/_shared/whoami.js similarity index 91% rename from lib/middleware/whoami.js rename to lib/middleware/_shared/whoami.js index 91a5f68..dc356ea 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/_shared/whoami.js @@ -1,5 +1,5 @@ -var helpers = require("./util/helpers") -var creds = require("./util/creds") +var helpers = require("../util/helpers") +var creds = require("../util/creds") module.exports = function(req, next){ if (req.creds && req.creds.token) { diff --git a/lib/middleware/cut/index.js b/lib/middleware/cut/index.js index 5edf53c..9fea8ec 100644 --- a/lib/middleware/cut/index.js +++ b/lib/middleware/cut/index.js @@ -4,6 +4,8 @@ var interactive = require("./interactive.js") var cutto = require("./cutto.js") module.exports = function(req, next){ + console.log(req.argv["_"]) + if (req.argv["_"].length === 0) { return instructions(req, next) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js new file mode 100644 index 0000000..594a398 --- /dev/null +++ b/lib/middleware/cutover.js @@ -0,0 +1,14 @@ + +var helpers = require("./util/helpers") +var cutto = require("./cut/cutto") +var interactive = require("./cut/interactive.js") + +module.exports = function(req, next){ + + if (req.argv.i){ + return interactive(req, next) + } else { + return cutto(req, next) + } + +} \ No newline at end of file diff --git a/lib/middleware/pkg.js b/lib/middleware/pkg.js deleted file mode 100644 index e8796df..0000000 --- a/lib/middleware/pkg.js +++ /dev/null @@ -1,5 +0,0 @@ - -module.exports = function(req, next){ - req.pkg = require(__dirname + "/../../package.json") - next() -} \ No newline at end of file diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js new file mode 100644 index 0000000..e69de29 diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js new file mode 100644 index 0000000..e69de29 diff --git a/lib/middleware/select.js b/lib/middleware/select.js new file mode 100644 index 0000000..8281230 --- /dev/null +++ b/lib/middleware/select.js @@ -0,0 +1,7 @@ +var helpers = require("./util/helpers") +var cutto = require("./cut/cutto") +var interactive = require("./cut/interactive.js") + +module.exports = function(req, next){ + return interactive(req, next) +} \ No newline at end of file diff --git a/lib/middleware/yankrev.js b/lib/middleware/yankrev.js new file mode 100644 index 0000000..e69de29 diff --git a/lib/surge.js b/lib/surge.js index 6a16647..b65a99c 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -1,51 +1,55 @@ -var middleware = require('./middleware') -var skin = require('./middleware/util/skin.js') -var help = require('./middleware/help') -var read = require("read") -var minimist = require('minimist') - - -var whitelist = require("./middleware/whitelist") -var endpoint = require("./middleware/endpoint") -var pkg = require("./middleware/pkg") -var version = require("./middleware/version") -var welcome = require("./middleware/welcome") -var creds = require("./middleware/creds") -var whoami = require("./middleware/whoami") -var tokencheck = require("./middleware/tokencheck") -var email = require("./middleware/email") -var auth = require("./middleware/auth") -var logout = require("./middleware/logout") -var help = require("./middleware/help") -var project = require("./middleware/project") -var size = require("./middleware/size") -var domain = require("./middleware/domain") -var protocol = require("./middleware/protocol") -var deploy = require("./middleware/deploy") -var domainOrSilent = require("./middleware/domainOrSilent") -var pemOrSilent = require("./middleware/pemOrSilent") -var ipaddress = require("./middleware/ipaddress") -var login = require("./middleware/login") -var shorthand = require("./middleware/shorthand") -var list = require("./middleware/list") -var cut = require("./middleware/cut") -var token = require("./middleware/token") -var teardown = require("./middleware/teardown") -var discovery = require("./middleware/discovery") -var plus = require("./middleware/plus") - -var subscription= require("./middleware/subscription") -var plans = require("./middleware/plans") -var plan = require("./middleware/plan") -var payment = require("./middleware/payment") -var card = require("./middleware/card") -var setcard = require("./middleware/setcard") -var subscribe = require("./middleware/subscribe") - -var ssl = require("./middleware/ssl") -var log = require("./middleware/log") -var helpers = require('./middleware/util/helpers') +//var middleware = require('./middleware') +var help = require('./middleware/help') +var skin = require('./middleware/util/skin.js') +var read = require("read") +var minimist = require('minimist') + +var whitelist = require("./middleware/_shared/whitelist") +var endpoint = require("./middleware/_shared/endpoint") +var pkg = require("./middleware/_shared/pkg") +var version = require("./middleware/_shared/version") +var welcome = require("./middleware/_shared/welcome") +var creds = require("./middleware/_shared/creds") +var whoami = require("./middleware/_shared/whoami") +var tokencheck = require("./middleware/_shared/tokencheck") +var email = require("./middleware/_shared/email") +var auth = require("./middleware/_shared/auth") +var logout = require("./middleware/_shared/logout") +var project = require("./middleware/_shared/project") +var size = require("./middleware/_shared/size") +var domain = require("./middleware/_shared/domain") +var protocol = require("./middleware/_shared/protocol") +var deploy = require("./middleware/_shared/deploy") +var domainOrSilent = require("./middleware/_shared/domainOrSilent") +var pemOrSilent = require("./middleware/_shared/pemOrSilent") +var ipaddress = require("./middleware/_shared/ipaddress") +var login = require("./middleware/_shared/login") +var shorthand = require("./middleware/_shared/shorthand") +var list = require("./middleware/_shared/list") + +var token = require("./middleware/_shared/token") +var teardown = require("./middleware/_shared/teardown") +var discovery = require("./middleware/_shared/discovery") +var plus = require("./middleware/_shared/plus") +var subscription = require("./middleware/_shared/subscription") +var plans = require("./middleware/_shared/plans") +var plan = require("./middleware/_shared/plan") +var payment = require("./middleware/_shared/payment") +var card = require("./middleware/_shared/card") +var setcard = require("./middleware/_shared/setcard") +var subscribe = require("./middleware/_shared/subscribe") +var ssl = require("./middleware/_shared/ssl") +var log = require("./middleware/_shared/log") + + +var select = require("./middleware/select") +var yankrev = require("./middleware/yankrev") +var rollback = require("./middleware/rollback") +var rollfore = require("./middleware/rollfore") +var cutover = require("./middleware/cutover") + +var helpers = require('./middleware/util/helpers') @@ -114,7 +118,24 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - var commands = ["login", "logout", "whoami", "list", "cut", "publish", "teardown", "token", "plus", "ssl", "plan", "card"] + var commands = [ + "login", + "logout", + "whoami", + "list", + "rollback", + "rollfore", + "cutover", + "yankrev", + "publish", + "teardown", + "select", + "token", + "plus", + "ssl", + "plan", + "card" + ] if (commands.indexOf(cmd) !== -1) { argv._.shift() @@ -245,7 +266,7 @@ module.exports = function(config){ } } - surge.cut = function(hooks){ + surge.switch = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub @@ -264,6 +285,44 @@ module.exports = function(config){ } } + surge.cutover = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, shorthand, + cutover, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.select = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, shorthand, + select, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.teardown = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub From 2b1f1cd3ddb3d58d2e6ecb98b92573edf90db7d9 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Dec 2019 16:03:04 -0800 Subject: [PATCH 096/214] moved cli.js to bin dir --- lib/cli.js => bin/surge | 0 package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/cli.js => bin/surge (100%) diff --git a/lib/cli.js b/bin/surge similarity index 100% rename from lib/cli.js rename to bin/surge diff --git a/package.json b/package.json index 6ac15ef..4980d29 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.21.6", "description": "CDN for front-end developers", "author": "Brock Whitten ", - "bin": "./lib/cli.js", + "bin": "./bin/surge", "dependencies": { "cli-table3": "^0.5.1", "surge-fstream-ignore": "^1.0.6", From 9a1ade34d44cab99f9c50b2fa1573e78c592ec22 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Dec 2019 22:18:19 -0800 Subject: [PATCH 097/214] restructuring project files --- lib/middleware/_shared/{card.js => _card.js} | 2 +- .../_shared/{creds.js => _creds.js} | 4 +- .../_shared/{domain.js => _domain.js} | 2 +- .../{domainOrSilent.js => _domainOrSilent.js} | 2 +- .../_shared/{email.js => _email.js} | 3 +- .../_shared/{endpoint.js => _endpoint.js} | 0 .../_shared/{ipaddress.js => _ipaddress.js} | 0 lib/middleware/_shared/{log.js => _log.js} | 2 +- .../_shared/{payment.js => _payment.js} | 2 +- .../{pemOrSilent.js => _pemOrSilent.js} | 2 +- lib/middleware/_shared/{pkg.js => _pkg.js} | 0 .../_shared/{plans.js => _plans.js} | 2 +- lib/middleware/_shared/{prep.js => _prep.js} | 0 .../_shared/{project.js => _project.js} | 2 +- .../_shared/{protocol.js => _protocol.js} | 0 .../_shared/{setcard.js => _setcard.js} | 2 +- .../_shared/{shorthand.js => _shorthand.js} | 0 lib/middleware/_shared/{size.js => _size.js} | 2 +- .../_shared/{stats.js => _stats.js} | 0 .../_shared/{subscribe.js => _subscribe.js} | 2 +- .../{subscription.js => _subscription.js} | 2 +- .../_shared/{tokencheck.js => _tokencheck.js} | 4 +- .../_shared/{version.js => _version.js} | 2 +- .../_shared/{welcome.js => _welcome.js} | 2 +- .../_shared/{whitelist.js => _whitelist.js} | 2 +- lib/middleware/_shared/auth.js | 4 +- lib/middleware/_shared/discovery.js | 2 +- lib/middleware/cut/cutto.js | 2 +- lib/middleware/cut/interactive.js | 4 +- lib/middleware/cutover.js | 2 +- lib/middleware/{_shared => }/deploy.js | 2 +- lib/middleware/help.js | 2 +- lib/middleware/{_shared => }/list.js | 0 lib/middleware/{_shared => }/login.js | 0 lib/middleware/{_shared => }/logout.js | 0 lib/middleware/{_shared => }/plan.js | 0 lib/middleware/{_shared => }/plus.js | 0 lib/middleware/select.js | 2 +- lib/middleware/{_shared => }/ssl.js | 0 lib/middleware/{_shared => }/teardown.js | 0 lib/middleware/{_shared => }/token.js | 0 lib/middleware/{_shared => }/whoami.js | 0 lib/surge.js | 82 ++++++++++--------- lib/{middleware => }/util/creds.js | 0 lib/{middleware => }/util/helpers.js | 2 +- lib/{middleware => }/util/skin.js | 0 lib/{middleware => }/util/table-revision.js | 0 47 files changed, 76 insertions(+), 69 deletions(-) rename lib/middleware/_shared/{card.js => _card.js} (83%) rename lib/middleware/_shared/{creds.js => _creds.js} (80%) rename lib/middleware/_shared/{domain.js => _domain.js} (97%) rename lib/middleware/_shared/{domainOrSilent.js => _domainOrSilent.js} (95%) rename lib/middleware/_shared/{email.js => _email.js} (97%) rename lib/middleware/_shared/{endpoint.js => _endpoint.js} (100%) rename lib/middleware/_shared/{ipaddress.js => _ipaddress.js} (100%) rename lib/middleware/_shared/{log.js => _log.js} (62%) rename lib/middleware/_shared/{payment.js => _payment.js} (88%) rename lib/middleware/_shared/{pemOrSilent.js => _pemOrSilent.js} (95%) rename lib/middleware/_shared/{pkg.js => _pkg.js} (100%) rename lib/middleware/_shared/{plans.js => _plans.js} (94%) rename lib/middleware/_shared/{prep.js => _prep.js} (100%) rename lib/middleware/_shared/{project.js => _project.js} (96%) rename lib/middleware/_shared/{protocol.js => _protocol.js} (100%) rename lib/middleware/_shared/{setcard.js => _setcard.js} (95%) rename lib/middleware/_shared/{shorthand.js => _shorthand.js} (100%) rename lib/middleware/_shared/{size.js => _size.js} (95%) rename lib/middleware/_shared/{stats.js => _stats.js} (100%) rename lib/middleware/_shared/{subscribe.js => _subscribe.js} (95%) rename lib/middleware/_shared/{subscription.js => _subscription.js} (94%) rename lib/middleware/_shared/{tokencheck.js => _tokencheck.js} (89%) rename lib/middleware/_shared/{version.js => _version.js} (83%) rename lib/middleware/_shared/{welcome.js => _welcome.js} (80%) rename lib/middleware/_shared/{whitelist.js => _whitelist.js} (93%) rename lib/middleware/{_shared => }/deploy.js (99%) rename lib/middleware/{_shared => }/list.js (100%) rename lib/middleware/{_shared => }/login.js (100%) rename lib/middleware/{_shared => }/logout.js (100%) rename lib/middleware/{_shared => }/plan.js (100%) rename lib/middleware/{_shared => }/plus.js (100%) rename lib/middleware/{_shared => }/ssl.js (100%) rename lib/middleware/{_shared => }/teardown.js (100%) rename lib/middleware/{_shared => }/token.js (100%) rename lib/middleware/{_shared => }/whoami.js (100%) rename lib/{middleware => }/util/creds.js (100%) rename lib/{middleware => }/util/helpers.js (99%) rename lib/{middleware => }/util/skin.js (100%) rename lib/{middleware => }/util/table-revision.js (100%) diff --git a/lib/middleware/_shared/card.js b/lib/middleware/_shared/_card.js similarity index 83% rename from lib/middleware/_shared/card.js rename to lib/middleware/_shared/_card.js index 9dd14e0..cada85b 100644 --- a/lib/middleware/_shared/card.js +++ b/lib/middleware/_shared/_card.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/creds.js b/lib/middleware/_shared/_creds.js similarity index 80% rename from lib/middleware/_shared/creds.js rename to lib/middleware/_shared/_creds.js index ed979dc..3d6e175 100644 --- a/lib/middleware/_shared/creds.js +++ b/lib/middleware/_shared/_creds.js @@ -1,8 +1,8 @@ var path = require("path") var fs = require("fs") var netrc = require("netrc") -var localCreds = require("../util/creds.js") -var helpers = require("../util/helpers.js") +var localCreds = require("../../util/creds.js") +var helpers = require("../../util/helpers.js") module.exports = function(req, next){ req.passintoken = req.argv.token || process.env['SURGE_TOKEN'] || process.env['TRAVIS_SURGE_TOKEN'] || null diff --git a/lib/middleware/_shared/domain.js b/lib/middleware/_shared/_domain.js similarity index 97% rename from lib/middleware/_shared/domain.js rename to lib/middleware/_shared/_domain.js index 27f5927..c9eb5b4 100644 --- a/lib/middleware/_shared/domain.js +++ b/lib/middleware/_shared/_domain.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/domainOrSilent.js b/lib/middleware/_shared/_domainOrSilent.js similarity index 95% rename from lib/middleware/_shared/domainOrSilent.js rename to lib/middleware/_shared/_domainOrSilent.js index 6ccb5d6..3b3cacc 100644 --- a/lib/middleware/_shared/domainOrSilent.js +++ b/lib/middleware/_shared/_domainOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/email.js b/lib/middleware/_shared/_email.js similarity index 97% rename from lib/middleware/_shared/email.js rename to lib/middleware/_shared/_email.js index 1522b68..59bf295 100644 --- a/lib/middleware/_shared/email.js +++ b/lib/middleware/_shared/_email.js @@ -1,5 +1,6 @@ + +var helpers = require("../../util/helpers") var pattern = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i -var helpers = require("../util/helpers") module.exports = function(req, next, abort){ //var label = " email:".grey diff --git a/lib/middleware/_shared/endpoint.js b/lib/middleware/_shared/_endpoint.js similarity index 100% rename from lib/middleware/_shared/endpoint.js rename to lib/middleware/_shared/_endpoint.js diff --git a/lib/middleware/_shared/ipaddress.js b/lib/middleware/_shared/_ipaddress.js similarity index 100% rename from lib/middleware/_shared/ipaddress.js rename to lib/middleware/_shared/_ipaddress.js diff --git a/lib/middleware/_shared/log.js b/lib/middleware/_shared/_log.js similarity index 62% rename from lib/middleware/_shared/log.js rename to lib/middleware/_shared/_log.js index bf1ae72..92e5123 100644 --- a/lib/middleware/_shared/log.js +++ b/lib/middleware/_shared/_log.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next){ helpers.show() diff --git a/lib/middleware/_shared/payment.js b/lib/middleware/_shared/_payment.js similarity index 88% rename from lib/middleware/_shared/payment.js rename to lib/middleware/_shared/_payment.js index 9f318ba..b6f29cb 100644 --- a/lib/middleware/_shared/payment.js +++ b/lib/middleware/_shared/_payment.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") // return token to be used for payment module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/pemOrSilent.js b/lib/middleware/_shared/_pemOrSilent.js similarity index 95% rename from lib/middleware/_shared/pemOrSilent.js rename to lib/middleware/_shared/_pemOrSilent.js index ba83edb..c2c70b5 100644 --- a/lib/middleware/_shared/pemOrSilent.js +++ b/lib/middleware/_shared/_pemOrSilent.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var moniker = require("moniker") var fs = require("fs") var path = require("path") diff --git a/lib/middleware/_shared/pkg.js b/lib/middleware/_shared/_pkg.js similarity index 100% rename from lib/middleware/_shared/pkg.js rename to lib/middleware/_shared/_pkg.js diff --git a/lib/middleware/_shared/plans.js b/lib/middleware/_shared/_plans.js similarity index 94% rename from lib/middleware/_shared/plans.js rename to lib/middleware/_shared/_plans.js index 4a79a2b..53e1b50 100644 --- a/lib/middleware/_shared/plans.js +++ b/lib/middleware/_shared/_plans.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/_shared/prep.js b/lib/middleware/_shared/_prep.js similarity index 100% rename from lib/middleware/_shared/prep.js rename to lib/middleware/_shared/_prep.js diff --git a/lib/middleware/_shared/project.js b/lib/middleware/_shared/_project.js similarity index 96% rename from lib/middleware/_shared/project.js rename to lib/middleware/_shared/_project.js index 3f5067a..c5e7b0f 100644 --- a/lib/middleware/_shared/project.js +++ b/lib/middleware/_shared/_project.js @@ -1,6 +1,6 @@ var path = require("path") var fs = require("fs") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/protocol.js b/lib/middleware/_shared/_protocol.js similarity index 100% rename from lib/middleware/_shared/protocol.js rename to lib/middleware/_shared/_protocol.js diff --git a/lib/middleware/_shared/setcard.js b/lib/middleware/_shared/_setcard.js similarity index 95% rename from lib/middleware/_shared/setcard.js rename to lib/middleware/_shared/_setcard.js index df11699..216df32 100644 --- a/lib/middleware/_shared/setcard.js +++ b/lib/middleware/_shared/_setcard.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/shorthand.js b/lib/middleware/_shared/_shorthand.js similarity index 100% rename from lib/middleware/_shared/shorthand.js rename to lib/middleware/_shared/_shorthand.js diff --git a/lib/middleware/_shared/size.js b/lib/middleware/_shared/_size.js similarity index 95% rename from lib/middleware/_shared/size.js rename to lib/middleware/_shared/_size.js index 6128088..56984a3 100644 --- a/lib/middleware/_shared/size.js +++ b/lib/middleware/_shared/_size.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var fsReader = require('surge-fstream-ignore') var fs = require("fs") var ignore = require("surge-ignore") diff --git a/lib/middleware/_shared/stats.js b/lib/middleware/_shared/_stats.js similarity index 100% rename from lib/middleware/_shared/stats.js rename to lib/middleware/_shared/_stats.js diff --git a/lib/middleware/_shared/subscribe.js b/lib/middleware/_shared/_subscribe.js similarity index 95% rename from lib/middleware/_shared/subscribe.js rename to lib/middleware/_shared/_subscribe.js index d4e33c2..82a4cbd 100644 --- a/lib/middleware/_shared/subscribe.js +++ b/lib/middleware/_shared/_subscribe.js @@ -2,7 +2,7 @@ var request = require("request") var url = require("url") var path = require("path") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next, abort){ diff --git a/lib/middleware/_shared/subscription.js b/lib/middleware/_shared/_subscription.js similarity index 94% rename from lib/middleware/_shared/subscription.js rename to lib/middleware/_shared/_subscription.js index 1de02f9..6b2de86 100644 --- a/lib/middleware/_shared/subscription.js +++ b/lib/middleware/_shared/_subscription.js @@ -1,7 +1,7 @@ var request = require("request") var url = require("url") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") diff --git a/lib/middleware/_shared/tokencheck.js b/lib/middleware/_shared/_tokencheck.js similarity index 89% rename from lib/middleware/_shared/tokencheck.js rename to lib/middleware/_shared/_tokencheck.js index 3102b87..3e3734e 100644 --- a/lib/middleware/_shared/tokencheck.js +++ b/lib/middleware/_shared/_tokencheck.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("../util/creds.js") -var helpers = require("../util/helpers.js") +var localCreds = require("../../util/creds.js") +var helpers = require("../../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/_shared/version.js b/lib/middleware/_shared/_version.js similarity index 83% rename from lib/middleware/_shared/version.js rename to lib/middleware/_shared/_version.js index e0ff93b..8eacc2a 100644 --- a/lib/middleware/_shared/version.js +++ b/lib/middleware/_shared/_version.js @@ -1,5 +1,5 @@ var pkg = require("../../../package.json") -var helpers = require("../util/helpers.js") +var helpers = require("../../util/helpers.js") module.exports = function(req, next){ if (req.argv.version || req.argv.V) { diff --git a/lib/middleware/_shared/welcome.js b/lib/middleware/_shared/_welcome.js similarity index 80% rename from lib/middleware/_shared/welcome.js rename to lib/middleware/_shared/_welcome.js index 2976555..3ea770d 100644 --- a/lib/middleware/_shared/welcome.js +++ b/lib/middleware/_shared/_welcome.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers.js") +var helpers = require("../../util/helpers.js") module.exports = function(req, next){ diff --git a/lib/middleware/_shared/whitelist.js b/lib/middleware/_shared/_whitelist.js similarity index 93% rename from lib/middleware/_shared/whitelist.js rename to lib/middleware/_shared/_whitelist.js index 129844c..4970c7e 100644 --- a/lib/middleware/_shared/whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -1,4 +1,4 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform diff --git a/lib/middleware/_shared/auth.js b/lib/middleware/_shared/auth.js index 03dfcdf..b20b944 100644 --- a/lib/middleware/_shared/auth.js +++ b/lib/middleware/_shared/auth.js @@ -1,6 +1,6 @@ var request = require("request") -var localCreds = require("../util/creds.js") -var helpers = require("../util/helpers.js") +var localCreds = require("../../util/creds.js") +var helpers = require("../../util/helpers.js") var os = require('os') var url = require("url") var parseUrl = require("url-parse-as-address") diff --git a/lib/middleware/_shared/discovery.js b/lib/middleware/_shared/discovery.js index ca5e90f..c9eaa29 100644 --- a/lib/middleware/_shared/discovery.js +++ b/lib/middleware/_shared/discovery.js @@ -3,7 +3,7 @@ var moniker = require("moniker") var fs = require("fs") var path = require("path") var os = require("os") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") exports.suggestDomainFromCname = function(req, next){ diff --git a/lib/middleware/cut/cutto.js b/lib/middleware/cut/cutto.js index 0b0ef50..de0e532 100644 --- a/lib/middleware/cut/cutto.js +++ b/lib/middleware/cut/cutto.js @@ -1,5 +1,5 @@ -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") module.exports = function(req, next){ helpers.space() diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js index 7789733..0a955a6 100644 --- a/lib/middleware/cut/interactive.js +++ b/lib/middleware/cut/interactive.js @@ -2,10 +2,10 @@ var url = require("url") var request = require("request") var Table = require("cli-table3") -var helpers = require("../util/helpers") +var helpers = require("../../util/helpers") var inquirer = require("inquirer") -var tableRevisions = require("../util/table-revision.js") +var tableRevisions = require("../../util/table-revision.js") module.exports = function(req, next){ diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 594a398..f386623 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -1,5 +1,5 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var cutto = require("./cut/cutto") var interactive = require("./cut/interactive.js") diff --git a/lib/middleware/_shared/deploy.js b/lib/middleware/deploy.js similarity index 99% rename from lib/middleware/_shared/deploy.js rename to lib/middleware/deploy.js index bfa85ea..7d88ea5 100644 --- a/lib/middleware/_shared/deploy.js +++ b/lib/middleware/deploy.js @@ -5,7 +5,7 @@ var localCreds = require("../util/creds.js") var tar = require('tarr') var zlib = require('zlib') var fsReader = require('surge-fstream-ignore') -var surge = require('../../surge') +var surge = require('../surge') var ProgressBar = require("progress") var split = require("split") var url = require("url") diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 9f73e43..8b7c8c3 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") module.exports = function(req, next){ if (req.argv.help || req.argv.h) { diff --git a/lib/middleware/_shared/list.js b/lib/middleware/list.js similarity index 100% rename from lib/middleware/_shared/list.js rename to lib/middleware/list.js diff --git a/lib/middleware/_shared/login.js b/lib/middleware/login.js similarity index 100% rename from lib/middleware/_shared/login.js rename to lib/middleware/login.js diff --git a/lib/middleware/_shared/logout.js b/lib/middleware/logout.js similarity index 100% rename from lib/middleware/_shared/logout.js rename to lib/middleware/logout.js diff --git a/lib/middleware/_shared/plan.js b/lib/middleware/plan.js similarity index 100% rename from lib/middleware/_shared/plan.js rename to lib/middleware/plan.js diff --git a/lib/middleware/_shared/plus.js b/lib/middleware/plus.js similarity index 100% rename from lib/middleware/_shared/plus.js rename to lib/middleware/plus.js diff --git a/lib/middleware/select.js b/lib/middleware/select.js index 8281230..e86be54 100644 --- a/lib/middleware/select.js +++ b/lib/middleware/select.js @@ -1,4 +1,4 @@ -var helpers = require("./util/helpers") +var helpers = require("../util/helpers") var cutto = require("./cut/cutto") var interactive = require("./cut/interactive.js") diff --git a/lib/middleware/_shared/ssl.js b/lib/middleware/ssl.js similarity index 100% rename from lib/middleware/_shared/ssl.js rename to lib/middleware/ssl.js diff --git a/lib/middleware/_shared/teardown.js b/lib/middleware/teardown.js similarity index 100% rename from lib/middleware/_shared/teardown.js rename to lib/middleware/teardown.js diff --git a/lib/middleware/_shared/token.js b/lib/middleware/token.js similarity index 100% rename from lib/middleware/_shared/token.js rename to lib/middleware/token.js diff --git a/lib/middleware/_shared/whoami.js b/lib/middleware/whoami.js similarity index 100% rename from lib/middleware/_shared/whoami.js rename to lib/middleware/whoami.js diff --git a/lib/surge.js b/lib/surge.js index b65a99c..7bda811 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -1,55 +1,61 @@ -//var middleware = require('./middleware') +// load help first so we can display and exit quickly var help = require('./middleware/help') -var skin = require('./middleware/util/skin.js') + +// modules var read = require("read") var minimist = require('minimist') -var whitelist = require("./middleware/_shared/whitelist") -var endpoint = require("./middleware/_shared/endpoint") -var pkg = require("./middleware/_shared/pkg") -var version = require("./middleware/_shared/version") -var welcome = require("./middleware/_shared/welcome") -var creds = require("./middleware/_shared/creds") -var whoami = require("./middleware/_shared/whoami") -var tokencheck = require("./middleware/_shared/tokencheck") -var email = require("./middleware/_shared/email") +// utils +var helpers = require('./util/helpers') +var skin = require('./util/skin.js') + +// mini-libs that return middleware var auth = require("./middleware/_shared/auth") -var logout = require("./middleware/_shared/logout") -var project = require("./middleware/_shared/project") -var size = require("./middleware/_shared/size") -var domain = require("./middleware/_shared/domain") -var protocol = require("./middleware/_shared/protocol") -var deploy = require("./middleware/_shared/deploy") -var domainOrSilent = require("./middleware/_shared/domainOrSilent") -var pemOrSilent = require("./middleware/_shared/pemOrSilent") -var ipaddress = require("./middleware/_shared/ipaddress") -var login = require("./middleware/_shared/login") -var shorthand = require("./middleware/_shared/shorthand") -var list = require("./middleware/_shared/list") - -var token = require("./middleware/_shared/token") -var teardown = require("./middleware/_shared/teardown") var discovery = require("./middleware/_shared/discovery") -var plus = require("./middleware/_shared/plus") -var subscription = require("./middleware/_shared/subscription") -var plans = require("./middleware/_shared/plans") -var plan = require("./middleware/_shared/plan") -var payment = require("./middleware/_shared/payment") -var card = require("./middleware/_shared/card") -var setcard = require("./middleware/_shared/setcard") -var subscribe = require("./middleware/_shared/subscribe") -var ssl = require("./middleware/_shared/ssl") -var log = require("./middleware/_shared/log") - +// middleware +var whitelist = require("./middleware/_shared/_whitelist") +var endpoint = require("./middleware/_shared/_endpoint") +var pkg = require("./middleware/_shared/_pkg") +var version = require("./middleware/_shared/_version") +var welcome = require("./middleware/_shared/_welcome") +var creds = require("./middleware/_shared/_creds") +var tokencheck = require("./middleware/_shared/_tokencheck") +var email = require("./middleware/_shared/_email") +var project = require("./middleware/_shared/_project") +var size = require("./middleware/_shared/_size") +var domain = require("./middleware/_shared/_domain") +var protocol = require("./middleware/_shared/_protocol") +var domainOrSilent = require("./middleware/_shared/_domainOrSilent") +var pemOrSilent = require("./middleware/_shared/_pemOrSilent") +var ipaddress = require("./middleware/_shared/_ipaddress") +var shorthand = require("./middleware/_shared/_shorthand") +var subscription = require("./middleware/_shared/_subscription") +var plans = require("./middleware/_shared/_plans") +var payment = require("./middleware/_shared/_payment") +var setcard = require("./middleware/_shared/_setcard") +var subscribe = require("./middleware/_shared/_subscribe") +var log = require("./middleware/_shared/_log") + +// also middleware but contains main functionality for command +var logout = require("./middleware/logout") +var login = require("./middleware/login") +var whoami = require("./middleware/whoami") +var deploy = require("./middleware/deploy") +var list = require("./middleware/list") +var token = require("./middleware/token") +var teardown = require("./middleware/teardown") +var plus = require("./middleware/plus") +var plan = require("./middleware/plan") +var card = require("./middleware/_shared/_card") +var ssl = require("./middleware/ssl") var select = require("./middleware/select") var yankrev = require("./middleware/yankrev") var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") -var helpers = require('./middleware/util/helpers') diff --git a/lib/middleware/util/creds.js b/lib/util/creds.js similarity index 100% rename from lib/middleware/util/creds.js rename to lib/util/creds.js diff --git a/lib/middleware/util/helpers.js b/lib/util/helpers.js similarity index 99% rename from lib/middleware/util/helpers.js rename to lib/util/helpers.js index 7c21e7a..44d4fe7 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/util/helpers.js @@ -8,7 +8,7 @@ var urlAddy = require("url-parse-as-address") var read = require("read") var isDomain = require("is-domain") var s = 0 -var pkg = require("../../../package.json") +var pkg = require("../../package.json") exports.read = read diff --git a/lib/middleware/util/skin.js b/lib/util/skin.js similarity index 100% rename from lib/middleware/util/skin.js rename to lib/util/skin.js diff --git a/lib/middleware/util/table-revision.js b/lib/util/table-revision.js similarity index 100% rename from lib/middleware/util/table-revision.js rename to lib/util/table-revision.js From 8ef79192262e8bc7b51c999dfa887bd257cffdd8 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 21 Dec 2019 09:38:15 -0800 Subject: [PATCH 098/214] adding new commands for revisions --- lib/middleware/cut/index.js | 18 ------ lib/middleware/cut/interactive.js | 4 +- lib/middleware/cutover.js | 15 ++++- lib/middleware/list.js | 2 +- lib/util/helpers.js | 101 +++++++++++++++++++++++++++++- 5 files changed, 113 insertions(+), 27 deletions(-) delete mode 100644 lib/middleware/cut/index.js diff --git a/lib/middleware/cut/index.js b/lib/middleware/cut/index.js deleted file mode 100644 index 9fea8ec..0000000 --- a/lib/middleware/cut/index.js +++ /dev/null @@ -1,18 +0,0 @@ - -var instructions = require("./instructions.js") -var interactive = require("./interactive.js") -var cutto = require("./cutto.js") - -module.exports = function(req, next){ - console.log(req.argv["_"]) - - - if (req.argv["_"].length === 0) { - return instructions(req, next) - } else if (req.argv["_"].length === 1) { - return interactive(req, next) - } else if (req.argv["_"].length === 2) { - return cutto(req, next) - } - -} diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js index 0a955a6..ca6655c 100644 --- a/lib/middleware/cut/interactive.js +++ b/lib/middleware/cut/interactive.js @@ -43,9 +43,7 @@ module.exports = function(req, next){ } var indexOfCurrent = 0 - - - var choices = list.map(choice) + var choices = list.map(choice) var args = { type: 'list', diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index f386623..9077b71 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -6,9 +6,20 @@ var interactive = require("./cut/interactive.js") module.exports = function(req, next){ if (req.argv.i){ - return interactive(req, next) + helpers.revisionSelector(req, function(errors, answers){ + if (!answers) return next() + + if (answers.revision.current){ + helpers.trunc("No change".green + " - Selected revision is already current".grey ) + return next() + } else { + return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + } + + }) } else { - return cutto(req, next) + helpers.space() + return helpers.cutto(req.argv["_"][0], req.argv["_"][1], next) } } \ No newline at end of file diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 8878b04..b76c7fa 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -62,7 +62,7 @@ module.exports = function(req, next){ var listSingleProject = function(){ var options = { - 'url': url.resolve(req.endpoint.format(), '/list/' + req.argv["_"][0]), + 'url': url.resolve(req.endpoint.format(), req.argv["_"][0] + '/list'), 'method': 'get', 'auth': { 'user': "token", diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 44d4fe7..7946b52 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -10,6 +10,12 @@ var isDomain = require("is-domain") var s = 0 var pkg = require("../../package.json") +var url = require("url") +var Table = require("cli-table3") +var inquirer = require("inquirer") + +var tableRevisions = require("./table-revision.js") + exports.read = read @@ -91,9 +97,37 @@ exports.stacktrace = function(str, options){ return context } -var cutto = exports.cutto = function(domain, rev, callback){ - trunc("cut "+ domain.underline +" to " + rev) - callback() +var switchRevision = exports.switchRevision = function(domain, rev, callback){ + var options = { + 'url': url.resolve(endpoint.format(), domain + "/cutover"), + 'method': 'put', + 'headers': { version: pkg.version }, + 'form': { rev: rev }, + 'auth': { + 'user': "token", + 'pass': pass || "", + 'sendImmediately': true + } + } + request(options, function(e, r, obj){ + if (e) throw e + + if (r.statusCode == 200){ + return callback(null, JSON.parse(obj)) + } else if (r.statusCode == 417){ + space() + trunc("Aborted".yellow + " - your client requires upgrade".grey) + space() + process.exit(1) + } else if (r.statusCode == 503){ + space() + trunc("Error".red + " - Deployment endpoint temporarily unreachable".grey) + space() + process.exit(1) + }else{ + return callback(JSON.parse(obj)) + } + }) } @@ -447,6 +481,67 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.revisionSelector = function(req, callback){ + + var options = { + 'url': url.resolve(req.endpoint.format(), req.argv["_"][0] + '/list'), + 'method': 'get', + 'auth': { + 'user': "token", + 'pass': req.creds.token, + 'sendImmediately': true + } + } + + request(options, function(e, r, obj){ + if (e) throw e + // TODO: handle 410 + + var list = JSON.parse(obj) + + if (list.length == 0){ + space() + trunc("Empty".blue + (" - There are no revisions for " + req.argv["_"][0]).grey) + return callback(null, null) + } else { + + var table = tableRevisions(req.argv["_"][0], list) + var rows = table.toString().split("\n") + + var choice = function(revision, i){ + return { + short: " ", + value: revision, + name: rows[i] + } + } + + var indexOfCurrent = 0 + var choices = list.map(choice) + + var args = { + type: 'list', + name: 'revision', + default: indexOfCurrent, + choices: choices, + pageSize: 8, + separator: true, + message: ' ' + } + + inquirer.prompt([args]).then(function (answers) { + if (answers.revision.current){ + trunc("No change".green + " - Selected revision is already current".grey ) + return next() + } else { + return callback(null, answers) + //return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + } + }) + } + }) +} + exports.validDomain = function(domain) { if (domain && (isDomain(domain) === true || isDomain(urlAddy(domain).host) === true)) { return true From 8bb95d05d9ef30b779c3686d5b0eaa49f3fddab0 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 18 Feb 2020 02:17:04 -0800 Subject: [PATCH 099/214] integrated regions payload --- lib/middleware/deploy.js | 13 ++++++++++--- lib/util/helpers.js | 15 +++++++++++++++ lib/util/table-regions.js | 26 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 lib/util/table-regions.js diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 7d88ea5..b3ded10 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -163,10 +163,17 @@ module.exports = function(req, next){ } else if (payload.hasOwnProperty("type") && payload.type === "ip") { + // req.success = true + // if (payload.data) { + // helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) + // } + } else + + if (payload.hasOwnProperty("type") && payload.type === "regionInfo") { req.success = true - if (payload.data) { - helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) - } + //helpers.log(helpers.smart("regions:").grey + " " + Object.keys(payload.regions).join(", ")) + helpers.displayRegions(payload) + } else diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 7946b52..009e968 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -15,6 +15,7 @@ var Table = require("cli-table3") var inquirer = require("inquirer") var tableRevisions = require("./table-revision.js") +var tableRegions = require("./table-regions.js") exports.read = read @@ -481,6 +482,20 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.displayRegions = function(payload){ + var table = tableRegions(payload) + var rows = table.toString().split("\n") + + //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) + space() + //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) + //log(" Origin regions…".grey) + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) +} + exports.revisionSelector = function(req, callback){ var options = { diff --git a/lib/util/table-regions.js b/lib/util/table-regions.js new file mode 100644 index 0000000..9076ae6 --- /dev/null +++ b/lib/util/table-regions.js @@ -0,0 +1,26 @@ + +var Table = require("cli-table3") + +module.exports = function(payload){ + + var table = new Table({ + head:["Region".grey, "IP".grey, "Country".grey, "City".grey], + style: { + 'compact': true, + 'padding-left': 3, + 'padding-right': 3, + } + }) + + var keys = Object.keys(payload.regions) + var rows = [] + + keys.forEach(function(key){ + var val = payload.regions[key] + table.push([(key + "." + payload.nsDomain), val.ip, { hAlign: "center", content: val.country }, val.city]) + }) + + return table + +} + \ No newline at end of file From c1b016b6a56dc10240f944862625998b7d5a2302 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 21 Feb 2020 21:14:03 -0800 Subject: [PATCH 100/214] adds surge-sdk and rollfoe rollback commands --- lib/middleware/_shared/_welcome.js | 1 + lib/middleware/rollback.js | 37 +++++++++++++++++++++++++++++ lib/middleware/rollfore.js | 37 +++++++++++++++++++++++++++++ lib/surge.js | 38 ++++++++++++++++++++++++++++++ lib/util/helpers.js | 23 ++++++++++++++++++ 5 files changed, 136 insertions(+) diff --git a/lib/middleware/_shared/_welcome.js b/lib/middleware/_shared/_welcome.js index 3ea770d..e1ccc9c 100644 --- a/lib/middleware/_shared/_welcome.js +++ b/lib/middleware/_shared/_welcome.js @@ -3,6 +3,7 @@ var helpers = require("../../util/helpers.js") module.exports = function(req, next){ if (req.creds == null) { + helpers.space() helpers.trunc(("Welcome to " + (req.config.name || "Surge").underline + "!").blue + (" (" + req.config.platform +")").grey) } diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index e69de29..efd857a 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -0,0 +1,37 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req["argv"]["_"][0] + + sdk.rollback(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 201 + var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") + helpers.space() + if (success){ + helpers.log(" ⟲ Rollback".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ⟲ Rollback".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) + +} \ No newline at end of file diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index e69de29..0d1452f 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -0,0 +1,37 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req["argv"]["_"][0] + + sdk.rollfore(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 201 + var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") + helpers.space() + if (success){ + helpers.log(" ⟳ Forward".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ⟳ Forward".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) + +} \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index 7bda811..01d2ad3 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -272,6 +272,44 @@ module.exports = function(config){ } } + surge.rollback = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, authInfo, postAuth, + rollback, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.rollfore = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, authInfo, postAuth, + rollfore, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.switch = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 009e968..5cd9c63 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -482,6 +482,20 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.displayRevisionBasicInfo = function(revision, domain){ + space() + log((" " + [revision.rev, domain].join(".").underline).grey) + log((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) + log((" " + revision.email).grey) + space() +} + +exports.displayRevision = function(payload){ + space() + log(" Promoted revision ".grey + payload.revision.rev + " to production.".grey) + space() +} + exports.displayRegions = function(payload){ var table = tableRegions(payload) var rows = table.toString().split("\n") @@ -494,6 +508,7 @@ exports.displayRegions = function(payload){ rows.forEach(function(row, i){ log(" ", row.grey) }) + space() } exports.revisionSelector = function(req, callback){ @@ -565,3 +580,11 @@ exports.validDomain = function(domain) { } } +exports.defaults = { + 404: function(e, r, b){ + space() + trunc("Error".red + " - Project Not Found".grey) + space() + process.exit(1) + } +} \ No newline at end of file From c2bc187c8fc3c0789e61558540a3ac08762ba9bc Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 29 Feb 2020 00:43:53 -0800 Subject: [PATCH 101/214] cutover implemented --- lib/middleware/_shared/_ipaddress.js | 18 +- lib/middleware/_shared/_whitelist.js | 4 +- lib/middleware/cutover.js | 33 +- lib/middleware/deploy.js | 473 +++++++++++---------------- lib/middleware/list.js | 17 +- lib/middleware/whoami.js | 2 +- lib/surge.js | 8 +- 7 files changed, 243 insertions(+), 312 deletions(-) diff --git a/lib/middleware/_shared/_ipaddress.js b/lib/middleware/_shared/_ipaddress.js index 767426c..91d2e87 100644 --- a/lib/middleware/_shared/_ipaddress.js +++ b/lib/middleware/_shared/_ipaddress.js @@ -1,14 +1,14 @@ module.exports = function(req, next){ - if (req.success === true) { - console.log() - console.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) - console.log() - } else { - console.log() - console.log(" Error".red + " - Deployment failed. ".grey) - console.log() - } + // if (req.success === true) { + // console.log() + // console.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) + // console.log() + // } else { + // console.log() + // console.log(" Error".red + " - Deployment failed. ".grey) + // console.log() + // } return next() } \ No newline at end of file diff --git a/lib/middleware/_shared/_whitelist.js b/lib/middleware/_shared/_whitelist.js index 4970c7e..73ec554 100644 --- a/lib/middleware/_shared/_whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -3,7 +3,7 @@ var helpers = require("../../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform - var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; + var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; var args = []; for (param in req.argv) { @@ -14,7 +14,7 @@ module.exports = function(req, next){ if (filteredSet.length != 0) { helpers.log() - helpers.trunc("Aborted - `" + filteredSet[0] + "` is not a surge command.").hr() + helpers.trunc("Aborted".yellow + ` - \`${ filteredSet[0] }\` is not a surge argument.`.grey).hr() } else { return next() } diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 9077b71..e0956f0 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -3,7 +3,17 @@ var helpers = require("../util/helpers") var cutto = require("./cut/cutto") var interactive = require("./cut/interactive.js") +var surgeSDK = require("surge-sdk") + module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] if (req.argv.i){ helpers.revisionSelector(req, function(errors, answers){ @@ -19,7 +29,28 @@ module.exports = function(req, next){ }) } else { helpers.space() - return helpers.cutto(req.argv["_"][0], req.argv["_"][1], next) + sdk.cutover(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 201 + var revDomain = [response.revision.rev, domain].join(".") + helpers.space() + if (success){ + helpers.log(" ⤮ Cutover".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ⤮ Cutover".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) } } \ No newline at end of file diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index b3ded10..f1f16d6 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -1,349 +1,242 @@ -var fs = require("fs") -var request = require("request") -var helpers = require('../util/helpers') + +var helpers = require('../util/helpers') var localCreds = require("../util/creds.js") -var tar = require('tarr') -var zlib = require('zlib') -var fsReader = require('surge-fstream-ignore') -var surge = require('../surge') +var surge = require('../surge') +var surgeSDK = require("surge-sdk") var ProgressBar = require("progress") -var split = require("split") -var url = require("url") -var ignore = require("surge-ignore") module.exports = function(req, next){ - req.success = false; + + var progress = {} + var ts = new Date().toJSON() + + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + /** - * Some useful metadata + * progress + * + * payload includes upload progress + * */ - var headers = { + sdk.publish(req.project, req.domain, { + "user":"token", + "pass": req.creds.token + }, { "version" : req.pkg.version, "file-count": req.fileCount, - "cmd": req.config.cmd, "project-size": req.projectSize, - "timestamp": new Date().toJSON() - } + "cmd": req.config.cmd, + "timestamp": ts, + "stage": req.argv.s, + "message": req.argv.m, + "add": req.argv.a, + "rem": req.argv.r, + "ssl": req.ssl + }) /** - * Collaborators to add + * progress + * + * payload includes upload progress + * */ - if (req.argv.a) - headers["add"] = req.argv.a; + .on("progress", function(payload){ + try { - /** - * Collaborators to remove - */ + // we have two different display for the progress bars + var displays = { + "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' + } - if (req.argv.r) - headers["rem"] = req.argv.r; + // create progress bar (if one doesnt exist) + progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { + complete: '=', incomplete: ' ', width: 20, total: payload.total + }) + // clear file name on last update + var file = payload.written >= payload.total ? "" : payload.file - /** - * Perform build on server - */ + // refresh view + progress[payload.id].update(payload.written / payload.total, { file: file }) - if (req.argv.build) - headers["build"] = req.argv.build; + } catch(e){} + + }) /** - * Force Protocol? + * regionInfo + * + * payload includes information about surge edgenode regions + * + * { + * nsDomain: "surge.world", + * regions: { + * "yyz":{ "ip": "159.203.50.177", "country": "CA", "city": "Toronto" }, + * "jfk":{ "ip": "159.203.159.100", "country": "US", "city": "New York" }, + * "sfo":{ "ip": "138.197.235.123", "country": "US", "city": "San Francisco" }, + * "lhr":{ "ip": "46.101.67.123", "country": "GB", "city": "London" }, + * "ams":{ "ip": "188.166.132.94", "country": "NL", "city": "Amsterdam" }, + * "fra":{ "ip": "138.68.112.220", "country": "DE", "city": "Frankfurt" }, + * "sgp":{ "ip": "139.59.195.30", "country": "SG", "city": "Singapore" }, + * "blr":{ "ip": "139.59.50.135", "country": "IN", "city": "Bangalore" } + * } + * } + * */ - if (req.ssl !== null) - headers["ssl"] = req.ssl + .on("regionInfo", function(payload){ + helpers.displayRegions(payload) + }) - req.headers = headers /** - * Progress Bars - */ + * users + * + * payload includes list of collaborators + * + */ + + .on("users", function(payload){ + helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) + }) - var progress = {} + + /** + * cert + * + * payload includes information about SSL certificate + * + */ + + .on("cert", function(payload){ + try{ + helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + } catch(e){ + helpers.space() + helpers.log(helpers.smart("Error").red + (" - " + "please report error to support@surge.sh").grey) + helpers.space() + } + }) /** - * Our upload "data" handle + * collect + * + * payload includes information needed to subscribe to a plan that will then accept the upload + * */ - var tick = function(tick){ - //console.log("tick", tick.toString()) - - if (Object.keys(progress).length > 1) global.ponr = true + .on("collect", function(payload){ + var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey + helpers.log() + if (payload.hasOwnProperty("perks")) { + helpers.log(msg += "\n\n Includes...".blue) + payload.perks.forEach(function(perk){ helpers.log((" - " + perk).blue); }) + helpers.log() + } else { + helpers.log(msg) + } + req.plan = payload.plan.name + helpers.payment(req, payload.stripe_pk, payload.card)(function(paymentToken){ + sdk.subscribe({ + "plan": payload.plan.id, + "token": paymentToken, + "timestamp": ts + }, { "user": "token", "pass": req.creds.token }, function(errors, rsp){ + + }) + }) + }) - //try { - try { - var payload = JSON.parse(tick.toString()) - } catch(e) { - //console.log(e) - return; - } + /** + * unauthenticated + * + */ + .on("unauthenticated", function(payload){ + localCreds(req.argv.endpoint).set(null) + helpers.log() + helpers.trunc("Aborted".yellow + (" - local token has expired and cleared. please try again.").grey) + helpers.log() + process.exit(1) + }) - if (payload.hasOwnProperty("type") && payload.type === "error") { - console.log() - console.log() - helpers.log(" Processing Error:".yellow, payload.error.filename).log() - - console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno })) - helpers.log() - console.log(" ", payload.error.message) - - console.log() - process.exit(1) - req.status = req.status || "Compile Error" - } else - - if (payload.hasOwnProperty("type") && payload.type === "users") { - helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) - } else - - if (payload.hasOwnProperty("type") && payload.type === "collect") { - //console.log("payload:collect", payload) - var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey - - helpers.log() - if (payload.hasOwnProperty("perks")) { - helpers.log(msg += "\n\n Includes...".blue) - payload.perks.forEach(function(perk){ - helpers.log((" - " + perk).blue) - }) - helpers.log() - } else { - helpers.log(msg) - } - - req.plan = payload.plan.name - - helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ - - // can this be passed in? - var uri = url.resolve(req.endpoint, "subscription") - request({ - uri: uri, - method: "PUT", - auth: { - 'user': 'token', - 'pass': req.creds.token, - 'sendImmediately': true - }, - form: { - plan: payload.plan.id, - token: token, - timestamp: req.headers.timestamp - } - }, function(e,r,b){ - if (r.statusCode == 201 || r.statusCode == 200) { - //console.log("here") - if (token === null) console.log() - // var sub = JSON.parse(b) - // console.log(" plan:".grey, sub.plan.name) - } else { - console.log("ERROR") - } - }) - }) - - // prompt for user - } else - if (payload.hasOwnProperty("type") && payload.type === "cert") { - try{ - helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) - } catch(e){ - console.log("ERROR (please report error to support@surge.sh") - console.log(e) - } - } else - - if (payload.hasOwnProperty("type") && payload.type === "ip") { - // req.success = true - // if (payload.data) { - // helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) - // } - } else - - if (payload.hasOwnProperty("type") && payload.type === "regionInfo") { - req.success = true - //helpers.log(helpers.smart("regions:").grey + " " + Object.keys(payload.regions).join(", ")) - helpers.displayRegions(payload) - - } else - - - if (payload.hasOwnProperty("type") && payload.type === "event_registration") { - if (payload.data) { - console.log() - console.log((" " + payload.data.event.name + " is set!").bold) - - if (payload.data.event.start) - console.log(" start:".grey, payload.data.event.start) - - if (payload.data.event.end) - console.log(" end:".grey, payload.data.event.end) - - if (payload.data.event.website) - console.log(" website:".grey, payload.data.event.website) - - if (payload.data.event.email) - console.log(" email:".grey, payload.data.event.email) - - if (payload.data.event.twitter) - console.log(" twitter:".grey, payload.data.event.twitter) - } - } else - - if (payload.hasOwnProperty("type") && payload.type === "event_participant") { - - if (payload.data) { - console.log() - - // end time - var out = [" You are in ".grey + payload.data.event.name.bold + "!".grey] - if (payload.data.event.endTime) - out.push("Competition ends in ".grey + payload.data.event.endTime.toString().green) - - // output - console.log(out.join(" ")) - - // help bar - out = [" w: ".grey + payload.data.event.website + " e: ".grey + payload.data.event.email] - - // if (payload.data.event.website) - // console.log(" website:".grey, payload.data.event.website) - - // if (payload.data.event.email) - // console.log(" email:".grey, payload.data.event.email) - - if (payload.data.event.twitter) - out.push(" t: ".grey, payload.data.event.twitter) - - console.log(out.join("")) - } - } else - - - - if (payload.hasOwnProperty("type") && payload.type === "subscription") { - if (payload.data) { - //console.log(" plan:".grey, payload.data.plan.name) - } else { - //console.log(" plan:".grey, "Free") - } - } else { - try { - // we have two different display for the progress bars - var displays = { - "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, - "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' - } - - // create progress bar (if one doesnt exist) - progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { - complete: '=', - incomplete: ' ', - width: 20, - total: payload.total - }) - - // clear file name on last update - var file = payload.written >= payload.total - ? "" - : payload.file - - // refresh view - progress[payload.id].update(payload.written / payload.total, { file: file }) - } catch(e){ - //console.log(e) - } - } - // } catch(e) { - // console.log("CATCH", e) - // } - } + /** + * forbidden + * + */ - var verbose = function(line){ - console.log("N", line.toString()) - } + .on("forbidden", function(payload){ + helpers.log() + helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) + helpers.log() + process.exit(1) + }) /** - * Upload + * error (depricated) + * + * payload includes information needed to display compile errors to user + * */ - // create upload - var uri = url.resolve(req.endpoint, req.domain) - var handshake = request.put(uri, { headers: headers }) - - // apply basic auth - handshake.auth("token", req.creds.token, true) - - // catch errors - handshake.on('error', console.log) + .on("error", function(payload){ + console.log() + console.log() + helpers.log(" Processing Error:".yellow, payload.error.filename).log() + console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno })) + helpers.log() + console.log(" ", payload.error.message) + console.log() + req.status = req.status || "Compile Error" + process.exit(1) + }) - // split replies on new line - handshake.pipe(split()) - // output result - handshake.on("data", tick) + /** + * fail + * + * the deployment has failed + * + */ - // done - handshake.on("end", function(){ - if (req.success === true){ - return next() - } else { - helpers.log() - helpers.log() - helpers.log(" Error".red + " - Deployment did not succeed.".grey) - helpers.log() - process.exit(1) - } - + .on("fail", function(){ + console.log() + console.log() + helpers.log(" Error".red + " - Deployment did not succeed.".grey) + helpers.space() + process.exit(1) }) - handshake.on("response", function(rsp){ + /** + * success + * + * the deployment has failed + * + */ - if (rsp.statusCode == 403) { - helpers.log() - if(rsp.headers.hasOwnProperty("reason")){ - helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) - } else { - helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) - } - helpers.log() - process.exit(1) - } else if (rsp.statusCode == 401) { - localCreds(req.argv.endpoint).set(null) - helpers.log() - if(rsp.headers.hasOwnProperty("reason")){ - helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) - } else { - helpers.trunc("Aborted".yellow + " - local token has expired and cleared. please try again.") - } - helpers.log() - process.exit(1) - // console.log(rsp.statusCode) - } + .on("success", function(){ + helpers.space() + helpers.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) + helpers.space() + return next() }) - // Read Project - var project = fsReader({ 'path': req.project, ignoreFiles: [".surgeignore"] }) - - // we always ignore .git directory - project.addIgnoreRules(ignore) - - // chain all this together... - project - .pipe(tar.Pack()) - .pipe(zlib.Gzip()) - .pipe(handshake) } diff --git a/lib/middleware/list.js b/lib/middleware/list.js index b76c7fa..021bbd1 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -82,29 +82,34 @@ module.exports = function(req, next){ style: { 'padding-left': 0, 'padding-right': 1 } }) var lastcmd = "" + var terminalBreakpoint = 100 project = req.project if (list.length != 0) { list.forEach(function(revision){ if (revision.current){ - var perm = revision.rev ? (revision.rev + ".").blue.underline + req.project.blue.underline : "" + var perm = revision.rev ? (revision.rev + ".").yellow.underline + req.project.yellow.underline : "" var row = [ perm || project.domain.blue.underline, + revision.timeAgoInWords.blue.underline, revision.email.blue.underline, revision.fileCount.toString().blue.underline + " files".blue.underline, - revision.totalSize.toString().blue.underline + " bytes".blue.underline + //revision.totalSize.toString().blue.underline + " bytes".blue.underline, + revision.friendlySize.blue.underline ] + if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) } else { - var perm = revision.rev ? (revision.rev + ".").grey + req.project.grey : "" + var perm = revision.rev ? (revision.rev + ".").yellow + req.project.yellow : "" var row = [ perm || project.domain, + revision.timeAgoInWords.grey, revision.email.grey, revision.fileCount.toString().grey + " files".grey, - revision.totalSize.toString().grey + " bytes".grey + //revision.totalSize.toString().grey + " bytes".grey, + revision.friendlySize.grey ] + if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) } - - table.push(row) lastcmd = project.cmd }) diff --git a/lib/middleware/whoami.js b/lib/middleware/whoami.js index dc356ea..47fb0f1 100644 --- a/lib/middleware/whoami.js +++ b/lib/middleware/whoami.js @@ -22,7 +22,7 @@ module.exports = function(req, next){ } else { creds(req.endpoint).set(req.creds.email, null) helpers.space() - helpers.trunc("You are not Authenticated. It is not true. You are not authed. You are not!".grey) + helpers.trunc("Not Authenticated!".grey) helpers.space() process.exit() } diff --git a/lib/surge.js b/lib/surge.js index 01d2ad3..db104a8 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -103,9 +103,11 @@ module.exports = function(config){ d: 'domain', e: 'endpoint', a: 'add', - r: 'remove' + r: 'remove', + s: 'stage', + m: 'message' }, - default: { e: ep } + default: { e: ep, s: false } } var authInfo = function(req, next){ @@ -335,7 +337,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, - preAuth, creds, welcome, auth, postAuth, shorthand, + preAuth, creds, welcome, auth, postAuth, cutover, space ] return function(){ From f48073dd05c80809efee1891e275decb663f8072 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 4 Mar 2020 03:27:54 -0800 Subject: [PATCH 102/214] added discard call --- lib/middleware/discard.js | 58 +++++++++++++++++++++++++++++++++++++++ lib/surge.js | 22 ++++++++++++++- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 lib/middleware/discard.js diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js new file mode 100644 index 0000000..7ffa21a --- /dev/null +++ b/lib/middleware/discard.js @@ -0,0 +1,58 @@ + +var helpers = require("../util/helpers") +var cutto = require("./cut/cutto") +var interactive = require("./cut/interactive.js") + +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] + + if (req.argv.i){ + helpers.revisionSelector(req, function(errors, answers){ + if (!answers) return next() + + if (answers.revision.current){ + helpers.trunc("No change".green + " - Selected revision is already current".grey ) + return next() + } else { + return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + } + + }) + } else { + helpers.space() + sdk.delRevision(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ + if (error){ + helpers.space() + helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 200 + var revDomain = [response.revision.rev, domain].join(".") + helpers.space() + if (success){ + helpers.log(" ✂ Discarded".green + (" revision " + revDomain).grey) + helpers.space() + helpers.log(" ⤮ Cutover".green) + helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRegions(response) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + }else{ + helpers.log(" ✂ Discard".yellow) + helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + } + return next() + } + }) + } + +} \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index db104a8..1022304 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -55,6 +55,7 @@ var yankrev = require("./middleware/yankrev") var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") +var discard = require("./middleware/discard") @@ -134,7 +135,7 @@ module.exports = function(config){ "rollback", "rollfore", "cutover", - "yankrev", + "discard", "publish", "teardown", "select", @@ -350,6 +351,25 @@ module.exports = function(config){ } } + surge.discard = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + discard, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.select = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub From 5142958586562b78bc032725fca95b6355eef7df Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Mar 2020 00:14:43 -0800 Subject: [PATCH 103/214] cutover and discard functioning. rollback rollfore updated --- lib/middleware/cutover.js | 31 ++++++++++----------- lib/middleware/discard.js | 57 ++++++++++++++++++++++++++++++-------- lib/middleware/rollback.js | 2 +- lib/middleware/rollfore.js | 2 +- lib/util/helpers.js | 8 ++++-- 5 files changed, 66 insertions(+), 34 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index e0956f0..9c2d585 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -13,20 +13,18 @@ module.exports = function(req, next){ }) var domain = req.argv["_"][0] - var rev = req.argv["_"][1] + var rev = req.argv["_"][1] || null if (req.argv.i){ - helpers.revisionSelector(req, function(errors, answers){ - if (!answers) return next() - - if (answers.revision.current){ - helpers.trunc("No change".green + " - Selected revision is already current".grey ) - return next() - } else { - return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) - } - - }) + // helpers.revisionSelector(req, function(errors, answers){ + // if (!answers) return next() + // if (answers.revision.current){ + // helpers.trunc("No change".green + " - Selected revision is already current".grey ) + // return next() + // } else { + // return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + // } + // }) } else { helpers.space() sdk.cutover(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ @@ -36,17 +34,16 @@ module.exports = function(req, next){ helpers.space() }else{ var success = response.status && response.status == 201 - var revDomain = [response.revision.rev, domain].join(".") helpers.space() if (success){ helpers.log(" ⤮ Cutover".green) - helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + [response.revision.rev, response.domain].join(".").underline).grey) }else{ helpers.log(" ⤮ Cutover".yellow) - helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.displayRevisionBasicInfo(response.revision, response.domain) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + [response.revision.rev, response.domain].join(".").underline).grey) } return next() } diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index 7ffa21a..bf04190 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -13,7 +13,7 @@ module.exports = function(req, next){ }) var domain = req.argv["_"][0] - var rev = req.argv["_"][1] + var rev = req.argv["_"][1] || null if (req.argv.i){ helpers.revisionSelector(req, function(errors, answers){ @@ -35,20 +35,53 @@ module.exports = function(req, next){ helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ - var success = response.status && response.status == 200 - var revDomain = [response.revision.rev, domain].join(".") - helpers.space() - if (success){ - helpers.log(" ✂ Discarded".green + (" revision " + revDomain).grey) + + if (response.status && response.status == 200){ + // display discard information + helpers.space() + helpers.log(" ✂ Discarded".green + (" " + [response.rev, response.domain].join(".").underline).grey) + helpers.space() + + // display change + if (response.uncached.change){ + helpers.space() + if (response.uncached.change == "rollfore"){ + helpers.log(" ⟳ Rollfore".green) + helpers.displayRevisionBasicInfo(response.revision, response.domain) + } else if (response.uncached.change == "rollback"){ + helpers.log(" ⟲ Rollback".green) + helpers.displayRevisionBasicInfo(response.revision, response.domain) + } else if (response.uncached.change == "offline"){ + helpers.log(" ⤫ Offline".green) + } + helpers.space() + } + + // display regions helpers.space() - helpers.log(" ⤮ Cutover".green) - helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.space() + + if (response.uncached.change){ + helpers.space() + if (response.uncached.change == "rollfore"){ + var revDomain = [response.revision.rev, domain].join(".") + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled forward to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + } else if (response.uncached.change == "rollback"){ + var revDomain = [response.revision.rev, domain].join(".") + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled back to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + } else if (response.uncached.change == "offline"){ + helpers.log(" Done".green + (" - No revisions to serve. Project now offline.").grey) + } + helpers.space() + } else { + helpers.log(" Done".green + (" - " + response.domain.underline + " still serving " + [response.revision.rev, response.domain].join(".").underline).grey) + } + }else{ - helpers.log(" ✂ Discard".yellow) - helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.space() + helpers.log(" Unchanged".yellow + (" - No revisions discarded.").grey) + helpers.space() } return next() } diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index efd857a..3347a9d 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -26,7 +26,7 @@ module.exports = function(req, next){ helpers.displayRegions(response) helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) }else{ - helpers.log(" ⟲ Rollback".yellow) + helpers.log(" ⟲ Rollback (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) } diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index 0d1452f..b882a59 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -26,7 +26,7 @@ module.exports = function(req, next){ helpers.displayRegions(response) helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) }else{ - helpers.log(" ⟳ Forward".yellow) + helpers.log(" ⟳ Forward (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) } diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 5cd9c63..8f5041c 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -484,9 +484,11 @@ exports.payment = function(req, stripe_pk, existing){ exports.displayRevisionBasicInfo = function(revision, domain){ space() - log((" " + [revision.rev, domain].join(".").underline).grey) - log((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) - log((" " + revision.email).grey) + trunc((" " + [revision.rev, domain].join(".").underline).grey) + trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) + trunc((" " + revision.email).grey) + // trunc((" " + [revision.rev, domain].join(".").underline).yellow + " " + revision.email.grey) + // trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) space() } From 78dc0d5a6f0b5685f7e4cef8ac4e89ecd5d7c4cd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 9 Mar 2020 03:40:12 -0700 Subject: [PATCH 104/214] adds invite command --- lib/middleware/invite.js | 48 +++++++++++++++++++++++++++ lib/middleware/yankrev.js | 0 lib/surge.js | 68 ++++++++++++++++++++++++++++++++++++--- lib/util/helpers.js | 32 +++++++++++++++++- 4 files changed, 143 insertions(+), 5 deletions(-) create mode 100644 lib/middleware/invite.js delete mode 100644 lib/middleware/yankrev.js diff --git a/lib/middleware/invite.js b/lib/middleware/invite.js new file mode 100644 index 0000000..21918f8 --- /dev/null +++ b/lib/middleware/invite.js @@ -0,0 +1,48 @@ + +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var args = helpers.parseDomainsEmails(req.argv["_"]) + + // helpers.displayInvites({ + // invites: [ + // { + // domain: 'test.lvh.me', + // email: 'brock@sintaxi.com', + // invite: 'surge.lvh.me/invite/19d7e810-493b-4b9c-8020-46e7c3712028', + // status: 'success' + // }, + // { + // domain: 'test.lvh.me', + // email: 'brock@sintaxi.com', + // invite: 'surge.lvh.me/invite/19d7e810-493b-4b9c-8020-46e7c3712028', + // status: 'success' + // }, + // { + // domain: 'test.lvh.me', + // email: 'brock@sintaxi.com', + // invite: 'surge.lvh.me/invite/19d7e810-493b-4b9c-8020-46e7c3712028', + // status: 'success' + // } + // ], + // status: 202 + // }) + + sdk.invite(args.domains[0] || null, args, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + helpers.displayInvites(rsp) + return next() + } + }) + +} diff --git a/lib/middleware/yankrev.js b/lib/middleware/yankrev.js deleted file mode 100644 index e69de29..0000000 diff --git a/lib/surge.js b/lib/surge.js index 1022304..71ef4d9 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -51,13 +51,13 @@ var plan = require("./middleware/plan") var card = require("./middleware/_shared/_card") var ssl = require("./middleware/ssl") var select = require("./middleware/select") -var yankrev = require("./middleware/yankrev") var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") var discard = require("./middleware/discard") - - +var invite = require("./middleware/invite") +var revoke = require("./middleware/revoke") +var encrypt = require("./middleware/encrypt") @@ -143,7 +143,10 @@ module.exports = function(config){ "plus", "ssl", "plan", - "card" + "card", + "invite", + "revoke", + "encrypt" ] if (commands.indexOf(cmd) !== -1) { @@ -491,6 +494,63 @@ module.exports = function(config){ } } + surge.invite = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + invite, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.revoke = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + revoke, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.encrypt = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + encrypt, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + return surge } diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 8f5041c..f197f3a 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -16,6 +16,7 @@ var inquirer = require("inquirer") var tableRevisions = require("./table-revision.js") var tableRegions = require("./table-regions.js") +var tables = require("./tables.js") exports.read = read @@ -513,6 +514,15 @@ exports.displayRegions = function(payload){ space() } +exports.displayInvites = function(payload){ + var table = tables.invites(payload.invites) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ + log(row.grey) + }) + space() +} + exports.revisionSelector = function(req, callback){ var options = { @@ -582,10 +592,30 @@ exports.validDomain = function(domain) { } } +exports.parseDomainsEmails = function(args){ + var domains = [] + var emails = [] + + args.forEach(function(item){ + if (item.indexOf("@") !== -1){ + emails.push(item) + } else { + if (item.split(".").length > 1){ + domains.push(item) + } + } + }) + + return { + domains: domains, + emails: emails + } +} + exports.defaults = { 404: function(e, r, b){ space() - trunc("Error".red + " - Project Not Found".grey) + trunc("Error".red + " - Not Found".grey) space() process.exit(1) } From 39ffa945ffc60699b9ee5dec1f9252d7ba73f40b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 7 Apr 2020 04:54:22 -0700 Subject: [PATCH 105/214] updates sdk calls --- lib/middleware/deploy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index f1f16d6..ec4e3a7 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -150,7 +150,7 @@ module.exports = function(req, next){ } req.plan = payload.plan.name helpers.payment(req, payload.stripe_pk, payload.card)(function(paymentToken){ - sdk.subscribe({ + sdk.plan({ "plan": payload.plan.id, "token": paymentToken, "timestamp": ts From ec6971858bfb906f9de27c348e56e275cff3f270 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 7 Apr 2020 04:55:13 -0700 Subject: [PATCH 106/214] adds files --- lib/middleware/deploy-old.js | 349 +++++++++++++++++++++++++++++++++++ lib/middleware/encrypt.js | 19 ++ lib/middleware/revoke.js | 24 +++ lib/util/table-ns.js | 28 +++ lib/util/tables.js | 48 +++++ 5 files changed, 468 insertions(+) create mode 100644 lib/middleware/deploy-old.js create mode 100644 lib/middleware/encrypt.js create mode 100644 lib/middleware/revoke.js create mode 100644 lib/util/table-ns.js create mode 100644 lib/util/tables.js diff --git a/lib/middleware/deploy-old.js b/lib/middleware/deploy-old.js new file mode 100644 index 0000000..b3ded10 --- /dev/null +++ b/lib/middleware/deploy-old.js @@ -0,0 +1,349 @@ +var fs = require("fs") +var request = require("request") +var helpers = require('../util/helpers') +var localCreds = require("../util/creds.js") +var tar = require('tarr') +var zlib = require('zlib') +var fsReader = require('surge-fstream-ignore') +var surge = require('../surge') +var ProgressBar = require("progress") +var split = require("split") +var url = require("url") +var ignore = require("surge-ignore") + + +module.exports = function(req, next){ + req.success = false; + + /** + * Some useful metadata + */ + + var headers = { + "version" : req.pkg.version, + "file-count": req.fileCount, + "cmd": req.config.cmd, + "project-size": req.projectSize, + "timestamp": new Date().toJSON() + } + + + /** + * Collaborators to add + */ + + if (req.argv.a) + headers["add"] = req.argv.a; + + + /** + * Collaborators to remove + */ + + if (req.argv.r) + headers["rem"] = req.argv.r; + + + /** + * Perform build on server + */ + + if (req.argv.build) + headers["build"] = req.argv.build; + + + /** + * Force Protocol? + */ + + if (req.ssl !== null) + headers["ssl"] = req.ssl + + req.headers = headers + + /** + * Progress Bars + */ + + var progress = {} + + + /** + * Our upload "data" handle + */ + + var tick = function(tick){ + //console.log("tick", tick.toString()) + + if (Object.keys(progress).length > 1) global.ponr = true + + //try { + + try { + var payload = JSON.parse(tick.toString()) + } catch(e) { + //console.log(e) + return; + } + + + if (payload.hasOwnProperty("type") && payload.type === "error") { + console.log() + console.log() + helpers.log(" Processing Error:".yellow, payload.error.filename).log() + + console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno })) + helpers.log() + console.log(" ", payload.error.message) + + console.log() + process.exit(1) + req.status = req.status || "Compile Error" + } else + + if (payload.hasOwnProperty("type") && payload.type === "users") { + helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) + } else + + if (payload.hasOwnProperty("type") && payload.type === "collect") { + //console.log("payload:collect", payload) + var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey + + helpers.log() + if (payload.hasOwnProperty("perks")) { + helpers.log(msg += "\n\n Includes...".blue) + payload.perks.forEach(function(perk){ + helpers.log((" - " + perk).blue) + }) + helpers.log() + } else { + helpers.log(msg) + } + + req.plan = payload.plan.name + + helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ + + // can this be passed in? + var uri = url.resolve(req.endpoint, "subscription") + request({ + uri: uri, + method: "PUT", + auth: { + 'user': 'token', + 'pass': req.creds.token, + 'sendImmediately': true + }, + form: { + plan: payload.plan.id, + token: token, + timestamp: req.headers.timestamp + } + }, function(e,r,b){ + if (r.statusCode == 201 || r.statusCode == 200) { + //console.log("here") + if (token === null) console.log() + // var sub = JSON.parse(b) + // console.log(" plan:".grey, sub.plan.name) + } else { + console.log("ERROR") + } + }) + }) + + // prompt for user + } else + if (payload.hasOwnProperty("type") && payload.type === "cert") { + try{ + helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + } catch(e){ + console.log("ERROR (please report error to support@surge.sh") + console.log(e) + } + } else + + if (payload.hasOwnProperty("type") && payload.type === "ip") { + // req.success = true + // if (payload.data) { + // helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) + // } + } else + + if (payload.hasOwnProperty("type") && payload.type === "regionInfo") { + req.success = true + //helpers.log(helpers.smart("regions:").grey + " " + Object.keys(payload.regions).join(", ")) + helpers.displayRegions(payload) + + } else + + + if (payload.hasOwnProperty("type") && payload.type === "event_registration") { + if (payload.data) { + console.log() + console.log((" " + payload.data.event.name + " is set!").bold) + + if (payload.data.event.start) + console.log(" start:".grey, payload.data.event.start) + + if (payload.data.event.end) + console.log(" end:".grey, payload.data.event.end) + + if (payload.data.event.website) + console.log(" website:".grey, payload.data.event.website) + + if (payload.data.event.email) + console.log(" email:".grey, payload.data.event.email) + + if (payload.data.event.twitter) + console.log(" twitter:".grey, payload.data.event.twitter) + } + } else + + if (payload.hasOwnProperty("type") && payload.type === "event_participant") { + + if (payload.data) { + console.log() + + // end time + var out = [" You are in ".grey + payload.data.event.name.bold + "!".grey] + if (payload.data.event.endTime) + out.push("Competition ends in ".grey + payload.data.event.endTime.toString().green) + + // output + console.log(out.join(" ")) + + // help bar + out = [" w: ".grey + payload.data.event.website + " e: ".grey + payload.data.event.email] + + // if (payload.data.event.website) + // console.log(" website:".grey, payload.data.event.website) + + // if (payload.data.event.email) + // console.log(" email:".grey, payload.data.event.email) + + if (payload.data.event.twitter) + out.push(" t: ".grey, payload.data.event.twitter) + + console.log(out.join("")) + } + } else + + + + if (payload.hasOwnProperty("type") && payload.type === "subscription") { + if (payload.data) { + //console.log(" plan:".grey, payload.data.plan.name) + } else { + //console.log(" plan:".grey, "Free") + } + } else { + try { + // we have two different display for the progress bars + var displays = { + "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' + } + + // create progress bar (if one doesnt exist) + progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { + complete: '=', + incomplete: ' ', + width: 20, + total: payload.total + }) + + // clear file name on last update + var file = payload.written >= payload.total + ? "" + : payload.file + + // refresh view + progress[payload.id].update(payload.written / payload.total, { file: file }) + } catch(e){ + //console.log(e) + } + + } + // } catch(e) { + // console.log("CATCH", e) + // } + } + + var verbose = function(line){ + console.log("N", line.toString()) + } + + + /** + * Upload + */ + + // create upload + var uri = url.resolve(req.endpoint, req.domain) + var handshake = request.put(uri, { headers: headers }) + + // apply basic auth + handshake.auth("token", req.creds.token, true) + + // catch errors + handshake.on('error', console.log) + + // split replies on new line + handshake.pipe(split()) + + // output result + handshake.on("data", tick) + + // done + handshake.on("end", function(){ + if (req.success === true){ + return next() + } else { + helpers.log() + helpers.log() + helpers.log(" Error".red + " - Deployment did not succeed.".grey) + helpers.log() + process.exit(1) + } + + }) + + + handshake.on("response", function(rsp){ + + if (rsp.statusCode == 403) { + helpers.log() + if(rsp.headers.hasOwnProperty("reason")){ + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) + } else { + helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) + } + helpers.log() + process.exit(1) + } else if (rsp.statusCode == 401) { + localCreds(req.argv.endpoint).set(null) + helpers.log() + if(rsp.headers.hasOwnProperty("reason")){ + helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) + } else { + helpers.trunc("Aborted".yellow + " - local token has expired and cleared. please try again.") + } + helpers.log() + process.exit(1) + // console.log(rsp.statusCode) + } + }) + + // Read Project + var project = fsReader({ 'path': req.project, ignoreFiles: [".surgeignore"] }) + + // we always ignore .git directory + project.addIgnoreRules(ignore) + + // chain all this together... + project + .pipe(tar.Pack()) + .pipe(zlib.Gzip()) + .pipe(handshake) + +} diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js new file mode 100644 index 0000000..8bf467b --- /dev/null +++ b/lib/middleware/encrypt.js @@ -0,0 +1,19 @@ + +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + helpers.log("ENCRYPT:", req.argv) + helpers.log({ user: "token", pass: req.creds.token }) + + sdk.encrypt(req.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + return next() + }) + +} \ No newline at end of file diff --git a/lib/middleware/revoke.js b/lib/middleware/revoke.js new file mode 100644 index 0000000..9fa5f6a --- /dev/null +++ b/lib/middleware/revoke.js @@ -0,0 +1,24 @@ + +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + helpers.log("REVOKE:", req.argv) + helpers.log({ user: "token", pass: req.creds.token }) + + sdk.revoke(req.argv["_"], { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + return next() + } + }) + +} diff --git a/lib/util/table-ns.js b/lib/util/table-ns.js new file mode 100644 index 0000000..fe8f4bc --- /dev/null +++ b/lib/util/table-ns.js @@ -0,0 +1,28 @@ + +var Table = require("cli-table3") + + +// returns a table +module.exports = function(message, length){ + var table = new Table({ + chars: { + 'mid': '', + 'left-mid': '', + 'mid-mid': '', + 'right-mid': '' + }, + style: { + 'padding-left': 3, + 'padding-right': 3 + } + }) + + table.push([{ colSpan:4, content: message }]) + + return table + +} + + + + \ No newline at end of file diff --git a/lib/util/tables.js b/lib/util/tables.js new file mode 100644 index 0000000..1b7bf54 --- /dev/null +++ b/lib/util/tables.js @@ -0,0 +1,48 @@ + +var Table = require("cli-table3") + +exports.invites = function(invites){ + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 1 + } + }) + + invites.forEach(function(invite){ + + var row = [ + //invite.domain.yellow, + invite.email.blue, + invite.invite.underline.grey + ] + + if (invite.status == "sent"){ + row.push(invite.status.green) + } else if (invite.status == "failed") { + row.push(invite.status.red) + }else{ + row.push(invite.status.yellow) + } + + table.push(row) + }) + + return table +} From e210f265f7bb729927d57d4f81e29ffe1b9c9d84 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 22 Apr 2020 02:46:48 -0700 Subject: [PATCH 107/214] changes delRevision to discard --- lib/middleware/discard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index bf04190..eca9b19 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -29,7 +29,7 @@ module.exports = function(req, next){ }) } else { helpers.space() - sdk.delRevision(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ + sdk.discard(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) From 4a1066c49fbe49af7dac99d5a02d8dca2b6a449e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 22 Apr 2020 04:43:23 -0700 Subject: [PATCH 108/214] cleanup publish output --- lib/middleware/_shared/_size.js | 1 + lib/middleware/_shared/auth.js | 2 +- lib/middleware/deploy.js | 4 ++-- lib/surge.js | 2 +- lib/util/helpers.js | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/middleware/_shared/_size.js b/lib/middleware/_shared/_size.js index 56984a3..8cf45da 100644 --- a/lib/middleware/_shared/_size.js +++ b/lib/middleware/_shared/_size.js @@ -30,6 +30,7 @@ module.exports = function(req, next){ if (!stats.isDirectory()) req.fileCount++ }) }).on("close", function(){ + helpers.log(helpers.smart('size:').grey + " " + req.fileCount + " files, " + humanFileSize(req.projectSize)) //helpers.log(req.fileCount + " files,", humanFileSize(req.projectSize)) next() }) diff --git a/lib/middleware/_shared/auth.js b/lib/middleware/_shared/auth.js index b20b944..e130b2a 100644 --- a/lib/middleware/_shared/auth.js +++ b/lib/middleware/_shared/auth.js @@ -11,7 +11,7 @@ module.exports = function(req, next, abort){ if (req.creds){ helpers.space() } - helpers.trunc("Login (or create surge account) by entering email & password.".grey) + helpers.trunc("Login or create surge account by entering email & password.".grey) helpers.space() helpers.loginForm(req, function(creds){ localCreds(req.endpoint).set(creds.email, creds.token) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index ec4e3a7..01be901 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -55,13 +55,13 @@ module.exports = function(req, next){ // we have two different display for the progress bars var displays = { - "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, + "upload": helpers.smart('upload:').grey + ' [:bar] :percent', "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' } // create progress bar (if one doesnt exist) progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { - complete: '=', incomplete: ' ', width: 20, total: payload.total + complete: '=', incomplete: ' ', width: 25, total: payload.total }) // clear file name on last update diff --git a/lib/surge.js b/lib/surge.js index 71ef4d9..097c8e8 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -229,8 +229,8 @@ module.exports = function(config){ whitelist, endpoint, pkg, help, version, space, preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, preProject, project, postProject, - preSize, size, postSize, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, + preSize, size, postSize, prePublish, protocol, deploy, postPublish, ipaddress ] return function(){ diff --git a/lib/util/helpers.js b/lib/util/helpers.js index f197f3a..1bb9017 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -509,7 +509,7 @@ exports.displayRegions = function(payload){ //log(" Origin regions…".grey) space() rows.forEach(function(row, i){ - log(" ", row.grey) + log(" ", row.grey) }) space() } From 2e221371c7ef58e2881e8412b9d18c2b41ba9514 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 01:54:55 -0700 Subject: [PATCH 109/214] fixes deployment output --- lib/middleware/cutover.js | 4 ++-- lib/middleware/deploy.js | 13 ++++++++++--- lib/middleware/discard.js | 10 ++++------ lib/middleware/list.js | 11 ++++------- lib/middleware/rollback.js | 5 ++--- lib/middleware/rollfore.js | 5 ++--- lib/util/helpers.js | 11 +++++------ 7 files changed, 29 insertions(+), 30 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 9c2d585..48df901 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -39,11 +39,11 @@ module.exports = function(req, next){ helpers.log(" ⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⤮ Cutover".yellow) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 01be901..ac5f983 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -155,7 +155,14 @@ module.exports = function(req, next){ "token": paymentToken, "timestamp": ts }, { "user": "token", "pass": req.creds.token }, function(errors, rsp){ - + if (errors) { + helpers.log("error".red + " - troubles switching plan".grey) + }else{ + helpers.reset() + helpers.space() + helpers.trunc(rsp.msg.grey) + helpers.space() + } }) }) }) @@ -216,8 +223,8 @@ module.exports = function(req, next){ */ .on("fail", function(){ - console.log() - console.log() + helpers.reset() + helpers.space() helpers.log(" Error".red + " - Deployment did not succeed.".grey) helpers.space() process.exit(1) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index eca9b19..bf4e703 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -39,7 +39,7 @@ module.exports = function(req, next){ if (response.status && response.status == 200){ // display discard information helpers.space() - helpers.log(" ✂ Discarded".green + (" " + [response.rev, response.domain].join(".").underline).grey) + helpers.log(" ✂ Discarded".green + (" " + response.revision.preview.underline).grey) helpers.space() // display change @@ -65,17 +65,15 @@ module.exports = function(req, next){ if (response.uncached.change){ helpers.space() if (response.uncached.change == "rollfore"){ - var revDomain = [response.revision.rev, domain].join(".") - helpers.log(" Done".green + (" - " + response.domain.underline + " rolled forward to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled forward to revision " + response.revision.preview.underline).grey) } else if (response.uncached.change == "rollback"){ - var revDomain = [response.revision.rev, domain].join(".") - helpers.log(" Done".green + (" - " + response.domain.underline + " rolled back to revision " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + response.domain.underline + " rolled back to revision " + response.revision.preview.underline).grey) } else if (response.uncached.change == "offline"){ helpers.log(" Done".green + (" - No revisions to serve. Project now offline.").grey) } helpers.space() } else { - helpers.log(" Done".green + (" - " + response.domain.underline + " still serving " + [response.revision.rev, response.domain].join(".").underline).grey) + helpers.log(" Done".green + (" - " + response.domain.underline + " still serving " + response.revision.preview.underline).grey) } }else{ diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 021bbd1..43a6530 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -86,26 +86,23 @@ module.exports = function(req, next){ project = req.project if (list.length != 0) { list.forEach(function(revision){ - if (revision.current){ - var perm = revision.rev ? (revision.rev + ".").yellow.underline + req.project.yellow.underline : "" + var perm = revision.preview.blue.underline var row = [ perm || project.domain.blue.underline, revision.timeAgoInWords.blue.underline, revision.email.blue.underline, - revision.fileCount.toString().blue.underline + " files".blue.underline, - //revision.totalSize.toString().blue.underline + " bytes".blue.underline, + revision.publicFileCount.toString().blue.underline + " files".blue.underline, revision.friendlySize.blue.underline ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) } else { - var perm = revision.rev ? (revision.rev + ".").yellow + req.project.yellow : "" + var perm = revision.preview.grey var row = [ perm || project.domain, revision.timeAgoInWords.grey, revision.email.grey, - revision.fileCount.toString().grey + " files".grey, - //revision.totalSize.toString().grey + " bytes".grey, + revision.publicFileCount.toString().grey + " files".grey, revision.friendlySize.grey ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 3347a9d..305adcc 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -18,17 +18,16 @@ module.exports = function(req, next){ helpers.space() }else{ var success = response.status && response.status == 201 - var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") helpers.space() if (success){ helpers.log(" ⟲ Rollback".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⟲ Rollback (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index b882a59..2a2826d 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -18,17 +18,16 @@ module.exports = function(req, next){ helpers.space() }else{ var success = response.status && response.status == 201 - var revDomain = [response.revision.rev, req["argv"]["_"][0]].join(".") helpers.space() if (success){ helpers.log(" ⟳ Forward".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + revDomain.underline).grey) + helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⟳ Forward (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + revDomain.underline).grey) + helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 1bb9017..b50f6b6 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -485,11 +485,9 @@ exports.payment = function(req, stripe_pk, existing){ exports.displayRevisionBasicInfo = function(revision, domain){ space() - trunc((" " + [revision.rev, domain].join(".").underline).grey) - trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) - trunc((" " + revision.email).grey) - // trunc((" " + [revision.rev, domain].join(".").underline).yellow + " " + revision.email.grey) - // trunc((" " + revision.fileCount + " files, " + revision.totalSize + " size").grey) + trunc((revision.preview.underline).grey) + trunc((revision.publicFileCount + " files, " + revision.publicTotalSize + " size").grey) + trunc((revision.email).grey) space() } @@ -504,9 +502,10 @@ exports.displayRegions = function(payload){ var rows = table.toString().split("\n") //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) - space() + //space() //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) //log(" Origin regions…".grey) + reset() space() rows.forEach(function(row, i){ log(" ", row.grey) From c32a7fe44e2e0c243df048c97d78eed40ccd941b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 01:59:51 -0700 Subject: [PATCH 110/214] resolving dep warnings --- package-lock.json | 152 ++++++++++++++++++++++++---------------------- 1 file changed, 81 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a1dd63..886ce3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -229,6 +229,17 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.3.0" + }, + "dependencies": { + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + } } }, "cli-cursor": { @@ -547,6 +558,14 @@ "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "flat": { @@ -1014,6 +1033,17 @@ "dev": true, "requires": { "p-locate": "^4.1.0" + }, + "dependencies": { + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, "lodash": { @@ -1156,19 +1186,23 @@ "path-exists": "^3.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "p-limit": "^2.0.0" + "minimist": "^1.2.5" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "string-width": { @@ -1191,6 +1225,30 @@ "ansi-regex": "^4.1.0" } }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -1245,9 +1303,9 @@ "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "mute-stream": { @@ -1299,9 +1357,9 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "dev": true }, "object-keys": { @@ -1362,12 +1420,12 @@ } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^2.0.0" } }, "p-try": { @@ -1377,9 +1435,9 @@ "dev": true }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { @@ -1456,15 +1514,6 @@ "mute-stream": "~0.0.4" } }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.7" - } - }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -1691,21 +1740,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "surge-fstream-ignore": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/surge-fstream-ignore/-/surge-fstream-ignore-1.0.6.tgz", @@ -1861,15 +1895,6 @@ "extsprintf": "^1.2.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -2029,21 +2054,6 @@ "path-exists": "^3.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", From 937f001f7b3c26964ff50943661046c3275b6b91 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 02:24:29 -0700 Subject: [PATCH 111/214] switched list to use sdk --- lib/middleware/list.js | 52 ++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 43a6530..9c0441d 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -1,25 +1,17 @@ var url = require("url") -var request = require("request") var Table = require("cli-table3") var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") module.exports = function(req, next){ - var listAllProjects = function(){ - var options = { - 'url': url.resolve(req.endpoint.format(), '/list'), - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - - request(options, function(e, r, obj){ - if (e) throw e - var list = JSON.parse(obj) + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + var listAllProjects = function(){ + sdk.list({ user: "token", pass: req.creds.token }, function(error, projects){ var table = new Table({ //head: ["cmd".underline.grey, 'REV DOMAIN'.grey, 'AGE'.grey, 'MODE'.grey], chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' @@ -28,9 +20,10 @@ module.exports = function(req, next){ , 'right': '' , 'right-mid': '' , 'middle': ' ' }, style: { 'padding-left': 1, 'padding-right': 1 } }) + var lastcmd = "" - if (list.length != 0) { - list.forEach(function(project){ + if (projects.length != 0) { + projects.forEach(function(project){ var perm = project.rev ? (project.rev + " ").grey + project.domain : "" if (project.planName) { if (project.planName.indexOf("Standard") !== -1){ @@ -56,24 +49,14 @@ module.exports = function(req, next){ helpers.space() helpers.trunc(("Empty").grey) } - next() + return next() }) } var listSingleProject = function(){ - var options = { - 'url': url.resolve(req.endpoint.format(), req.argv["_"][0] + '/list'), - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - request(options, function(e, r, obj){ - if (e) throw e - var list = JSON.parse(obj) - list.reverse() + + sdk.list(req.argv["_"][0], { user: "token", pass: req.creds.token }, function(error, revisions){ + revisions.reverse() var table = new Table({ chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': '' , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' @@ -84,8 +67,8 @@ module.exports = function(req, next){ var lastcmd = "" var terminalBreakpoint = 100 project = req.project - if (list.length != 0) { - list.forEach(function(revision){ + if (revisions.length != 0) { + revisions.forEach(function(revision){ if (revision.current){ var perm = revision.preview.blue.underline var row = [ @@ -116,9 +99,8 @@ module.exports = function(req, next){ helpers.space() helpers.trunc(("Empty").grey) } - next() + return next() }) - } From bac6214f6fb218c4513a342e7e513b281d202d86 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 02:35:39 -0700 Subject: [PATCH 112/214] removes request from teardown --- lib/middleware/plan.js | 1 - lib/middleware/teardown.js | 30 +++++++++--------------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index 9faf2cf..a00068f 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -1,5 +1,4 @@ -var request = require("request") var url = require("url") var helpers = require("../util/helpers") var path = require("path") diff --git a/lib/middleware/teardown.js b/lib/middleware/teardown.js index fe38db1..1c82aa5 100644 --- a/lib/middleware/teardown.js +++ b/lib/middleware/teardown.js @@ -1,41 +1,29 @@ -var request = require("request") var url = require("url") var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") var parseUrl = require("url-parse-as-address") +var surgeSDK = require("surge-sdk") module.exports = function(req, next, abort){ - var remove = function(domain){ - var options = { - 'url': url.resolve(req.endpoint, domain), - 'method': 'delete', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - - request(options, function(e, r, obj){ - if (e) throw e + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) - if (r.statusCode == 200 || r.statusCode == 204 || r.statusCode == 210) { - helpers.space() - helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey) - helpers.space() - process.exit() - } else if (r.statusCode == 403) { + var remove = function(domain){ + sdk.teardown(domain, { user: "token", pass: req.creds.token }, function(error, info){ + if (error) { helpers.space() helpers.trunc("Aborted".yellow + (" - Unable to remove " + domain.underline + ".").grey) helpers.space() process.exit(1) } else { helpers.space() - helpers.log(obj) + helpers.trunc("Success".green + (" - " + domain.underline + " has been removed.").grey) helpers.space() process.exit() } From 0745c9bd5a0960402d623d2b5d860492392d553b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 02:51:03 -0700 Subject: [PATCH 113/214] uses sdk to set card --- lib/middleware/_shared/_setcard.js | 39 +++++++++++++----------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/lib/middleware/_shared/_setcard.js b/lib/middleware/_shared/_setcard.js index 216df32..1bebd60 100644 --- a/lib/middleware/_shared/_setcard.js +++ b/lib/middleware/_shared/_setcard.js @@ -1,10 +1,15 @@ -var request = require("request") var url = require("url") var helpers = require("../../util/helpers") +var surgeSDK = require("surge-sdk") module.exports = function(req, next, abort){ + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + if (!req.paymentToken){ helpers.log() if (req.card){ @@ -21,28 +26,18 @@ module.exports = function(req, next, abort){ fields.token = req.paymentToken } - request({ - uri: url.resolve(req.endpoint, "card"), - method: "PUT", - auth: { - 'user': 'token', - 'pass': req.creds.token, - 'sendImmediately': true - }, - form: fields - }, function(e,r,b){ - if ([200,201].indexOf(r.statusCode) !== -1) { - var obj = JSON.parse(b) - console.log() - console.log((" Success".green + " - ".grey + obj.msg.grey)) - console.log() - } else { - var obj = JSON.parse(b) - console.log() - console.log(" Error ".red + " - " + (obj.message || obj.msg).grey) - console.log() + sdk.card(fields, { user: "token", pass: req.creds.token }, function(error, obj){ + if (error){ + helpers.space() + helpers.trunc("Error ".red + " - " + (obj.message || obj.msg).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + helpers.trunc(("Success".green + " - ".grey + obj.msg.grey)) + helpers.space() + process.exit() } }) - } } From 84b71cef7b9d312734f9ec98767e2af429dbb449 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 03:05:12 -0700 Subject: [PATCH 114/214] using sdk to fetch plans --- lib/middleware/_shared/_plans.js | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/lib/middleware/_shared/_plans.js b/lib/middleware/_shared/_plans.js index 53e1b50..d4a0ce2 100644 --- a/lib/middleware/_shared/_plans.js +++ b/lib/middleware/_shared/_plans.js @@ -6,31 +6,20 @@ var path = require("path") var fs = require("fs") var os = require("os") var parseUrl = require("url-parse-as-address") +var surgeSDK = require("surge-sdk") module.exports = function(req, next, abort){ - - var plansUrl = req.domain - ? url.resolve(req.endpoint, path.join(req.domain, "plans")) - : url.resolve(req.endpoint, "plans") + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + var headers = {} if (req.argv.promo) headers.promo = req.argv.promo - - var options = { - 'url': plansUrl, - 'method': 'get', - 'headers': headers, - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - - request(options, function(e, r, obj){ - if (r.statusCode == 200){ - req.plans = JSON.parse(obj) - } + + sdk.plans(req.domain, headers, { user: "token", pass: req.creds.token }, function(error, plans){ + req.plans = plans return next() }) From cc47d9ae36b4d56c23d09f34eae47f4c89fc9a46 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 27 Apr 2020 03:11:33 -0700 Subject: [PATCH 115/214] removing request where not used --- lib/middleware/_shared/_plans.js | 3 +-- lib/middleware/_shared/_tokencheck.js | 22 +--------------------- lib/middleware/_shared/auth.js | 2 +- 3 files changed, 3 insertions(+), 24 deletions(-) diff --git a/lib/middleware/_shared/_plans.js b/lib/middleware/_shared/_plans.js index d4a0ce2..4827701 100644 --- a/lib/middleware/_shared/_plans.js +++ b/lib/middleware/_shared/_plans.js @@ -1,5 +1,4 @@ -var request = require("request") var url = require("url") var helpers = require("../../util/helpers") var path = require("path") @@ -14,7 +13,7 @@ module.exports = function(req, next, abort){ endpoint: req.endpoint.format(), defaults: helpers.defaults }) - + var headers = {} if (req.argv.promo) headers.promo = req.argv.promo diff --git a/lib/middleware/_shared/_tokencheck.js b/lib/middleware/_shared/_tokencheck.js index 3e3734e..b499142 100644 --- a/lib/middleware/_shared/_tokencheck.js +++ b/lib/middleware/_shared/_tokencheck.js @@ -1,31 +1,11 @@ -var request = require("request") -var localCreds = require("../../util/creds.js") -var helpers = require("../../util/helpers.js") -var os = require('os') -var url = require("url") -var parseUrl = require("url-parse-as-address") module.exports = function(req, next){ if (req.creds) { req.authed = true helpers.trunc(("As " + "brock@sintaxi.com".underline + " on " + "Student" + " plan.").grey) helpers.log() - next() - // helpers.fetchToken(req.argv.endpoint)("token", req.creds.token, function(err, obj){ - // if (err) { - // localCreds(req.argv.endpoint).set(null) - // req.creds = null - // req.authed = false - // next() - // //auth(req, next) - // } else { - // req.creds = localCreds(req.argv.endpoint).set(obj.email, obj.token) - // req.authed = true - // next() - // } - // }) + return next() } else { next() } - } diff --git a/lib/middleware/_shared/auth.js b/lib/middleware/_shared/auth.js index e130b2a..4c748f1 100644 --- a/lib/middleware/_shared/auth.js +++ b/lib/middleware/_shared/auth.js @@ -1,4 +1,4 @@ -var request = require("request") + var localCreds = require("../../util/creds.js") var helpers = require("../../util/helpers.js") var os = require('os') From cd233d524f96073b5e9125579037f481f04a96dd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 28 Apr 2020 16:21:44 -0700 Subject: [PATCH 116/214] remove unused deps --- lib/middleware/list.js | 4 ++-- package-lock.json | 41 +++++++++++++++++++++++++++++++++-------- package.json | 12 +++++------- 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 9c0441d..70f4c98 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -75,7 +75,7 @@ module.exports = function(req, next){ perm || project.domain.blue.underline, revision.timeAgoInWords.blue.underline, revision.email.blue.underline, - revision.publicFileCount.toString().blue.underline + " files".blue.underline, + (revision.publicFileCount ? revision.publicFileCount.toString().underline.grey + " files".underline.grey : ""), revision.friendlySize.blue.underline ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) @@ -85,7 +85,7 @@ module.exports = function(req, next){ perm || project.domain, revision.timeAgoInWords.grey, revision.email.grey, - revision.publicFileCount.toString().grey + " files".grey, + (revision.publicFileCount ? revision.publicFileCount.toString().grey + " files".grey : ""), revision.friendlySize.grey ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) diff --git a/package-lock.json b/package-lock.json index 886ce3f..4ec73ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1665,14 +1665,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, - "split": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", - "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", - "requires": { - "through": "2" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -1768,6 +1760,34 @@ "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, + "surge-sdk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.1.2.tgz", + "integrity": "sha512-dxivxkeF5NY2ttVCiM3YlByLzQrjFl2TpRjQWfprE1dgeJtE56g8oo5ZKCN6/6pyqBc3U7sEOK0AHkX9JqKuNg==", + "requires": { + "request": "^2.88.0", + "split": "^1.0.1", + "surge-fstream-ignore": "^1.0.6", + "surge-ignore": "^0.3.0", + "tarr": "^1.1.0", + "zlib": "^1.0.5" + }, + "dependencies": { + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, + "surge-ignore": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", + "integrity": "sha1-METmyiMw81hAHihfkAxtKM9e3C4=" + } + } + }, "tarr": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", @@ -2110,6 +2130,11 @@ } } } + }, + "zlib": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", + "integrity": "sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA=" } } } diff --git a/package.json b/package.json index 4980d29..2e44b9e 100644 --- a/package.json +++ b/package.json @@ -5,20 +5,18 @@ "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { - "cli-table3": "^0.5.1", - "surge-fstream-ignore": "^1.0.6", + "surge-sdk": "0.1.2", + "minimist": "1.2.3", "inquirer": "^6.2.2", + "prompt": "~0.2.14", + "cli-table3": "^0.5.1", + "progress": "1.1.8", "is-domain": "0.0.1", - "minimist": "1.2.3", "moniker": "0.1.2", "netrc": "0.1.4", - "progress": "1.1.8", - "prompt": "~0.2.14", "read": "1.0.5", "request": "^2.88.0", - "split": "0.3.1", "surge-ignore": "0.2.0", - "tarr": "1.1.0", "url-parse-as-address": "1.0.0" }, "devDependencies": { From d0b193016a3ac27adbfecd5a35a32029abccb1f7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 29 Apr 2020 03:09:46 -0700 Subject: [PATCH 117/214] cleaner reads of json data using split --- lib/middleware/cutover.js | 6 +++--- lib/middleware/deploy.js | 26 ++++++++++++++++---------- lib/util/helpers.js | 4 +--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 48df901..34e0501 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -36,14 +36,14 @@ module.exports = function(req, next){ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.log(" ⤮ Cutover".green) + helpers.trunc(" ⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.log(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.log(" ⤮ Cutover".yellow) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) + helpers.trunc("Unchanged".yellow + (" - already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index ac5f983..d91a129 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -9,6 +9,7 @@ var ProgressBar = require("progress") module.exports = function(req, next){ var progress = {} + var progressDone = {} var ts = new Date().toJSON() @@ -68,7 +69,11 @@ module.exports = function(req, next){ var file = payload.written >= payload.total ? "" : payload.file // refresh view - progress[payload.id].update(payload.written / payload.total, { file: file }) + if (!progressDone[payload.id]){ + if (payload.written / payload.total === 1) progressDone[payload.id] = true + progress[payload.id].update(payload.written / payload.total) + } + } catch(e){} @@ -96,7 +101,8 @@ module.exports = function(req, next){ * */ - .on("regionInfo", function(payload){ + .on("info", function(payload){ + //helpers.displayPreview(payload.preview) helpers.displayRegions(payload) }) @@ -156,9 +162,10 @@ module.exports = function(req, next){ "timestamp": ts }, { "user": "token", "pass": req.creds.token }, function(errors, rsp){ if (errors) { - helpers.log("error".red + " - troubles switching plan".grey) + helpers.space() + helpers.trunc("Error".red + " - troubles switching plan".grey) + helpers.space() }else{ - helpers.reset() helpers.space() helpers.trunc(rsp.msg.grey) helpers.space() @@ -174,10 +181,10 @@ module.exports = function(req, next){ */ .on("unauthenticated", function(payload){ - localCreds(req.argv.endpoint).set(null) - helpers.log() + helpers.space() helpers.trunc("Aborted".yellow + (" - local token has expired and cleared. please try again.").grey) - helpers.log() + helpers.space() + localCreds(req.argv.endpoint).set(null) process.exit(1) }) @@ -188,9 +195,9 @@ module.exports = function(req, next){ */ .on("forbidden", function(payload){ - helpers.log() + helpers.space() helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) - helpers.log() + helpers.space() process.exit(1) }) @@ -223,7 +230,6 @@ module.exports = function(req, next){ */ .on("fail", function(){ - helpers.reset() helpers.space() helpers.log(" Error".red + " - Deployment did not succeed.".grey) helpers.space() diff --git a/lib/util/helpers.js b/lib/util/helpers.js index b50f6b6..d15efdd 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -35,7 +35,7 @@ var show = exports.show = function(){ } -var space = exports.space = function(){ +var space = exports.space = function(d){ if (s === 0){ s++ console.log() @@ -500,12 +500,10 @@ exports.displayRevision = function(payload){ exports.displayRegions = function(payload){ var table = tableRegions(payload) var rows = table.toString().split("\n") - //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) //space() //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) //log(" Origin regions…".grey) - reset() space() rows.forEach(function(row, i){ log(" ", row.grey) From d2900d1950c5b3e9614751769a08f1e72fff19e0 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 29 Apr 2020 12:55:35 -0700 Subject: [PATCH 118/214] improve revision output --- lib/middleware/cutover.js | 8 ++++---- lib/middleware/deploy.js | 4 ++-- lib/middleware/list.js | 10 +++++----- lib/middleware/rollback.js | 10 +++++----- lib/middleware/rollfore.js | 10 +++++----- lib/surge.js | 4 ++-- lib/util/helpers.js | 9 ++++++--- 7 files changed, 29 insertions(+), 26 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 34e0501..ee8d307 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -30,18 +30,18 @@ module.exports = function(req, next){ sdk.cutover(domain, rev, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() - helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.trunc(" ⤮ Cutover".green) + helpers.trunc("⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.displayRegions(response) - helpers.trunc(" Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc("Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.log(" ⤮ Cutover".yellow) + helpers.trunc("⤮ Cutover".yellow) helpers.displayRevisionBasicInfo(response.revision, response.domain) helpers.trunc("Unchanged".yellow + (" - already serving " + response.revision.preview.underline).grey) } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index d91a129..edffb44 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -73,7 +73,6 @@ module.exports = function(req, next){ if (payload.written / payload.total === 1) progressDone[payload.id] = true progress[payload.id].update(payload.written / payload.total) } - } catch(e){} @@ -102,7 +101,8 @@ module.exports = function(req, next){ */ .on("info", function(payload){ - //helpers.displayPreview(payload.preview) + req.info = payload + helpers.displayPreview(payload) helpers.displayRegions(payload) }) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 70f4c98..7e83f96 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -34,9 +34,9 @@ module.exports = function(req, next){ } var row = [ perm || project.domain, - project.timeAgoInWords.grey, - project.cmd.grey, - project.platform.grey, + (project.timeAgoInWords || "").grey, + (project.cmd || "").grey, + (project.platform || "").grey, pn || "", //lastcmd !== project.cmd ? (project.cmd).grey : "", ] @@ -75,7 +75,7 @@ module.exports = function(req, next){ perm || project.domain.blue.underline, revision.timeAgoInWords.blue.underline, revision.email.blue.underline, - (revision.publicFileCount ? revision.publicFileCount.toString().underline.grey + " files".underline.grey : ""), + (revision.publicFileCount ? (revision.publicFileCount + " files").underline.blue : ""), revision.friendlySize.blue.underline ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg||"").blue) @@ -85,7 +85,7 @@ module.exports = function(req, next){ perm || project.domain, revision.timeAgoInWords.grey, revision.email.grey, - (revision.publicFileCount ? revision.publicFileCount.toString().grey + " files".grey : ""), + (revision.publicFileCount ? (revision.publicFileCount + " files").grey : ""), revision.friendlySize.grey ] if (process.stdout.columns > terminalBreakpoint) row.push((revision.msg || "").grey) diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 305adcc..87134bc 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -14,20 +14,20 @@ module.exports = function(req, next){ sdk.rollback(domain, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() - helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.log(" ⟲ Rollback".green) + helpers.trunc("⟲ Rollback".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.log(" ⟲ Rollback (failed)".yellow) + helpers.trunc("⟲ Rollback (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) + helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index 2a2826d..a90f5ca 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -14,20 +14,20 @@ module.exports = function(req, next){ sdk.rollfore(domain, { user: "token", pass: req.creds.token }, function(error, response){ if (error){ helpers.space() - helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) + helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ var success = response.status && response.status == 201 helpers.space() if (success){ - helpers.log(" ⟳ Forward".green) + helpers.trunc("⟳ Forward".green) helpers.displayRevisionBasicInfo(response.revision, domain) helpers.displayRegions(response) - helpers.log(" Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) + helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.log(" ⟳ Forward (failed)".yellow) + helpers.trunc("⟳ Forward (failed)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) - helpers.log(" Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) + helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() } diff --git a/lib/surge.js b/lib/surge.js index 097c8e8..21ee814 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -284,7 +284,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, - preAuth, creds, welcome, auth, authInfo, postAuth, + preAuth, creds, welcome, auth, postAuth, rollback, space ] return function(){ @@ -303,7 +303,7 @@ module.exports = function(config){ var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, - preAuth, creds, welcome, auth, authInfo, postAuth, + preAuth, creds, welcome, auth, postAuth, rollfore, space ] return function(){ diff --git a/lib/util/helpers.js b/lib/util/helpers.js index d15efdd..f98390d 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -485,9 +485,8 @@ exports.payment = function(req, stripe_pk, existing){ exports.displayRevisionBasicInfo = function(revision, domain){ space() - trunc((revision.preview.underline).grey) - trunc((revision.publicFileCount + " files, " + revision.publicTotalSize + " size").grey) - trunc((revision.email).grey) + trunc((revision.preview.underline).grey + (" (" + revision.publicFileCount + " files, " + revision.publicTotalSize + " size)").grey) + trunc(("by " + revision.email).grey) space() } @@ -497,6 +496,10 @@ exports.displayRevision = function(payload){ space() } +exports.displayPreview = function(payload){ + log(smart("preview:").grey + " " + payload.metadata.preview.underline) +} + exports.displayRegions = function(payload){ var table = tableRegions(payload) var rows = table.toString().split("\n") From edc25521a5466a6e020049d066425196f3403c99 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 30 Apr 2020 02:10:29 -0700 Subject: [PATCH 119/214] adds preview flag. outputs preview info --- lib/middleware/_shared/_whitelist.js | 2 +- lib/middleware/deploy.js | 7 ++++++- lib/surge.js | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/middleware/_shared/_whitelist.js b/lib/middleware/_shared/_whitelist.js index 73ec554..cc99e05 100644 --- a/lib/middleware/_shared/_whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -3,7 +3,7 @@ var helpers = require("../../util/helpers") module.exports = function(req, next){ //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform - var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build','$0','_']; + var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build', 'preview', '$0','_']; var args = []; for (param in req.argv) { diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index edffb44..f028d3e 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -246,7 +246,12 @@ module.exports = function(req, next){ .on("success", function(){ helpers.space() - helpers.log(" Success!".green + (" - Published to " + (req.domain).underline).grey) + if (req.argv.stage){ + helpers.trunc("Success!".green + (" - Preveiw available at " + (req.info.metadata.preview).underline).grey) + } else { + helpers.trunc("Success!".green + (" - Published to " + (req.domain).underline).grey) + } + helpers.space() return next() }) diff --git a/lib/surge.js b/lib/surge.js index 21ee814..f67c26b 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -127,6 +127,8 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] + if (argv.preview) argv.stage = argv.preview + var commands = [ "login", "logout", From 7b4902ae243eef667b7430e8103eca9cad72f0d3 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 5 May 2020 03:35:22 -0700 Subject: [PATCH 120/214] updates help output --- lib/middleware/deploy.js | 7 +++-- lib/middleware/help.js | 57 +++++++++++++++++++++-------------- lib/middleware/revoke.js | 10 ++++--- package-lock.json | 65 ++++++++++++++++------------------------ package.json | 2 +- 5 files changed, 71 insertions(+), 70 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index f028d3e..2c29682 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -229,9 +229,10 @@ module.exports = function(req, next){ * */ - .on("fail", function(){ - helpers.space() - helpers.log(" Error".red + " - Deployment did not succeed.".grey) + .on("fail", function(obj){ + console.log() + console.log() + helpers.trunc("Error".red + " - Deployment did not succeed.".grey) helpers.space() process.exit(1) }) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 8b7c8c3..c82993e 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -3,34 +3,47 @@ var helpers = require("../util/helpers") module.exports = function(req, next){ if (req.argv.help || req.argv.h) { helpers + //.log() + //.log(" " + req.config.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) .log() - .log(" " + req.config.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) + .log(" Main Usage:".grey) + .log(" "+ req.config.name +" publish project to domain") .log() - .log(" Usage:".grey) - .log(" "+ req.config.name +" ") + .log(" Project Commands:".grey) + .log(" "+ req.config.name +" cutover change to latest revision") + .log(" "+ req.config.name +" discard remove revision from system") + .log(" "+ req.config.name +" rollfore change to next revision") + .log(" "+ req.config.name +" rollback change to previous revision") + .log(" "+ req.config.name +" teardown tear down a published project") + .log(" "+ req.config.name +" invite invites user to be a contributor") + .log(" "+ req.config.name +" revoke revokes contributor rights") + .log(" "+ req.config.name +" list list all revisions") + .log(" "+ req.config.name +" ssl publish .pem file for SSL support") .log() - .log(" Options:".grey) - .log(" -a, --add adds user to list of collaborators (email address)") - .log(" -r, --remove removes user from list of collaborators (email address)") - .log(" -V, --version show the version number") - .log(" -h, --help show this help message") + .log(" Account Commands:".grey) + .log(" "+ req.config.name +" whoami show who you are logged in as") + .log(" "+ req.config.name +" login only performs authentication step") + .log(" "+ req.config.name +" logout expire local token") + .log(" "+ req.config.name +" token create token for automation purposes") + .log(" "+ req.config.name +" plan upgrade or downgrade account plan") + .log(" "+ req.config.name +" list list all projects") .log() - .log(" Additional commands:".grey) - .log(" "+ req.config.name +" whoami show who you are logged in as") - .log(" "+ req.config.name +" logout expire local token") - .log(" "+ req.config.name +" login only performs authentication step") - .log(" "+ req.config.name +" list list all domains you have access to") - .log(" "+ req.config.name +" teardown tear down a published project") - .log(" "+ req.config.name +" plan set account plan") + .log(" Options:".grey) + .log(" -s, --preview (when publishing) publishes preview") + .log(" -t, --token pass in token to use for call") + .log(" -V, --version show the version number") + .log(" -h, --help show this help message") .log() - // .log(" Examples:".grey) - // .log(" surge ./www example.com") - // .log(" surge .") + .log(" Examples:".grey) + .log(" "+ req.config.name +" www example.com publishes www directory to example.com") + .log(" "+ req.config.name +" . example.com --preview publishes current directory for preview") + .log(" "+ req.config.name +" cutover example.com switches latest preview to production") + .log(" "+ req.config.name +" . _ publish current dir to random subdomain") // .log() - .log(" Guides:".grey) - .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey) - .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) - .log(" Additional help " + "surge.sh/help".underline.grey) + // .log(" Guides:".grey) + // .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey) + // .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) + // .log(" Additional help " + "surge.sh/help".underline.grey) .log() .log(" When in doubt, run ".grey + req.config.name.green.underline + " from within your project directory.".grey) .log() diff --git a/lib/middleware/revoke.js b/lib/middleware/revoke.js index 9fa5f6a..c7c4395 100644 --- a/lib/middleware/revoke.js +++ b/lib/middleware/revoke.js @@ -9,14 +9,16 @@ module.exports = function(req, next){ defaults: helpers.defaults }) - helpers.log("REVOKE:", req.argv) - helpers.log({ user: "token", pass: req.creds.token }) - - sdk.revoke(req.argv["_"], { user: "token", pass: req.creds.token }, function(error, rsp){ + sdk.revoke(req.argv["_"], { user: "token", pass: req.creds.token }, function(error, reply){ if (error) { + helpers.space() + helpers.trunc("Failed".red + " - ".grey + error.messages.join(". ").grey) helpers.space() process.exit(1) } else { + helpers.space() + helpers.trunc("Success".green + " - ".grey + reply.successes.join(", ") + "have been revoked.") + helpers.space() return next() } }) diff --git a/package-lock.json b/package-lock.json index 4ec73ac..1b578a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -604,6 +604,17 @@ "dev": true, "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -657,9 +668,9 @@ } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "graceful-readlink": { "version": "1.0.1", @@ -1665,6 +1676,14 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -1740,19 +1759,6 @@ "fstream": ">=1.0.12", "inherits": "2", "minimatch": "^3.0.0" - }, - "dependencies": { - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - } } }, "surge-ignore": { @@ -1761,9 +1767,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.1.2.tgz", - "integrity": "sha512-dxivxkeF5NY2ttVCiM3YlByLzQrjFl2TpRjQWfprE1dgeJtE56g8oo5ZKCN6/6pyqBc3U7sEOK0AHkX9JqKuNg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.2.0.tgz", + "integrity": "sha512-fbCvHIfsaV1QF/NaNQSm0agQFld07GErF71XYDQ7YTpTbcyZSedhdsUFE23d4irULpL5GlstlCd51N/oEl++6w==", "requires": { "request": "^2.88.0", "split": "^1.0.1", @@ -1773,14 +1779,6 @@ "zlib": "^1.0.5" }, "dependencies": { - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2" - } - }, "surge-ignore": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", @@ -1796,19 +1794,6 @@ "block-stream": "*", "fstream": ">=1.0.12", "inherits": "2" - }, - "dependencies": { - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - } } }, "through": { diff --git a/package.json b/package.json index 2e44b9e..292794d 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { - "surge-sdk": "0.1.2", + "surge-sdk": "0.2.0", "minimist": "1.2.3", "inquirer": "^6.2.2", "prompt": "~0.2.14", From 1bd081beddcb8155000867d8129c14ddf1e9b704 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 17 May 2020 05:56:31 -0700 Subject: [PATCH 121/214] adds NS servers to server list --- lib/middleware/deploy.js | 2 +- lib/util/helpers.js | 10 +++++++--- lib/util/table-regions.js | 31 +++++++++++++++++++++++-------- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 2c29682..2f76c9a 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -103,7 +103,7 @@ module.exports = function(req, next){ .on("info", function(payload){ req.info = payload helpers.displayPreview(payload) - helpers.displayRegions(payload) + helpers.displayRegions(payload, req.domain) }) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index f98390d..6fe3a41 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -500,8 +500,12 @@ exports.displayPreview = function(payload){ log(smart("preview:").grey + " " + payload.metadata.preview.underline) } -exports.displayRegions = function(payload){ - var table = tableRegions(payload) +exports.displayCname = function(payload){ + if (payload.cname) log(smart("cname:").grey + " " + payload.cname.underline) +} + +exports.displayRegions = function(payload, domain){ + var table = tableRegions(payload, domain) var rows = table.toString().split("\n") //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) //space() @@ -509,7 +513,7 @@ exports.displayRegions = function(payload){ //log(" Origin regions…".grey) space() rows.forEach(function(row, i){ - log(" ", row.grey) + log(" ", row.grey) }) space() } diff --git a/lib/util/table-regions.js b/lib/util/table-regions.js index 9076ae6..62628eb 100644 --- a/lib/util/table-regions.js +++ b/lib/util/table-regions.js @@ -1,10 +1,10 @@ var Table = require("cli-table3") -module.exports = function(payload){ +module.exports = function(payload, domain){ var table = new Table({ - head:["Region".grey, "IP".grey, "Country".grey, "City".grey], + //head:[{ colSpan:4, content: payload.metadata.preview.grey, hAlign:"center" }], style: { 'compact': true, 'padding-left': 3, @@ -12,13 +12,28 @@ module.exports = function(payload){ } }) - var keys = Object.keys(payload.regions) var rows = [] - - keys.forEach(function(key){ - var val = payload.regions[key] - table.push([(key + "." + payload.nsDomain), val.ip, { hAlign: "center", content: val.country }, val.city]) - }) + + var report = function(str, status){ + if (["green"].indexOf(status) !== -1) return str.green + return str.grey + } + + var iterateMachines = function(machines){ + Object.keys(machines).forEach(function(key, i){ + var val = machines[key] + table.push([ + { hAlign: "center", content: val.info.grey }, + (key + "." + val.apex), + (val.country + ", " + val.city), + { hAlign:"center", content: report(val.report, val.status) } + ]) + }) + } + + if (payload.hasOwnProperty("regions")) iterateMachines(payload.regions) + if (payload.hasOwnProperty("nameservers")) iterateMachines(payload.nameservers) + if (payload.hasOwnProperty("additional")) iterateMachines(payload.additional) return table From 49515831aa6ac74b327535d0766b345f54916f15 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 6 Jun 2020 01:09:13 -0700 Subject: [PATCH 122/214] adds dns and props commands --- lib/surge.js | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/lib/surge.js b/lib/surge.js index f67c26b..1108e88 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -58,6 +58,8 @@ var discard = require("./middleware/discard") var invite = require("./middleware/invite") var revoke = require("./middleware/revoke") var encrypt = require("./middleware/encrypt") +var dns = require("./middleware/dns") +var props = require("./middleware/props") @@ -148,7 +150,9 @@ module.exports = function(config){ "card", "invite", "revoke", - "encrypt" + "encrypt", + "props", + "dns" ] if (commands.indexOf(cmd) !== -1) { @@ -553,6 +557,44 @@ module.exports = function(config){ } } + surge.props = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + props, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.dns = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + dns, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + return surge } From 93f53f83f2f5937397a0c02679a47cd0d255726e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 6 Jun 2020 01:09:32 -0700 Subject: [PATCH 123/214] adds files for props and dns --- lib/middleware/dns.js | 61 +++++++++++++++++++++++++++++++++++++++++ lib/middleware/props.js | 23 ++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 lib/middleware/dns.js create mode 100644 lib/middleware/props.js diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js new file mode 100644 index 0000000..83a892e --- /dev/null +++ b/lib/middleware/dns.js @@ -0,0 +1,61 @@ +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + + +var parseArgs = function(argv){ + var args = JSON.parse(JSON.stringify(argv)) + + if (argv["_"][0] && argv["_"][0].indexOf(".") !== -1){ + args.domain = argv["_"][0] + args.cmd = argv["_"][1] + args.type = argv["_"][2] + args.name = argv["_"][3] + args.value = argv["_"][4] + } + + return args +} + + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var args = parseArgs(req.argv) + + if (args.cmd === "add") { + sdk.dnsAdd(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + } else if (args.cmd === "rem") { + sdk.dnsRem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + } else { + sdk.dns(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + } + +} diff --git a/lib/middleware/props.js b/lib/middleware/props.js new file mode 100644 index 0000000..2d6d398 --- /dev/null +++ b/lib/middleware/props.js @@ -0,0 +1,23 @@ +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + + sdk.props(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + process.exit(1) + } else { + console.log(rsp) + return next() + } + }) + +} \ No newline at end of file From 44269968ecd07fccb6cd5618fa09749e3d4d4a50 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 6 Jun 2020 04:32:31 -0700 Subject: [PATCH 124/214] adds props set/get --- lib/middleware/_shared/_whitelist.js | 2 +- lib/middleware/props.js | 17 ++++++++++++++++- lib/surge.js | 2 +- lib/util/helpers.js | 9 +++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/middleware/_shared/_whitelist.js b/lib/middleware/_shared/_whitelist.js index cc99e05..2a0d7ef 100644 --- a/lib/middleware/_shared/_whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -1,7 +1,7 @@ var helpers = require("../../util/helpers") module.exports = function(req, next){ - //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform + //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform) var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build', 'preview', '$0','_']; diff --git a/lib/middleware/props.js b/lib/middleware/props.js index 2d6d398..045fddc 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/props.js @@ -12,10 +12,25 @@ module.exports = function(req, next){ sdk.props(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { + helpers.space() + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) helpers.space() process.exit(1) } else { - console.log(rsp) + var keys = Object.keys(rsp) + if (keys.length == 0){ + helpers.space() + helpers.trunc(("Empty").grey) + }else{ + helpers.space() + keys.forEach(function(k){ + helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k]) + }) + helpers.space() + } + return next() } }) diff --git a/lib/surge.js b/lib/surge.js index 1108e88..15ecb75 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -562,7 +562,7 @@ module.exports = function(config){ var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, + endpoint, pkg, help, version, space, preAuth, creds, auth, postAuth, props, space ] diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 6fe3a41..d7b3804 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -68,6 +68,15 @@ var smart = exports.smart = function(str){ return rsp + str } +var shortsmart = exports.shortsmart = function(str){ + var difference = 12 - str.length + var rsp = "" + for(var i=0; i < difference; i++){ + rsp += " " + } + return rsp + str +} + var trunc = exports.trunc = function(arg){ log(" " + arg) s = 0 From 423286aba2e467be4dd9fb7e055cd86f24e951e4 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 10 Jun 2020 03:58:14 -0700 Subject: [PATCH 125/214] dns CRUD implemented --- lib/middleware/dns.js | 31 +++++++++++++++++++++++++------ lib/middleware/props.js | 14 +++++++++----- lib/surge.js | 5 +++-- lib/util/helpers.js | 7 +++++++ lib/util/tables.js | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 13 deletions(-) diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js index 83a892e..7367534 100644 --- a/lib/middleware/dns.js +++ b/lib/middleware/dns.js @@ -29,30 +29,49 @@ module.exports = function(req, next){ if (args.cmd === "add") { sdk.dnsAdd(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { + helpers.space() + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) helpers.space() process.exit(1) } else { - console.log(rsp) - return next() + helpers.space() + helpers.trunc("Success".green + (" - " + rsp.message).grey) + helpers.space() + process.exit() } }) } else if (args.cmd === "rem") { sdk.dnsRem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { + helpers.space() + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) helpers.space() process.exit(1) } else { - console.log(rsp) - return next() + helpers.space() + helpers.trunc("Success".green + (" - " + rsp.message).grey) + helpers.space() } }) } else { sdk.dns(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() process.exit(1) } else { - console.log(rsp) + var keys = Object.keys(rsp) + if (keys.length == 0){ + helpers.space() + helpers.trunc(("Empty").grey) + }else{ + helpers.space() + helpers.displayRecords(rsp) + helpers.space() + } + return next() } }) diff --git a/lib/middleware/props.js b/lib/middleware/props.js index 045fddc..8076d9b 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/props.js @@ -13,10 +13,14 @@ module.exports = function(req, next){ sdk.props(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { helpers.space() - error.messages.forEach(function(m){ - helpers.trunc("Error".red + (" - " + m).grey) - }) - helpers.space() + if (error.hasOwnProperty("message")){ + helpers.trunc("Error".red + (" - " + error.message).grey) + }else{ + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) + } + helpers.space() process.exit(1) } else { var keys = Object.keys(rsp) @@ -26,7 +30,7 @@ module.exports = function(req, next){ }else{ helpers.space() keys.forEach(function(k){ - helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k]) + helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k].green) }) helpers.space() } diff --git a/lib/surge.js b/lib/surge.js index 15ecb75..daa07f0 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -129,7 +129,8 @@ module.exports = function(config){ var argv = minimist(args, options) var cmd = argv._[0] - if (argv.preview) argv.stage = argv.preview + // we accept --preview + if (argv.preview) argv.stage = argv.s = argv.preview var commands = [ "login", @@ -581,7 +582,7 @@ module.exports = function(config){ var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, + whitelist, endpoint, pkg, help, version, preAuth, creds, auth, postAuth, dns, space ] diff --git a/lib/util/helpers.js b/lib/util/helpers.js index d7b3804..26ab004 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -536,6 +536,13 @@ exports.displayInvites = function(payload){ space() } +exports.displayRecords = function(payload){ + var table = tables.records(payload.records) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ log(row.grey) }) + space() +} + exports.revisionSelector = function(req, callback){ var options = { diff --git a/lib/util/tables.js b/lib/util/tables.js index 1b7bf54..0eb7190 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -1,6 +1,44 @@ var Table = require("cli-table3") +exports.records = function(records){ + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 5 + } + }) + + records.forEach(function(record){ + var row = [ + { hAlign: "center", content: record.id.grey }, + { hAlign: "center", content: record.type.blue }, + { hAlign: "center", content: record.name.green }, + { hAlign: "right", content: record.value.green } + ] + table.push(row) + }) + + return table + +} + exports.invites = function(invites){ var table = new Table({ chars: { From 4007273a6b67713e31a37535d19e1a002e313722 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 11 Jun 2020 04:25:07 -0700 Subject: [PATCH 126/214] apply props on publish --- lib/middleware/deploy.js | 2 +- lib/middleware/props.js | 18 ++++++++++++++++-- lib/surge.js | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 2f76c9a..50a7763 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -40,7 +40,7 @@ module.exports = function(req, next){ "add": req.argv.a, "rem": req.argv.r, "ssl": req.ssl - }) + }, req.argv) /** diff --git a/lib/middleware/props.js b/lib/middleware/props.js index 8076d9b..0a99e98 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/props.js @@ -29,8 +29,22 @@ module.exports = function(req, next){ helpers.trunc(("Empty").grey) }else{ helpers.space() - keys.forEach(function(k){ - helpers.log(helpers.shortsmart("--" +k).grey + " " + rsp[k].green) + keys.forEach(function(k){ + var key = k + var value = rsp[k] + + if (rsp[k] === null){ + key = helpers.shortsmart(key).grey + value = "null".grey + } else if (!isNaN(parseInt(value))){ + key = helpers.shortsmart(key).grey + value = value.blue + } else { + key = helpers.shortsmart(key).grey + value = value.green + } + + helpers.log(key + " : ".grey + value) }) helpers.space() } diff --git a/lib/surge.js b/lib/surge.js index daa07f0..05ea359 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -233,7 +233,7 @@ module.exports = function(config){ var prePublish = hooks.prePublish || stub var postPublish = hooks.postPublish || stub var onion = [ - whitelist, endpoint, pkg, help, version, space, + endpoint, pkg, help, version, space, preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, preProject, project, postProject, preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, From c609d1a69856d9ca1ab0ef156f10739739ccee8b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 2 Jul 2020 02:09:26 -0700 Subject: [PATCH 127/214] updates to CLI output --- lib/middleware/cutover.js | 2 +- lib/middleware/deploy.js | 2 +- lib/middleware/discard.js | 3 +- lib/middleware/dns.js | 139 ++++++++++++++--------- lib/middleware/rollback.js | 2 +- lib/middleware/rollfore.js | 2 +- lib/surge.js | 24 +++- lib/util/helpers.js | 44 +++++++- lib/util/tables.js | 224 +++++++++++++++++++++++++++++++++++-- 9 files changed, 369 insertions(+), 73 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index ee8d307..7eb8362 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -38,7 +38,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.displayRegions(response) + helpers.displayServers(response) helpers.trunc("Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⤮ Cutover".yellow) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 50a7763..0ec9b8b 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -103,7 +103,7 @@ module.exports = function(req, next){ .on("info", function(payload){ req.info = payload helpers.displayPreview(payload) - helpers.displayRegions(payload, req.domain) + helpers.displayServers(payload, req.domain) }) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index bf4e703..b84d600 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -59,7 +59,8 @@ module.exports = function(req, next){ // display regions helpers.space() - helpers.displayRegions(response) + //helpers.displayRegions(response) + helpers.displayServers(response) helpers.space() if (response.uncached.change){ diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js index 7367534..c9b2a49 100644 --- a/lib/middleware/dns.js +++ b/lib/middleware/dns.js @@ -8,73 +8,104 @@ var parseArgs = function(argv){ if (argv["_"][0] && argv["_"][0].indexOf(".") !== -1){ args.domain = argv["_"][0] args.cmd = argv["_"][1] - args.type = argv["_"][2] - args.name = argv["_"][3] - args.value = argv["_"][4] + args.type = argv.type || argv["_"][2] + args.name = argv.name || argv["_"][3] + args.value = argv.value || argv["_"][4] + if (args.type === "MX"){ + if (argv["_"].length === 5){ + args.name = argv.name || "@" + args.priority = argv.priority || argv["_"][3] + args.value = argv.value || argv["_"][4] + }else if (argv["_"].length === 6){ + args.name = argv.name || argv["_"][3] + args.priority = argv.priority || argv["_"][4] + args.value = argv.value || argv["_"][5] + } + } } return args } +module.exports = function(type){ -module.exports = function(req, next){ + return function(req, next){ + var add, rem, get - var sdk = surgeSDK({ - endpoint: req.endpoint.format(), - defaults: helpers.defaults - }) + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) - var args = parseArgs(req.argv) + if (type === "dns"){ + add = sdk.dnsAdd + rem = sdk.dnsRem + get = sdk.dns + } else if(type === "zone"){ + add = sdk.zoneAdd + rem = sdk.zoneRem + get = sdk.zone + } - if (args.cmd === "add") { - sdk.dnsAdd(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ - if (error) { - helpers.space() - error.messages.forEach(function(m){ - helpers.trunc("Error".red + (" - " + m).grey) - }) - helpers.space() - process.exit(1) - } else { - helpers.space() - helpers.trunc("Success".green + (" - " + rsp.message).grey) - helpers.space() - process.exit() - } - }) - } else if (args.cmd === "rem") { - sdk.dnsRem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ - if (error) { - helpers.space() - error.messages.forEach(function(m){ - helpers.trunc("Error".red + (" - " + m).grey) - }) - helpers.space() - process.exit(1) - } else { - helpers.space() - helpers.trunc("Success".green + (" - " + rsp.message).grey) - helpers.space() - } - }) - } else { - sdk.dns(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ - if (error) { - process.exit(1) - } else { - var keys = Object.keys(rsp) - if (keys.length == 0){ + var args = parseArgs(req.argv) + + if (args.cmd === "add") { + add(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } else { helpers.space() - helpers.trunc(("Empty").grey) - }else{ + helpers.displayRecords(rsp, type) helpers.space() - helpers.displayRecords(rsp) + helpers.trunc("Success".green + " - record added".grey) helpers.space() + process.exit() } + }) + } else if (args.cmd === "rem") { + rem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } else { + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + helpers.trunc("Success".green + " - record removed".grey) + helpers.space() + } + }) + } else { + get(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + helpers.trunc("Error".red + (" - " + error.message).grey) + helpers.space() + process.exit(1) + } else { + var keys = Object.keys(rsp) + if (keys.length == 0){ + helpers.space() + helpers.trunc(("Empty").grey) + helpers.space() + }else{ + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + } + return next() + } + }) + } - return next() - } - }) } - } diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 87134bc..99b4fae 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -22,7 +22,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⟲ Rollback".green) helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayRegions(response) + helpers.displayServers(response) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⟲ Rollback (failed)".yellow) diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index a90f5ca..17e7876 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -22,7 +22,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⟳ Forward".green) helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayRegions(response) + helpers.displayServers(response) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⟳ Forward (failed)".yellow) diff --git a/lib/surge.js b/lib/surge.js index 05ea359..b33475b 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -153,7 +153,8 @@ module.exports = function(config){ "revoke", "encrypt", "props", - "dns" + "dns", + "zone" ] if (commands.indexOf(cmd) !== -1) { @@ -584,7 +585,26 @@ module.exports = function(config){ var onion = [ whitelist, endpoint, pkg, help, version, preAuth, creds, auth, postAuth, - dns, space + dns("dns"), space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + + surge.zone = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, auth, postAuth, + dns("zone"), space ] return function(){ var argv = parse(arguments[arguments.length -1]) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 26ab004..a9bd0bf 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -527,6 +527,20 @@ exports.displayRegions = function(payload, domain){ space() } +exports.displayServers = function(payload, domain){ + var table = tables.servers(payload) + var rows = table.toString().split("\n") + //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) + //space() + //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) + //log(" Origin regions…".grey) + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + exports.displayInvites = function(payload){ var table = tables.invites(payload.invites) var rows = table.toString().split("\n") @@ -536,13 +550,37 @@ exports.displayInvites = function(payload){ space() } -exports.displayRecords = function(payload){ - var table = tables.records(payload.records) + + + + +var displayZoneFull = exports.displayZoneFull = function(payload){ + var table = tables.zone(payload) var rows = table.toString().split("\n") - rows.forEach(function(row, i){ log(row.grey) }) + rows.forEach(function(row, i){ log("", row.grey); }) space() } +var displayZonePart = exports.displayZonePart = function(payload){ + var table = tables.customRecords(payload) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ log("", row.grey); }) + space() +} + +exports.displayRecords = function(arg, type){ + reset() + if (!arg.records || arg.records.length === 0){ + trunc("Empty".grey) + }else{ + if (type === "dns"){ + return displayZonePart(arg) + }else if(type === "zone"){ + return displayZoneFull(arg) + } + } +} + exports.revisionSelector = function(req, callback){ var options = { diff --git a/lib/util/tables.js b/lib/util/tables.js index 0eb7190..7bc1102 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -1,7 +1,47 @@ var Table = require("cli-table3") -exports.records = function(records){ +var fqdn = function(domain){ + return domain.match(/\.$/) ? domain : domain + "." +} + +var dotnotation = function(email){ + return email.replace("@", ".") +} + +exports.servers = function(payload){ + + var table = new Table({ + //head:[{ colSpan:4, content: payload.metadata.preview.grey, hAlign:"center" }], + style: { + 'compact': true, + 'padding-left': 3, + 'padding-right': 3, + } + }) + + var rows = [] + + var report = function(str, status){ + if (["green"].indexOf(status) !== -1) return str.green + return str.grey + } + + payload.data.forEach(function(s){ + table.push([ + { hAlign: "center", content: s.info.grey }, + s.domain, + s.location, + { hAlign:"center", content: report(s.status, s.statusColor) } + ]) + }) + + return table + +} + + +exports.customRecords = function(dninfo){ var table = new Table({ chars: { 'top': '' , @@ -25,17 +65,183 @@ exports.records = function(records){ } }) - records.forEach(function(record){ - var row = [ - { hAlign: "center", content: record.id.grey }, - { hAlign: "center", content: record.type.blue }, - { hAlign: "center", content: record.name.green }, - { hAlign: "right", content: record.value.green } - ] - table.push(row) + dninfo.records.forEach(function(record){ + table.push([ + { hAlign: "left", content: record.name }, + { hAlign: "left", content: record.type.blue }, + { hAlign: "left", content: record.priority }, + { hAlign: "left", content: record.value.green.underline }, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + ]) }) return table + +} + +exports.zone = function(dninfo){ + var records = dninfo.records + + var table = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': ' ' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': '' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 5 + } + }) + + // $ORIGIN + table.push([ + { hAlign: "left", content: ("$ORIGIN " + fqdn(dninfo.origin)).grey, colSpan: 5 }, + ]) + + // $TTL + var ttl = dninfo.props ? (dninfo.props.ttl || 1600) : 1600 + table.push([ + { hAlign: "left", content: ("$TTL " + ttl).grey, colSpan: 5 }, + ]) + + var current; + + dninfo.records.forEach(function(record){ + // if (current !== record.category){ + // table.push([{ content: "", colSpan: 5 }]) + // current = record.category + // } + + if (record.type === "SOA"){ + table.push([ + { hAlign: "left", content: fqdn(record.name).grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: fqdn(record.value).grey }, + { hAlign: "left", content: dotnotation(record.email).grey }, + { hAlign: "left", content: ("( " + dninfo.serial + " 1d 2h 4w 1h )").grey }, + ]) + }else if (record.type === "NS"){ + table.push([ + { hAlign: "left", content: fqdn(record.name).grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: fqdn(record.value).grey}, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + ]) + }else if (record.category === "glue"){ + table.push([ + { hAlign: "left", content: fqdn(record.name).grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: record.value.grey}, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + ]) + }else{ + table.push([ + { hAlign: "left", content: record.name.grey }, + { hAlign: "left", content: record.type.grey }, + { hAlign: "left", content: record.value.grey}, + { hAlign: "left", content: (record.id ? record.id : "").grey }, + { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + ]) + } + }) + + + + + + //table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + // // SOA + // table.push([ + // { hAlign: "left", content: "surge.world.".grey }, + // { hAlign: "left", content: "SOA".grey }, + // { hAlign: "left", content: "ns1.surge.world".grey }, + // { hAlign: "left", content: "username.example.com ( 2007120710 1d 2h 4w 1h )".grey }, + // ]) + + // table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + // // NS + // records.filter(function(record){ return record.type == "GLUE" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: "surge.world.".grey }, + // { hAlign: "left", content: "NS".grey }, + // { hAlign: "left", content: (record.name + ".surge.world").grey }, + // { hAlign: "left", content: "; New York".grey }, + // ]) + // }) + + // table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + // // GLUE + // records.filter(function(record){ return record.type == "GLUE" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: "A".grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: "; glue".grey }, + // ]) + // }) + + // table.push([{ hAlign: "left", content: "", colSpan: 4 }]) + + + // // A + // records.filter(function(record){ return record.type == "A" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: record.type.grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: ";".grey + (record.id ? record.id : "N/A").grey }, + // ]) + // }) + + + // // CNAME + // records.filter(function(record){ return record.type == "CNAME" }).forEach(function(record){ + // table.push([ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: record.type.grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: ";".grey + record.id.grey }, + // ]) + // }) + + // records.forEach(function(record){ + // if (record.id.indexOf("rec") === 0){ + // var row = [ + // { hAlign: "left", content: record.name.green }, + // { hAlign: "left", content: record.type.green }, + // { hAlign: "left", content: record.value.green }, + // { hAlign: "left", content: "; ".green + record.id.green }, + // ] + // }else{ + // var row = [ + // { hAlign: "left", content: record.name.grey }, + // { hAlign: "left", content: record.type.grey }, + // { hAlign: "left", content: record.value.grey }, + // { hAlign: "left", content: "; resolved via Geo IP".grey }, + // ] + // } + + // table.push(row) + // }) + + return table } From ac9040a82f20362dce7c93857cc289043cfd4d41 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 2 Jul 2020 02:44:24 -0700 Subject: [PATCH 128/214] renaming attrs --- lib/util/tables.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 7bc1102..9e80256 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -27,7 +27,7 @@ exports.servers = function(payload){ return str.grey } - payload.data.forEach(function(s){ + payload.servers.forEach(function(s){ table.push([ { hAlign: "center", content: s.info.grey }, s.domain, From 0909e4a18097be9da297c43d1c1650ccab9563f4 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 4 Jul 2020 03:53:40 -0700 Subject: [PATCH 129/214] adds output for invalid dns call --- lib/middleware/deploy.js | 5 +++- lib/middleware/dns.js | 55 ++++++++++++++++++++++++++++------------ lib/util/tables.js | 20 +++++++++++---- 3 files changed, 58 insertions(+), 22 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 0ec9b8b..857b742 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -4,6 +4,7 @@ var localCreds = require("../util/creds.js") var surge = require('../surge') var surgeSDK = require("surge-sdk") var ProgressBar = require("progress") +var fs = require("fs") module.exports = function(req, next){ @@ -71,7 +72,7 @@ module.exports = function(req, next){ // refresh view if (!progressDone[payload.id]){ if (payload.written / payload.total === 1) progressDone[payload.id] = true - progress[payload.id].update(payload.written / payload.total) + progress[payload.id].update(payload.written / payload.total) } } catch(e){} @@ -100,6 +101,8 @@ module.exports = function(req, next){ * */ + //.on("data", console.log) + .on("info", function(payload){ req.info = payload helpers.displayPreview(payload) diff --git a/lib/middleware/dns.js b/lib/middleware/dns.js index c9b2a49..eb6fc97 100644 --- a/lib/middleware/dns.js +++ b/lib/middleware/dns.js @@ -52,10 +52,17 @@ module.exports = function(type){ if (args.cmd === "add") { add(args.domain, args, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() - error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) - helpers.space() - process.exit(1) + if (error.status === 405){ + helpers.space() + helpers.trunc("Invalid".yellow + (" - " + error.message).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } } else { helpers.space() helpers.displayRecords(rsp, type) @@ -68,12 +75,19 @@ module.exports = function(type){ } else if (args.cmd === "rem") { rem(args.domain, args.type, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() - helpers.displayRecords(rsp, type) - helpers.space() - error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) - helpers.space() - process.exit(1) + if (error.status === 405){ + helpers.space() + helpers.trunc("Invalid".yellow + (" - " + error.message).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + helpers.displayRecords(rsp, type) + helpers.space() + error.messages.forEach(function(m){ helpers.trunc("Error".red + (" - " + m).grey); }) + helpers.space() + process.exit(1) + } } else { helpers.space() helpers.displayRecords(rsp, type) @@ -85,12 +99,21 @@ module.exports = function(type){ } else { get(args.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { - helpers.space() - helpers.displayRecords(rsp, type) - helpers.space() - helpers.trunc("Error".red + (" - " + error.message).grey) - helpers.space() - process.exit(1) + if (error.status === 405){ + helpers.space() + helpers.trunc("Invalid".yellow + (" - " + error.message).grey) + helpers.space() + process.exit(1) + }else{ + helpers.space() + if (rsp){ + helpers.displayRecords(rsp, type) + helpers.space() + } + helpers.trunc("Error".red + (" - " + error.message).grey) + helpers.space() + process.exit(1) + } } else { var keys = Object.keys(rsp) if (keys.length == 0){ diff --git a/lib/util/tables.js b/lib/util/tables.js index 9e80256..9446e03 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -28,12 +28,22 @@ exports.servers = function(payload){ } payload.servers.forEach(function(s){ - table.push([ + if(s.hasOwnProperty("ip")){ + table.push([ + { hAlign: "center", content: s.info.grey }, + s.domain, + s.location, + s.ip.grey, + { hAlign:"center", content: report(s.status, s.statusColor) } + ]) + }else{ + table.push([ { hAlign: "center", content: s.info.grey }, - s.domain, - s.location, - { hAlign:"center", content: report(s.status, s.statusColor) } - ]) + s.domain, + s.location, + { hAlign:"center", content: report(s.status, s.statusColor) } + ]) + } }) return table From 5854655511487f0b12e44d730d601f0598dc194e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 4 Jul 2020 04:16:36 -0700 Subject: [PATCH 130/214] fixes progress bar edgecase: --- lib/middleware/deploy.js | 1 + package-lock.json | 6 +++--- package.json | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 857b742..1e664aa 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -72,6 +72,7 @@ module.exports = function(req, next){ // refresh view if (!progressDone[payload.id]){ if (payload.written / payload.total === 1) progressDone[payload.id] = true + if (payload.written > payload.total) progressDone[payload.id] = true progress[payload.id].update(payload.written / payload.total) } diff --git a/package-lock.json b/package-lock.json index 1b578a9..b754ad7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1473,9 +1473,9 @@ "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "promise.allsettled": { "version": "1.0.2", diff --git a/package.json b/package.json index 292794d..0c03439 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "inquirer": "^6.2.2", "prompt": "~0.2.14", "cli-table3": "^0.5.1", - "progress": "1.1.8", + "progress": "2.0.3", "is-domain": "0.0.1", "moniker": "0.1.2", "netrc": "0.1.4", From 0f43f069bd36a86728d054bdb2f27c211617dbc5 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 11 Jul 2020 01:47:28 -0700 Subject: [PATCH 131/214] bumps surge-sdk --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index b754ad7..97cae2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1767,9 +1767,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.2.0.tgz", - "integrity": "sha512-fbCvHIfsaV1QF/NaNQSm0agQFld07GErF71XYDQ7YTpTbcyZSedhdsUFE23d4irULpL5GlstlCd51N/oEl++6w==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.2.3.tgz", + "integrity": "sha512-f6BfgDzTzmE/Yeb+DR3BGresV+Jlsod9PoDikyrkYGfoGvmv2ZKiKy4cPml/KQFBmiD9+OkMSHqgbPngSQvXJg==", "requires": { "request": "^2.88.0", "split": "^1.0.1", diff --git a/package.json b/package.json index 0c03439..aede966 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { - "surge-sdk": "0.2.0", + "surge-sdk": "0.2.3", "minimist": "1.2.3", "inquirer": "^6.2.2", "prompt": "~0.2.14", From 822fdc8ef5c7b3553856e8a02b882e45858f9201 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 11 Jul 2020 02:02:42 -0700 Subject: [PATCH 132/214] patches lodash --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f7a271e..897be30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1028,9 +1028,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "log-symbols": { "version": "3.0.0", From e815aa6bf47a01eb2bb59da13fbdcd7f2824f330 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 13 Jul 2020 01:19:10 -0700 Subject: [PATCH 133/214] version bump v0.22.0. major upgrades --- lib/middleware/deploy.js | 4 +++- lib/util/helpers.js | 5 +++++ package-lock.json | 8 ++++---- package.json | 4 ++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 1e664aa..7c1c241 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -102,7 +102,9 @@ module.exports = function(req, next){ * */ - //.on("data", console.log) + // .on("progress", function(d){ + // console.log(JSON.stringify(d)) + // }) .on("info", function(payload){ req.info = payload diff --git a/lib/util/helpers.js b/lib/util/helpers.js index a9bd0bf..472c497 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -178,6 +178,11 @@ var fetchAccount = exports.fetchAccount = function(endpoint){ } +var displayErrors = exports.displayErrors = function(error){ + error.messages.forEach(function(m){ trunc("Error".red + (" - " + m).grey); }) +} + + var fetchToken = exports.fetchToken = function(endpoint){ return function(email, pass, callback){ diff --git a/package-lock.json b/package-lock.json index 897be30..64c2629 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.6", + "version": "0.21.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1733,9 +1733,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.2.3.tgz", - "integrity": "sha512-f6BfgDzTzmE/Yeb+DR3BGresV+Jlsod9PoDikyrkYGfoGvmv2ZKiKy4cPml/KQFBmiD9+OkMSHqgbPngSQvXJg==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.2.4.tgz", + "integrity": "sha512-IodtZNMyA1Y12vVxVUnwJW181h4EY8KSSGYCPAJrJxHXvGOOwvJuDmxLQPhJ0PmnwSVKc78QmOq+Fm80ZU4DnQ==", "requires": { "request": "^2.88.0", "split": "^1.0.1", diff --git a/package.json b/package.json index aede966..7a29bbe 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "surge", - "version": "0.21.6", + "version": "0.22.0", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { - "surge-sdk": "0.2.3", + "surge-sdk": "0.2.4", "minimist": "1.2.3", "inquirer": "^6.2.2", "prompt": "~0.2.14", From 2b06e7cca91814bf5a73215aa37796457edfaee2 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 11 Sep 2020 15:15:15 -0700 Subject: [PATCH 134/214] updates tables and rollback output --- lib/middleware/cutover.js | 2 +- lib/middleware/deploy.js | 12 +++++-- lib/middleware/discard.js | 2 +- lib/middleware/props.js | 27 +-------------- lib/middleware/rollback.js | 4 +-- lib/middleware/rollfore.js | 4 +-- lib/util/helpers.js | 67 ++++++++++++++++++++++++++++++++++++-- lib/util/tables.js | 40 ++++++++++++++--------- 8 files changed, 105 insertions(+), 53 deletions(-) diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 7eb8362..98976ff 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -38,7 +38,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.displayServers(response) + helpers.displayServers(response.servers) helpers.trunc("Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⤮ Cutover".yellow) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 7c1c241..18eacc4 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -108,8 +108,10 @@ module.exports = function(req, next){ .on("info", function(payload){ req.info = payload - helpers.displayPreview(payload) - helpers.displayServers(payload, req.domain) + + // helpers.displayServers(payload.servers) + // helpers.displayPreview(payload) + helpers.displayPublishInfo(payload) }) @@ -142,6 +144,12 @@ module.exports = function(req, next){ } }) + .on("ssl", function(payload){ + payload.certs.forEach(function(cert){ + helpers.log(helpers.smart("CA:").grey + " " + (cert.issuer) + ( " (exp. " + cert.expInDays + " days)").grey) + }) + }) + /** * collect diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index b84d600..0d438b4 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -60,7 +60,7 @@ module.exports = function(req, next){ // display regions helpers.space() //helpers.displayRegions(response) - helpers.displayServers(response) + helpers.displayServers(response.servers) helpers.space() if (response.uncached.change){ diff --git a/lib/middleware/props.js b/lib/middleware/props.js index 0a99e98..f24d5b8 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/props.js @@ -23,32 +23,7 @@ module.exports = function(req, next){ helpers.space() process.exit(1) } else { - var keys = Object.keys(rsp) - if (keys.length == 0){ - helpers.space() - helpers.trunc(("Empty").grey) - }else{ - helpers.space() - keys.forEach(function(k){ - var key = k - var value = rsp[k] - - if (rsp[k] === null){ - key = helpers.shortsmart(key).grey - value = "null".grey - } else if (!isNaN(parseInt(value))){ - key = helpers.shortsmart(key).grey - value = value.blue - } else { - key = helpers.shortsmart(key).grey - value = value.green - } - - helpers.log(key + " : ".grey + value) - }) - helpers.space() - } - + helpers.displayProps(rsp) return next() } }) diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 99b4fae..5234e7b 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -22,10 +22,10 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⟲ Rollback".green) helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayServers(response) + helpers.displayServers(response.servers) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.trunc("⟲ Rollback (failed)".yellow) + helpers.trunc("⟲ Rollback (redundant)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index 17e7876..f6df403 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -22,10 +22,10 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⟳ Forward".green) helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayServers(response) + helpers.displayServers(response.servers) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ - helpers.trunc("⟳ Forward (failed)".yellow) + helpers.trunc("⟳ Forward (redundant)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 472c497..dc95b9e 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -511,7 +511,8 @@ exports.displayRevision = function(payload){ } exports.displayPreview = function(payload){ - log(smart("preview:").grey + " " + payload.metadata.preview.underline) + //log(smart("preview:").grey + " " + payload.metadata.preview.underline) + log(" live preview..............................................".grey + " " + payload.metadata.preview.grey.underline) } exports.displayCname = function(payload){ @@ -532,8 +533,8 @@ exports.displayRegions = function(payload, domain){ space() } -exports.displayServers = function(payload, domain){ - var table = tables.servers(payload) +var displayServers = exports.displayServers = function(servers){ + var table = tables.servers(servers) var rows = table.toString().split("\n") //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) //space() @@ -546,6 +547,66 @@ exports.displayServers = function(payload, domain){ space() } +var displayProps = exports.displayProps = function(props){ + var keys = Object.keys(props) + if (keys.length == 0){ + //space() + trunc(("Empty").grey) + }else{ + //space() + keys.forEach(function(k){ + var key = k + var value = props[k] + + if (props[k] === null){ + key = shortsmart(key).grey + value = "null".grey + } else if (!isNaN(parseInt(value))){ + key = shortsmart(key).grey + value = value.blue + } else { + key = shortsmart(key).grey + value = value.green + } + log(" " + key + ": ".grey + value) + }) + //space() + } +} + +exports.displayPublishInfo = function(payload){ + + if (payload.props){ + displayProps(payload.props) + } + + var table = tables.servers(payload.servers) + var rows = table.toString().split("\n") + var tableCols = rows[0].replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '').length + + space() + rows.forEach(function(row, i){ log(" ", row.grey) }) + space() + + var pad = function(str, len){ + if (str.length >= len) return str + return pad("." + str, len) + } + + var displayURL = function(u){ + var pre = u.name + " " + var pst = u.domain + var preCount = pre.length + var pstCount = pst.length + var numDots = tableCols - pre.length - pst.length - 2 + var dots = pad(" ", numDots) + log(" " + [pre, dots, pst.underline].join("").grey) + } + + if (payload.urls) payload.urls.forEach(displayURL) + space() +} + exports.displayInvites = function(payload){ var table = tables.invites(payload.invites) var rows = table.toString().split("\n") diff --git a/lib/util/tables.js b/lib/util/tables.js index 9446e03..dd8aebc 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -9,7 +9,7 @@ var dotnotation = function(email){ return email.replace("@", ".") } -exports.servers = function(payload){ +exports.servers = function(servers){ var table = new Table({ //head:[{ colSpan:4, content: payload.metadata.preview.grey, hAlign:"center" }], @@ -27,23 +27,31 @@ exports.servers = function(payload){ return str.grey } - payload.servers.forEach(function(s){ + servers.forEach(function(s){ + var arr = [] + + if(s.hasOwnProperty("info")) + arr.push({ hAlign: "center", content: s.info.grey }) + + if(s.hasOwnProperty("domain")) + arr.push(s.domain) + + if(s.hasOwnProperty("location")) + arr.push(s.location) + if(s.hasOwnProperty("ip")){ - table.push([ - { hAlign: "center", content: s.info.grey }, - s.domain, - s.location, - s.ip.grey, - { hAlign:"center", content: report(s.status, s.statusColor) } - ]) - }else{ - table.push([ - { hAlign: "center", content: s.info.grey }, - s.domain, - s.location, - { hAlign:"center", content: report(s.status, s.statusColor) } - ]) + + if (["N/A", "available"].indexOf(s.ip) !== -1){ + arr.push({ hAlign:"center", content: s.ip.grey }) + }else{ + arr.push({ hAlign:"left", content: s.ip.grey }) + } } + + if(s.hasOwnProperty("status")) + arr.push({ hAlign:"center", content: report(s.status, s.statusColor) }) + + table.push(arr) }) return table From a0308e8299f0a9341f8391869a049983fb182e38 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 27 Oct 2020 10:53:35 -0700 Subject: [PATCH 135/214] updates cert provisioning and cert list --- lib/middleware/deploy.js | 6 ++-- lib/middleware/encrypt.js | 6 ++-- lib/surge.js | 23 ++++++++++++- lib/util/helpers.js | 61 +++++++++++++++++++++++++++++---- lib/util/tables.js | 72 ++++++++++++++++++++++++++++++++++++++- 5 files changed, 152 insertions(+), 16 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 18eacc4..7a413fc 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -52,13 +52,13 @@ module.exports = function(req, next){ */ .on("progress", function(payload){ - try { // we have two different display for the progress bars var displays = { "upload": helpers.smart('upload:').grey + ' [:bar] :percent', - "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' + "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent', + "encrypt": helpers.smart('encryption:').grey + ' [:bar] :percent' } // create progress bar (if one doesnt exist) @@ -108,7 +108,6 @@ module.exports = function(req, next){ .on("info", function(payload){ req.info = payload - // helpers.displayServers(payload.servers) // helpers.displayPreview(payload) helpers.displayPublishInfo(payload) @@ -266,7 +265,6 @@ module.exports = function(req, next){ } else { helpers.trunc("Success!".green + (" - Published to " + (req.domain).underline).grey) } - helpers.space() return next() }) diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js index 8bf467b..49fbb8b 100644 --- a/lib/middleware/encrypt.js +++ b/lib/middleware/encrypt.js @@ -9,10 +9,10 @@ module.exports = function(req, next){ defaults: helpers.defaults }) - helpers.log("ENCRYPT:", req.argv) - helpers.log({ user: "token", pass: req.creds.token }) + var domain = req.argv["_"][0] - sdk.encrypt(req.domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + sdk.encrypt(domain, { user: "token", pass: req.creds.token }, function(error, rsp){ + console.log(rsp) return next() }) diff --git a/lib/surge.js b/lib/surge.js index b33475b..3b2a396 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -58,6 +58,7 @@ var discard = require("./middleware/discard") var invite = require("./middleware/invite") var revoke = require("./middleware/revoke") var encrypt = require("./middleware/encrypt") +var certs = require("./middleware/certs") var dns = require("./middleware/dns") var props = require("./middleware/props") @@ -154,7 +155,8 @@ module.exports = function(config){ "encrypt", "props", "dns", - "zone" + "zone", + "certs" ] if (commands.indexOf(cmd) !== -1) { @@ -559,6 +561,25 @@ module.exports = function(config){ } } + surge.certs = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, auth, postAuth, + certs, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.props = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub diff --git a/lib/util/helpers.js b/lib/util/helpers.js index dc95b9e..44b1395 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -547,7 +547,9 @@ var displayServers = exports.displayServers = function(servers){ space() } -var displayProps = exports.displayProps = function(props){ +var displayProps = exports.displayProps = function(props, args){ + args = args || { short: false } + var keys = Object.keys(props) if (keys.length == 0){ //space() @@ -568,25 +570,58 @@ var displayProps = exports.displayProps = function(props){ key = shortsmart(key).grey value = value.green } - log(" " + key + ": ".grey + value) + + if (props[k] !== null){ + log(" " + key + ": ".grey + value) + }else{ + if (!args.short) + log(" " + key + ": ".grey + value) + } }) //space() } } -exports.displayPublishInfo = function(payload){ - if (payload.props){ - displayProps(payload.props) +var displayCertInfo = exports.displayCertInfo = function(payload, args){ + space() + if (payload.certs.length === 0){ + if (args.showEmpty) trunc("Empty".grey) + }else{ + if (args.short === true){ + var table = tables.certsShort(payload.certs, args.colWidth) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + }else{ + payload.certs.forEach(function(cert, i){ + var table = tables.cert(cert) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + }) + space() + } } + +} + +exports.displayPublishInfo = function(payload){ + + if (payload.props) + displayProps(payload.props, { short: true }) var table = tables.servers(payload.servers) var rows = table.toString().split("\n") var tableCols = rows[0].replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '').length + + if (payload.certs) displayCertInfo(payload, { short: true, showEmpty: false, colWidth: tableCols }) - space() + //space() rows.forEach(function(row, i){ log(" ", row.grey) }) - space() + //space() var pad = function(str, len){ if (str.length >= len) return str @@ -607,6 +642,9 @@ exports.displayPublishInfo = function(payload){ space() } + + + exports.displayInvites = function(payload){ var table = tables.invites(payload.invites) var rows = table.toString().split("\n") @@ -737,10 +775,19 @@ exports.parseDomainsEmails = function(args){ } exports.defaults = { + + 403: function(e, r, b){ + space() + trunc("Unauthorized".yellow + " - Insufficient permission to access domain.".grey) + space() + process.exit(1) + }, + 404: function(e, r, b){ space() trunc("Error".red + " - Not Found".grey) space() process.exit(1) } + } \ No newline at end of file diff --git a/lib/util/tables.js b/lib/util/tables.js index dd8aebc..ef9e28c 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -56,7 +56,77 @@ exports.servers = function(servers){ return table -} +} + +exports.certsShort = function(certs, colWidth){ + + var table = new Table({ + colWidths:[colWidth - 23, 20], + style: { + 'compact': true, + 'padding-left': 2, + 'padding-right': 2, + } + }) + + certs.forEach(function(cert, i){ + var leftCol; + var rightCol; + if (cert.expInDays < -15){ + leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + if (i < certs.length -1) leftCol = leftCol + "\n" + rightCol = "Expired" + table.push([leftCol.red, rightCol.red]) + }else if(cert.expInDays < 0){ + leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + if (i < certs.length -1) leftCol = leftCol + "\n" + rightCol = ("Expired\n" + Math.abs(cert.expInDays) + " days ago") + table.push([leftCol.red, rightCol.red]) + }else if(cert.expInDays < 15){ + leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + if (i < certs.length -1) leftCol = leftCol + "\n" + rightCol = ("Valid\n" + Math.abs(cert.expInDays) + " more days") + table.push([leftCol.yellow, rightCol.yellow]) + }else{ + leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + if (i < certs.length -1) leftCol = leftCol + "\n" + rightCol = ("Valid\n" + Math.abs(cert.expInDays) + " more days") + table.push([leftCol.green, rightCol.green]) + } + }) + + return table +} + +exports.cert = function(cert){ + + var table = new Table({ + colWidths:[20, 60], + style: { + 'compact': true, + 'padding-left': 3, + 'padding-right': 3, + } + }) + + var row = {} + var days = "" + if (cert.expInDays < -15){ + days = ("Expired").red + } else if (cert.expInDays < 0){ + days = (cert.expInDays.toString() + " days (expired)").red + } else if (cert.expInDays > 15){ + days = (cert.expInDays.toString() + " days").green + } else { + days = (cert.expInDays.toString() + " days").yellow + } + table.push({ "Subject": [cert.subject] }) + table.push({ "Issuer": [cert.issuer] }) + table.push({ "Alt Names": cert.subjectAltNames.join(", ") }) + table.push({ "Expires": [days] }) + table.push({ "Auto-Renew": ["false".grey] }) + return table +} exports.customRecords = function(dninfo){ From 9ba83b381bec901a814097d25b54e49488d6c41a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 4 Nov 2020 01:25:38 -0800 Subject: [PATCH 136/214] don't listen for cert event --- lib/middleware/deploy.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 7a413fc..80a018e 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -133,15 +133,15 @@ module.exports = function(req, next){ * */ - .on("cert", function(payload){ - try{ - helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) - } catch(e){ - helpers.space() - helpers.log(helpers.smart("Error").red + (" - " + "please report error to support@surge.sh").grey) - helpers.space() - } - }) + // .on("cert", function(payload){ + // try{ + // helpers.log(helpers.smart("encryption:").grey + " " + payload.data.issuer + " - " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) + // } catch(e){ + // helpers.space() + // helpers.log(helpers.smart("Error").red + (" - " + "please report error to support@surge.sh").grey) + // helpers.space() + // } + // }) .on("ssl", function(payload){ payload.certs.forEach(function(cert){ From aa1c5e78831588efb27f87770201a516b60a6c0e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 4 Nov 2020 01:25:54 -0800 Subject: [PATCH 137/214] don't listen for cert event --- lib/middleware/certs.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/middleware/certs.js diff --git a/lib/middleware/certs.js b/lib/middleware/certs.js new file mode 100644 index 0000000..a12908c --- /dev/null +++ b/lib/middleware/certs.js @@ -0,0 +1,19 @@ + +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + + sdk.certs(domain, { user: "token", pass: req.creds.token }, function(error, payload){ + helpers.displayCertInfo(payload, { short: false, showEmpty: true }) + return next() + }) + +} \ No newline at end of file From faf5a71ee01f2da036b1f47632b4e5ef1d72013a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 9 Nov 2020 16:19:43 -0800 Subject: [PATCH 138/214] adds encrypt call --- lib/middleware/encrypt.js | 151 +++++++++++++++++++++++++++++++++++++- lib/surge.js | 10 ++- 2 files changed, 156 insertions(+), 5 deletions(-) diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js index 49fbb8b..f206b9a 100644 --- a/lib/middleware/encrypt.js +++ b/lib/middleware/encrypt.js @@ -4,16 +4,159 @@ var surgeSDK = require("surge-sdk") module.exports = function(req, next){ + var progress = {} + var progressDone = {} + var ts = new Date().toJSON() + var sdk = surgeSDK({ endpoint: req.endpoint.format(), defaults: helpers.defaults }) + var domain = req.argv["_"][0] - sdk.encrypt(domain, { user: "token", pass: req.creds.token }, function(error, rsp){ - console.log(rsp) - return next() + sdk.encrypt(domain, { + "user":"token", + "pass": req.creds.token + }, { + "version" : req.pkg.version, + "cmd": req.config.cmd, + "timestamp": ts + }, req.argv) + + + /** + * display progress bars + * + * + */ + + .on("progress", function(payload){ + try { + + // we have two different display for the progress bars + var displays = { + "upload": helpers.smart('upload:').grey + ' [:bar] :percent', + "encrypt": helpers.smart('encryption:').grey + ' [:bar] :percent' + } + + // create progress bar (if one doesnt exist) + progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { + complete: '=', incomplete: ' ', width: 25, total: payload.total + }) + + // clear file name on last update + var file = payload.written >= payload.total ? "" : payload.file + + // refresh view + if (!progressDone[payload.id]){ + if (payload.written / payload.total === 1) progressDone[payload.id] = true + if (payload.written > payload.total) progressDone[payload.id] = true + progress[payload.id].update(payload.written / payload.total) + } + + } catch(e){} + }) - + + + /** + * success + * + * the cert application is complete + * + */ + + // .on("success", function(){ + // helpers.space() + // if (req.argv.stage){ + // helpers.trunc("Success!".green + (" - Preveiw available at " + (req.info.metadata.preview).underline).grey) + // } else { + // helpers.trunc("Success!".green + (" - Published to ").grey) + // } + // helpers.space() + // return next() + // }) + + + /** + * unauthenticated + * + */ + + .on("info", function(payload){ + req.info = payload + helpers.displayCertInfo(payload, { short: false, showEmpty: true }) + helpers.space() + // helpers.displayServers(payload.servers) + // helpers.displayPreview(payload) + //helpers.displayPublishInfo(payload) + }) + + + /** + * collect + * + * payload includes information needed to subscribe to a plan that will then accept the upload + * + */ + + .on("collect", function(payload){ + var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey + helpers.log() + if (payload.hasOwnProperty("perks")) { + helpers.log(msg += "\n\n Includes...".blue) + payload.perks.forEach(function(perk){ helpers.log((" - " + perk).blue); }) + helpers.log() + } else { + helpers.log(msg) + } + req.plan = payload.plan.name + helpers.payment(req, payload.stripe_pk, payload.card)(function(paymentToken){ + sdk.plan({ + "plan": payload.plan.id, + "token": paymentToken, + "timestamp": ts + }, { "user": "token", "pass": req.creds.token }, function(errors, rsp){ + if (errors) { + helpers.space() + helpers.trunc("Error".red + " - troubles switching plan".grey) + helpers.space() + }else{ + helpers.space() + helpers.trunc(rsp.msg.grey) + helpers.space() + } + }) + }) + }) + + + /** + * unauthenticated + * + */ + + .on("unauthenticated", function(payload){ + helpers.space() + helpers.trunc("Aborted".yellow + (" - local token has expired and cleared. please try again.").grey) + helpers.space() + localCreds(req.argv.endpoint).set(null) + process.exit(1) + }) + + + /** + * forbidden + * + */ + + .on("forbidden", function(payload){ + helpers.space() + helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) + helpers.space() + process.exit(1) + }) + } \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index 3b2a396..51e63a9 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -542,13 +542,21 @@ module.exports = function(config){ } } + // endpoint, pkg, help, version, space, + // preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, + // preProject, project, postProject, + // preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, + // preSize, size, postSize, + // prePublish, protocol, deploy, postPublish, ipaddress + surge.encrypt = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, space, - preAuth, creds, auth, postAuth, + preAuth, creds, welcome, auth, authInfo, postAuth, + // discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, encrypt, space ] return function(){ From 71a3336652fee1c408aba55345f349cea4f10ba7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Nov 2020 02:49:25 -0800 Subject: [PATCH 139/214] version bump v0.21.7. remove prompt. replace with add colors. --- lib/middleware/deploy.js | 6 +- lib/middleware/util/helpers.js | 3 +- package-lock.json | 106 ++------------------------------- package.json | 6 +- 4 files changed, 12 insertions(+), 109 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index a7ebf03..09c735f 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -76,7 +76,6 @@ module.exports = function(req, next){ //console.log("tick", tick.toString()) if (Object.keys(progress).length > 1) global.ponr = true - //try { try { @@ -251,7 +250,10 @@ module.exports = function(req, next){ : payload.file // refresh view - progress[payload.id].update(payload.written / payload.total, { file: file }) + if (!(payload.id === "cdn" && payload.end)){ + progress[payload.id].update(payload.written / payload.total, { file: file }) + } + } catch(e){ //console.log(e) } diff --git a/lib/middleware/util/helpers.js b/lib/middleware/util/helpers.js index 1d3d3ea..d38004a 100644 --- a/lib/middleware/util/helpers.js +++ b/lib/middleware/util/helpers.js @@ -1,5 +1,4 @@ -var prompt = require('prompt') - +var colors = require("colors") var request = require("request") var localCreds = require("./creds.js") var os = require('os') diff --git a/package-lock.json b/package-lock.json index 1a1dd63..c631c1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.6", + "version": "0.21.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -326,9 +326,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "combined-stream": { "version": "1.0.7", @@ -357,11 +357,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -385,11 +380,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -507,11 +497,6 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, - "eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" - }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -705,11 +690,6 @@ "sshpk": "^1.7.0" } }, - "i": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", - "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1255,11 +1235,6 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, - "ncp": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" - }, "netrc": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", @@ -1398,11 +1373,6 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" - }, "progress": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", @@ -1421,18 +1391,6 @@ "iterate-value": "^1.0.0" } }, - "prompt": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", - "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", - "requires": { - "pkginfo": "0.x.x", - "read": "1.0.x", - "revalidator": "0.1.x", - "utile": "0.2.x", - "winston": "0.8.x" - } - }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -1513,11 +1471,6 @@ "signal-exit": "^3.0.2" } }, - "revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" - }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -1646,11 +1599,6 @@ "tweetnacl": "~0.14.0" } }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -1826,26 +1774,6 @@ "resolved": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" }, - "utile": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", - "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", - "requires": { - "async": "~0.2.9", - "deep-equal": "*", - "i": "0.3.x", - "mkdirp": "0.x.x", - "ncp": "0.4.x", - "rimraf": "2.x.x" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - } - } - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -1891,32 +1819,6 @@ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", "dev": true }, - "winston": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", - "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", - "requires": { - "async": "0.2.x", - "colors": "0.6.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - }, - "pkginfo": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" - } - } - }, "workerpool": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", diff --git a/package.json b/package.json index 6ac15ef..d86acb4 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,22 @@ { "name": "surge", - "version": "0.21.6", + "version": "0.21.7", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", "dependencies": { "cli-table3": "^0.5.1", - "surge-fstream-ignore": "^1.0.6", + "colors": "^1.4.0", "inquirer": "^6.2.2", "is-domain": "0.0.1", "minimist": "1.2.3", "moniker": "0.1.2", "netrc": "0.1.4", "progress": "1.1.8", - "prompt": "~0.2.14", "read": "1.0.5", "request": "^2.88.0", "split": "0.3.1", + "surge-fstream-ignore": "^1.0.6", "surge-ignore": "0.2.0", "tarr": "1.1.0", "url-parse-as-address": "1.0.0" From 4007cda2e29acbddb6a712277a799471232c4271 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 10 Nov 2020 02:50:27 -0800 Subject: [PATCH 140/214] updates mocha --- package-lock.json | 577 +++++++++++++--------------------------------- package.json | 2 +- 2 files changed, 163 insertions(+), 416 deletions(-) diff --git a/package-lock.json b/package-lock.json index c631c1b..5772e10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "ajv": { "version": "6.9.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", @@ -77,18 +83,6 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, - "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" - } - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -216,9 +210,9 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -228,7 +222,7 @@ "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.5.0" } }, "cli-cursor": { @@ -366,12 +360,12 @@ } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -380,15 +374,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -415,57 +400,6 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", - "dev": true, - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -525,23 +459,20 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -570,12 +501,6 @@ "dev": true, "optional": true }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -653,27 +578,12 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -784,12 +694,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -799,24 +703,6 @@ "binary-extensions": "^2.0.0" } }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, "is-domain": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", @@ -846,64 +732,28 @@ "is-extglob": "^2.1.1" } }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -915,26 +765,10 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", - "dev": true - }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dev": true, - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } - }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -988,12 +822,12 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" } }, "lodash": { @@ -1002,12 +836,48 @@ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "dev": true, "requires": { - "chalk": "^2.4.2" + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "mime-db": { @@ -1057,36 +927,36 @@ } }, "mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", + "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", "dev": true, "requires": { + "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.3.1", - "debug": "3.2.6", + "chokidar": "3.4.3", + "debug": "4.2.0", "diff": "4.0.2", - "escape-string-regexp": "1.0.5", - "find-up": "4.1.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", + "js-yaml": "3.14.0", + "log-symbols": "4.0.0", "minimatch": "3.0.4", "ms": "2.1.2", - "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "3.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", + "nanoid": "3.1.12", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "7.2.0", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.0.0", + "workerpool": "6.0.2", "yargs": "13.3.2", "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "yargs-unparser": "2.0.0" }, "dependencies": { "ansi-regex": { @@ -1106,6 +976,12 @@ "wrap-ansi": "^5.1.0" } }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1136,6 +1012,15 @@ "path-exists": "^3.0.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -1235,6 +1120,12 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, + "nanoid": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", + "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", + "dev": true + }, "netrc": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", @@ -1273,30 +1164,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1328,21 +1195,21 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" } }, "p-try": { @@ -1378,19 +1245,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" }, - "promise.allsettled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", - "dev": true, - "requires": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - } - }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -1406,6 +1260,15 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "read": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", @@ -1415,12 +1278,12 @@ } }, "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" } }, "request": { @@ -1506,10 +1369,13 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "set-blocking": { "version": "2.0.0", @@ -1610,26 +1476,6 @@ "strip-ansi": "^3.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1640,15 +1486,15 @@ } }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -1820,9 +1666,9 @@ "dev": true }, "workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", + "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", "dev": true }, "wrap-ansi": { @@ -1879,127 +1725,28 @@ } }, "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { + "decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } } } } diff --git a/package.json b/package.json index d86acb4..8db7518 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "8.0.1", + "mocha": "^8.2.1", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From 2e5424036e7c29c1191b174262ce9046bfb008cf Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 3 Jan 2021 23:44:36 -0800 Subject: [PATCH 141/214] adds output for ctas --- lib/util/helpers.js | 18 ++++++++++++++++-- lib/util/tables.js | 19 ++++++++++++++++++- package-lock.json | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 44b1395..5df25df 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -604,8 +604,18 @@ var displayCertInfo = exports.displayCertInfo = function(payload, args){ }) space() } + } +} + +var displayCtas = exports.displayCta = function(payload, args){ + space() + if (payload.ctas){ + var table = tables.ctas(payload.ctas, args.colWidth, payload.cta_color || "grey") + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ + log(" ", row) + }) } - } exports.displayPublishInfo = function(payload){ @@ -617,7 +627,11 @@ exports.displayPublishInfo = function(payload){ var rows = table.toString().split("\n") var tableCols = rows[0].replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '').length - if (payload.certs) displayCertInfo(payload, { short: true, showEmpty: false, colWidth: tableCols }) + if (payload.certs) + displayCertInfo(payload, { short: true, showEmpty: false, colWidth: tableCols }) + + if (payload.ctas) + displayCtas(payload, { short: true, showEmpty: false, colWidth: tableCols }) //space() rows.forEach(function(row, i){ log(" ", row.grey) }) diff --git a/lib/util/tables.js b/lib/util/tables.js index ef9e28c..509c12b 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -2,7 +2,8 @@ var Table = require("cli-table3") var fqdn = function(domain){ - return domain.match(/\.$/) ? domain : domain + "." + //return domain.match(/\.$/) ? domain : domain + "." + return domain } var dotnotation = function(email){ @@ -98,6 +99,22 @@ exports.certsShort = function(certs, colWidth){ return table } +exports.ctas = function(ctas, colWidth, color){ + var table = new Table({ + colWidths:[colWidth - 2], + style: { + 'compact': true, + 'padding-left': 2, + 'padding-right': 2, + } + }) + ctas.forEach(function(cta, i){ + if (i % 2 === 1) table.push([""]) + table.push([{ content: cta.msg[cta.color], hAlign:'center' }]) + }) + return table +} + exports.cert = function(cert){ var table = new Table({ diff --git a/package-lock.json b/package-lock.json index 64c2629..93aadbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.7", + "version": "0.22.0", "lockfileVersion": 1, "requires": true, "dependencies": { From 79b81ac616f1c357ca8db3897c38cd3559b67a4a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 28 Jan 2021 01:30:55 -0800 Subject: [PATCH 142/214] adds bust command --- lib/middleware/bust.js | 51 ++++++++++++++++++++++++ lib/middleware/{props.js => settings.js} | 5 +-- lib/surge.js | 35 +++++++++++++--- lib/util/helpers.js | 26 ++++++++++-- lib/util/tables.js | 29 +++++++------- 5 files changed, 118 insertions(+), 28 deletions(-) create mode 100644 lib/middleware/bust.js rename lib/middleware/{props.js => settings.js} (82%) diff --git a/lib/middleware/bust.js b/lib/middleware/bust.js new file mode 100644 index 0000000..4d77485 --- /dev/null +++ b/lib/middleware/bust.js @@ -0,0 +1,51 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + if (req.argv.i){ + // helpers.revisionSelector(req, function(errors, answers){ + // if (!answers) return next() + // if (answers.revision.current){ + // helpers.trunc("No change".green + " - Selected revision is already current".grey ) + // return next() + // } else { + // return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + // } + // }) + } else { + helpers.space() + sdk.bust(domain, { user: "token", pass: req.creds.token }, function(error, response){ + // response.confirmed = ["sfo-11", "jfk-08", "ams-14"] + // response.unconfirmed = ["yyz-16"] + if (error){ + helpers.space() + helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) + helpers.space() + }else{ + var success = response.status && response.status == 200 + helpers.space() + if (success){ + helpers.trunc("⦿ Busting cache".green + " " + domain.underline.grey) + helpers.displayServers(response.servers) + helpers.displayConfirmations(response) + }else{ + helpers.trunc("⦿ Bust".yellow) + helpers.displayServers(response.servers) + helpers.trunc("Cache not Busted".yellow) + } + return next() + } + }) + } + +} \ No newline at end of file diff --git a/lib/middleware/props.js b/lib/middleware/settings.js similarity index 82% rename from lib/middleware/props.js rename to lib/middleware/settings.js index f24d5b8..55ad260 100644 --- a/lib/middleware/props.js +++ b/lib/middleware/settings.js @@ -9,8 +9,7 @@ module.exports = function(req, next){ }) var domain = req.argv["_"][0] - - sdk.props(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ + sdk.settings(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { helpers.space() if (error.hasOwnProperty("message")){ @@ -23,7 +22,7 @@ module.exports = function(req, next){ helpers.space() process.exit(1) } else { - helpers.displayProps(rsp) + helpers.displayConfig(rsp) return next() } }) diff --git a/lib/surge.js b/lib/surge.js index 51e63a9..33242ff 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -54,13 +54,14 @@ var select = require("./middleware/select") var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") +var bust = require("./middleware/bust") var discard = require("./middleware/discard") var invite = require("./middleware/invite") var revoke = require("./middleware/revoke") var encrypt = require("./middleware/encrypt") var certs = require("./middleware/certs") var dns = require("./middleware/dns") -var props = require("./middleware/props") +var settings = require("./middleware/settings") @@ -153,10 +154,11 @@ module.exports = function(config){ "invite", "revoke", "encrypt", - "props", + "settings", "dns", "zone", - "certs" + "certs", + "bust" ] if (commands.indexOf(cmd) !== -1) { @@ -167,7 +169,9 @@ module.exports = function(config){ } } - var stub = function(req, next){ next(); } + var stub = function(req, next){ + return next(); + } surge.token = function(hooks){ var hooks = hooks || {} @@ -383,6 +387,25 @@ module.exports = function(config){ } } + surge.bust = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + bust, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + config: config, + argv: argv, + read: read + }, onion) + } + } + surge.select = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub @@ -588,14 +611,14 @@ module.exports = function(config){ } } - surge.props = function(hooks){ + surge.settings = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ endpoint, pkg, help, version, space, preAuth, creds, auth, postAuth, - props, space + settings, space ] return function(){ var argv = parse(arguments[arguments.length -1]) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 5df25df..67c37f7 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -547,7 +547,25 @@ var displayServers = exports.displayServers = function(servers){ space() } -var displayProps = exports.displayProps = function(props, args){ +var displayConfirmations = exports.displayConfirmations = function(response){ + if (response.unconfirmed){ + + if (response.confirmed && response.confirmed.length > 0){ + trunc("Confirmed:".grey) + trunc(" " + response.confirmed.join(", ").green) + space() + } + + if (response.unconfirmed && response.unconfirmed.length > 0){ + trunc("Unconfirmed:".grey) + trunc(" " + response.unconfirmed.join(", ").yellow) + space() + } + + } +} + +var displayConfig = exports.displayConfig = function(props, args){ args = args || { short: false } var keys = Object.keys(props) @@ -565,7 +583,7 @@ var displayProps = exports.displayProps = function(props, args){ value = "null".grey } else if (!isNaN(parseInt(value))){ key = shortsmart(key).grey - value = value.blue + value = value.toString().green } else { key = shortsmart(key).grey value = value.green @@ -620,8 +638,8 @@ var displayCtas = exports.displayCta = function(payload, args){ exports.displayPublishInfo = function(payload){ - if (payload.props) - displayProps(payload.props, { short: true }) + if (payload.config) + displayConfig(payload.config, { short: true }) var table = tables.servers(payload.servers) var rows = table.toString().split("\n") diff --git a/lib/util/tables.js b/lib/util/tables.js index 509c12b..564814b 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -31,8 +31,8 @@ exports.servers = function(servers){ servers.forEach(function(s){ var arr = [] - if(s.hasOwnProperty("info")) - arr.push({ hAlign: "center", content: s.info.grey }) + if(s.hasOwnProperty("type")) + arr.push({ hAlign: "center", content: s.type.grey }) if(s.hasOwnProperty("domain")) arr.push(s.domain) @@ -40,12 +40,11 @@ exports.servers = function(servers){ if(s.hasOwnProperty("location")) arr.push(s.location) - if(s.hasOwnProperty("ip")){ - - if (["N/A", "available"].indexOf(s.ip) !== -1){ - arr.push({ hAlign:"center", content: s.ip.grey }) + if(s.hasOwnProperty("info")){ + if (["N/A", "available"].indexOf(s.info) !== -1){ + arr.push({ hAlign:"center", content: s.info.grey }) }else{ - arr.push({ hAlign:"left", content: s.ip.grey }) + arr.push({ hAlign:"left", content: s.info.grey }) } } @@ -74,25 +73,25 @@ exports.certsShort = function(certs, colWidth){ var leftCol; var rightCol; if (cert.expInDays < -15){ - leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + leftCol = "Certificate: " + cert.issuer + "\n " + cert.subjectAltNames.join(", ") if (i < certs.length -1) leftCol = leftCol + "\n" rightCol = "Expired" - table.push([leftCol.red, rightCol.red]) + table.push([leftCol.grey, rightCol.red]) }else if(cert.expInDays < 0){ - leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + leftCol = "Certificate: " + cert.issuer + "\n " + cert.subjectAltNames.join(", ") if (i < certs.length -1) leftCol = leftCol + "\n" rightCol = ("Expired\n" + Math.abs(cert.expInDays) + " days ago") - table.push([leftCol.red, rightCol.red]) + table.push([leftCol.grey, rightCol.red]) }else if(cert.expInDays < 15){ - leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + leftCol = "Certificate: " + cert.issuer + "\n " + cert.subjectAltNames.join(", ") if (i < certs.length -1) leftCol = leftCol + "\n" rightCol = ("Valid\n" + Math.abs(cert.expInDays) + " more days") - table.push([leftCol.yellow, rightCol.yellow]) + table.push([leftCol.grey, rightCol.yellow]) }else{ - leftCol = cert.issuer + "\n " + cert.subjectAltNames.join(", ") + leftCol = "Certificate: " + cert.issuer + "\n " + cert.subjectAltNames.join(", ") if (i < certs.length -1) leftCol = leftCol + "\n" rightCol = ("Valid\n" + Math.abs(cert.expInDays) + " more days") - table.push([leftCol.green, rightCol.green]) + table.push([leftCol.grey, rightCol.green]) } }) From 066030b2c4a055330cfd8ae751b5356dbed299c6 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 29 Jan 2021 01:56:30 -0800 Subject: [PATCH 143/214] change config var to configuration --- lib/middleware/_shared/_domain.js | 8 +-- lib/middleware/_shared/_domainOrSilent.js | 8 +-- lib/middleware/_shared/_email.js | 6 +- lib/middleware/_shared/_endpoint.js | 2 +- lib/middleware/_shared/_pemOrSilent.js | 6 +- lib/middleware/_shared/_project.js | 6 +- lib/middleware/_shared/_welcome.js | 2 +- lib/middleware/_shared/_whitelist.js | 2 +- lib/middleware/_shared/discovery.js | 2 +- lib/middleware/bust.js | 2 +- lib/middleware/deploy-old.js | 2 +- lib/middleware/deploy.js | 2 +- lib/middleware/encrypt.js | 2 +- lib/middleware/help.js | 44 +++++++-------- lib/surge.js | 68 +++++++++++------------ 15 files changed, 81 insertions(+), 81 deletions(-) diff --git a/lib/middleware/_shared/_domain.js b/lib/middleware/_shared/_domain.js index c9eb5b4..95362eb 100644 --- a/lib/middleware/_shared/_domain.js +++ b/lib/middleware/_shared/_domain.js @@ -27,9 +27,9 @@ module.exports = function(req, next, abort){ prompt: label, default: suggestion || "", edit: true, - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input + terminal: req.configuration.terminal, + output: req.configuration.output, + input: req.configuration.input }, function(err, domain){ if (domain === undefined) return abort("Not initiated.".grey) if (err || !helpers.validDomain(domain)) { @@ -45,7 +45,7 @@ module.exports = function(req, next, abort){ next() } else { if (req.domain == "_"){ - req.domain = [moniker.choose(), req.config.platform].join(".") + req.domain = [moniker.choose(), req.configuration.platform].join(".") helpers.log(label, req.domain) next() } else { diff --git a/lib/middleware/_shared/_domainOrSilent.js b/lib/middleware/_shared/_domainOrSilent.js index 3b3cacc..355ca6f 100644 --- a/lib/middleware/_shared/_domainOrSilent.js +++ b/lib/middleware/_shared/_domainOrSilent.js @@ -13,9 +13,9 @@ module.exports = function(req, next, abort){ prompt: label, default: suggestion || "", edit: true, - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input + terminal: req.configuration.terminal, + output: req.configuration.output, + input: req.configuration.input }, function(err, domain){ if (domain === undefined) return abort("Teardown".grey) if (err || !helpers.validDomain(domain)) { @@ -30,7 +30,7 @@ module.exports = function(req, next, abort){ next() } else { if (req.domain == "_"){ - req.domain = [moniker.choose(), req.config.platform].join(".") + req.domain = [moniker.choose(), req.configuration.platform].join(".") helpers.log(label, req.domain) next() } else { diff --git a/lib/middleware/_shared/_email.js b/lib/middleware/_shared/_email.js index 59bf295..c476ece 100644 --- a/lib/middleware/_shared/_email.js +++ b/lib/middleware/_shared/_email.js @@ -16,9 +16,9 @@ module.exports = function(req, next, abort){ prompt: label, default: suggestion, edit: true, - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input + terminal: req.configuration.terminal, + output: req.configuration.output, + input: req.configuration.input }, function(err, answer){ if (answer === undefined) { return abort("Not authenticated.".grey) diff --git a/lib/middleware/_shared/_endpoint.js b/lib/middleware/_shared/_endpoint.js index a5715d7..f71b088 100644 --- a/lib/middleware/_shared/_endpoint.js +++ b/lib/middleware/_shared/_endpoint.js @@ -1,6 +1,6 @@ var parse = require("url-parse-as-address") module.exports = function(req, next){ - req.endpoint = parse(req.argv.endpoint || req.config.endpoint || "surge." + req.config.platform) + req.endpoint = parse(req.argv.endpoint || req.configuration.endpoint || "surge." + req.configuration.platform) next() } diff --git a/lib/middleware/_shared/_pemOrSilent.js b/lib/middleware/_shared/_pemOrSilent.js index c2c70b5..29c5382 100644 --- a/lib/middleware/_shared/_pemOrSilent.js +++ b/lib/middleware/_shared/_pemOrSilent.js @@ -12,9 +12,9 @@ module.exports = function(req, next, abort){ prompt: label, default: placeholder, edit: true, - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input + terminal: req.configuration.terminal, + output: req.configuration.output, + input: req.configuration.input }, function(err, pem){ if (pem === undefined) return abort("no PEM file provided".grey) if (pem === "") return getPem() diff --git a/lib/middleware/_shared/_project.js b/lib/middleware/_shared/_project.js index c5e7b0f..2ed12c0 100644 --- a/lib/middleware/_shared/_project.js +++ b/lib/middleware/_shared/_project.js @@ -25,9 +25,9 @@ module.exports = function(req, next, abort){ prompt: helpers.smart("project:").grey, default: suggestion, edit: true, - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input + terminal: req.configuration.terminal, + output: req.configuration.output, + input: req.configuration.input }, function(err, projectPath){ if (projectPath === undefined) { return abort("Publishing not initiated.".grey) diff --git a/lib/middleware/_shared/_welcome.js b/lib/middleware/_shared/_welcome.js index e1ccc9c..a638af0 100644 --- a/lib/middleware/_shared/_welcome.js +++ b/lib/middleware/_shared/_welcome.js @@ -4,7 +4,7 @@ module.exports = function(req, next){ if (req.creds == null) { helpers.space() - helpers.trunc(("Welcome to " + (req.config.name || "Surge").underline + "!").blue + (" (" + req.config.platform +")").grey) + helpers.trunc(("Welcome to " + (req.configuration.name || "Surge").underline + "!").blue + (" (" + req.configuration.platform +")").grey) } return next() diff --git a/lib/middleware/_shared/_whitelist.js b/lib/middleware/_shared/_whitelist.js index 2a0d7ef..8c678ef 100644 --- a/lib/middleware/_shared/_whitelist.js +++ b/lib/middleware/_shared/_whitelist.js @@ -1,7 +1,7 @@ var helpers = require("../../util/helpers") module.exports = function(req, next){ - //req.endpoint = req.argv.endpoint || req.config.endpoint || 'surge.' + req.config.platform) + //req.endpoint = req.argv.endpoint || req.configuration.endpoint || 'surge.' + req.configuration.platform) var commands = ['h','b', 'd','e','a','r','v','V','p', 'i', 's', 'm', 'message', 'stage', 'interactive', 'endpoint','project','domain','add','remove','version','verbose','token','help','pem', 'promo', 'build', 'preview', '$0','_']; diff --git a/lib/middleware/_shared/discovery.js b/lib/middleware/_shared/discovery.js index c9eaa29..dcab201 100644 --- a/lib/middleware/_shared/discovery.js +++ b/lib/middleware/_shared/discovery.js @@ -33,7 +33,7 @@ exports.setDomainFromCname = function(req, next){ exports.suggestDomainFromGenerator = function(req, next){ if (!req.domain && !req.suggestedDomain) { - req.suggestedDomain = [moniker.choose(), req.config.platform].join(".") + req.suggestedDomain = [moniker.choose(), req.configuration.platform].join(".") } return next() } diff --git a/lib/middleware/bust.js b/lib/middleware/bust.js index 4d77485..c1ada2f 100644 --- a/lib/middleware/bust.js +++ b/lib/middleware/bust.js @@ -37,7 +37,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⦿ Busting cache".green + " " + domain.underline.grey) helpers.displayServers(response.servers) - helpers.displayConfirmations(response) + helpers.displayConfig(response) }else{ helpers.trunc("⦿ Bust".yellow) helpers.displayServers(response.servers) diff --git a/lib/middleware/deploy-old.js b/lib/middleware/deploy-old.js index b3ded10..01afb86 100644 --- a/lib/middleware/deploy-old.js +++ b/lib/middleware/deploy-old.js @@ -22,7 +22,7 @@ module.exports = function(req, next){ var headers = { "version" : req.pkg.version, "file-count": req.fileCount, - "cmd": req.config.cmd, + "cmd": req.configuration.cmd, "project-size": req.projectSize, "timestamp": new Date().toJSON() } diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index 80a018e..e24e76b 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -34,7 +34,7 @@ module.exports = function(req, next){ "version" : req.pkg.version, "file-count": req.fileCount, "project-size": req.projectSize, - "cmd": req.config.cmd, + "cmd": req.configuration.cmd, "timestamp": ts, "stage": req.argv.s, "message": req.argv.m, diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js index f206b9a..c084cf7 100644 --- a/lib/middleware/encrypt.js +++ b/lib/middleware/encrypt.js @@ -21,7 +21,7 @@ module.exports = function(req, next){ "pass": req.creds.token }, { "version" : req.pkg.version, - "cmd": req.config.cmd, + "cmd": req.configuration.cmd, "timestamp": ts }, req.argv) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index c82993e..79974f4 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -4,29 +4,29 @@ module.exports = function(req, next){ if (req.argv.help || req.argv.h) { helpers //.log() - //.log(" " + req.config.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) + //.log(" " + req.configuration.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) .log() .log(" Main Usage:".grey) - .log(" "+ req.config.name +" publish project to domain") + .log(" "+ req.configuration.name +" publish project to domain") .log() .log(" Project Commands:".grey) - .log(" "+ req.config.name +" cutover change to latest revision") - .log(" "+ req.config.name +" discard remove revision from system") - .log(" "+ req.config.name +" rollfore change to next revision") - .log(" "+ req.config.name +" rollback change to previous revision") - .log(" "+ req.config.name +" teardown tear down a published project") - .log(" "+ req.config.name +" invite invites user to be a contributor") - .log(" "+ req.config.name +" revoke revokes contributor rights") - .log(" "+ req.config.name +" list list all revisions") - .log(" "+ req.config.name +" ssl publish .pem file for SSL support") + .log(" "+ req.configuration.name +" cutover change to latest revision") + .log(" "+ req.configuration.name +" discard remove revision from system") + .log(" "+ req.configuration.name +" rollfore change to next revision") + .log(" "+ req.configuration.name +" rollback change to previous revision") + .log(" "+ req.configuration.name +" teardown tear down a published project") + .log(" "+ req.configuration.name +" invite invites user to be a contributor") + .log(" "+ req.configuration.name +" revoke revokes contributor rights") + .log(" "+ req.configuration.name +" list list all revisions") + .log(" "+ req.configuration.name +" ssl publish .pem file for SSL support") .log() .log(" Account Commands:".grey) - .log(" "+ req.config.name +" whoami show who you are logged in as") - .log(" "+ req.config.name +" login only performs authentication step") - .log(" "+ req.config.name +" logout expire local token") - .log(" "+ req.config.name +" token create token for automation purposes") - .log(" "+ req.config.name +" plan upgrade or downgrade account plan") - .log(" "+ req.config.name +" list list all projects") + .log(" "+ req.configuration.name +" whoami show who you are logged in as") + .log(" "+ req.configuration.name +" login only performs authentication step") + .log(" "+ req.configuration.name +" logout expire local token") + .log(" "+ req.configuration.name +" token create token for automation purposes") + .log(" "+ req.configuration.name +" plan upgrade or downgrade account plan") + .log(" "+ req.configuration.name +" list list all projects") .log() .log(" Options:".grey) .log(" -s, --preview (when publishing) publishes preview") @@ -35,17 +35,17 @@ module.exports = function(req, next){ .log(" -h, --help show this help message") .log() .log(" Examples:".grey) - .log(" "+ req.config.name +" www example.com publishes www directory to example.com") - .log(" "+ req.config.name +" . example.com --preview publishes current directory for preview") - .log(" "+ req.config.name +" cutover example.com switches latest preview to production") - .log(" "+ req.config.name +" . _ publish current dir to random subdomain") + .log(" "+ req.configuration.name +" www example.com publishes www directory to example.com") + .log(" "+ req.configuration.name +" . example.com --preview publishes current directory for preview") + .log(" "+ req.configuration.name +" cutover example.com switches latest preview to production") + .log(" "+ req.configuration.name +" . _ publish current dir to random subdomain") // .log() // .log(" Guides:".grey) // .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey) // .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) // .log(" Additional help " + "surge.sh/help".underline.grey) .log() - .log(" When in doubt, run ".grey + req.config.name.green.underline + " from within your project directory.".grey) + .log(" When in doubt, run ".grey + req.configuration.name.green.underline + " from within your project directory.".grey) .log() } else { diff --git a/lib/surge.js b/lib/surge.js index 33242ff..b34d274 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -92,15 +92,15 @@ var parse = function(arg){ : arg } -module.exports = function(config){ - config = config || {} +module.exports = function(configuration){ + configuration = configuration || {} - var ep = config.endpoint - ? config.endpoint - : config.platform ? "https://surge." + config.platform : 'https://surge.surge.sh' + var ep = configuration.endpoint + ? configuration.endpoint + : configuration.platform ? "https://surge." + configuration.platform : 'https://surge.surge.sh' - config.platform = config.platform || "surge.sh" - config.name = config.name || "surge" + configuration.platform = configuration.platform || "surge.sh" + configuration.name = configuration.name || "surge" var options = { alias: { @@ -164,8 +164,8 @@ module.exports = function(config){ if (commands.indexOf(cmd) !== -1) { argv._.shift() surge[cmd]({})(argv) - } else if(config.default && commands.indexOf(config.default) !== -1 ){ - surge[config.default]({})(argv) + } else if(configuration.default && commands.indexOf(configuration.default) !== -1 ){ + surge[configuration.default]({})(argv) } } @@ -185,7 +185,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -204,7 +204,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -220,7 +220,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -250,7 +250,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -266,7 +266,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -285,7 +285,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -304,7 +304,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -323,7 +323,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -342,7 +342,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -361,7 +361,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -380,7 +380,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -399,7 +399,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -418,7 +418,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -438,7 +438,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -458,7 +458,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -480,7 +480,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -500,7 +500,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -520,7 +520,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -539,7 +539,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -558,7 +558,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -585,7 +585,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -604,7 +604,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -623,7 +623,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -642,7 +642,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) @@ -661,7 +661,7 @@ module.exports = function(config){ return function(){ var argv = parse(arguments[arguments.length -1]) skin({ - config: config, + configuration: configuration, argv: argv, read: read }, onion) From 5edaa84a8388ef1cd9f18a65d4009764619fe31c Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 29 Jan 2021 02:26:06 -0800 Subject: [PATCH 144/214] renames settings cmd to config --- lib/middleware/settings.js | 30 ------------------------------ lib/surge.js | 8 ++++---- 2 files changed, 4 insertions(+), 34 deletions(-) delete mode 100644 lib/middleware/settings.js diff --git a/lib/middleware/settings.js b/lib/middleware/settings.js deleted file mode 100644 index 55ad260..0000000 --- a/lib/middleware/settings.js +++ /dev/null @@ -1,30 +0,0 @@ -var helpers = require("../util/helpers.js") -var surgeSDK = require("surge-sdk") - -module.exports = function(req, next){ - - var sdk = surgeSDK({ - endpoint: req.endpoint.format(), - defaults: helpers.defaults - }) - - var domain = req.argv["_"][0] - sdk.settings(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ - if (error) { - helpers.space() - if (error.hasOwnProperty("message")){ - helpers.trunc("Error".red + (" - " + error.message).grey) - }else{ - error.messages.forEach(function(m){ - helpers.trunc("Error".red + (" - " + m).grey) - }) - } - helpers.space() - process.exit(1) - } else { - helpers.displayConfig(rsp) - return next() - } - }) - -} \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index b34d274..71e5b9b 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -61,7 +61,7 @@ var revoke = require("./middleware/revoke") var encrypt = require("./middleware/encrypt") var certs = require("./middleware/certs") var dns = require("./middleware/dns") -var settings = require("./middleware/settings") +var config = require("./middleware/config") @@ -154,7 +154,7 @@ module.exports = function(configuration){ "invite", "revoke", "encrypt", - "settings", + "config", "dns", "zone", "certs", @@ -611,14 +611,14 @@ module.exports = function(configuration){ } } - surge.settings = function(hooks){ + surge.config = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ endpoint, pkg, help, version, space, preAuth, creds, auth, postAuth, - settings, space + config, space ] return function(){ var argv = parse(arguments[arguments.length -1]) From 0a7d1ebeab58e96009f0c0cdb038941e14e346bb Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 29 Jan 2021 02:26:22 -0800 Subject: [PATCH 145/214] adds config middleware --- lib/middleware/config.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/middleware/config.js diff --git a/lib/middleware/config.js b/lib/middleware/config.js new file mode 100644 index 0000000..55ad260 --- /dev/null +++ b/lib/middleware/config.js @@ -0,0 +1,30 @@ +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + sdk.settings(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ + if (error) { + helpers.space() + if (error.hasOwnProperty("message")){ + helpers.trunc("Error".red + (" - " + error.message).grey) + }else{ + error.messages.forEach(function(m){ + helpers.trunc("Error".red + (" - " + m).grey) + }) + } + helpers.space() + process.exit(1) + } else { + helpers.displayConfig(rsp) + return next() + } + }) + +} \ No newline at end of file From b04f0b76bc5200f457ca109222c14286d3aeb0a1 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 9 Feb 2021 04:34:03 -0800 Subject: [PATCH 146/214] updates output to include NS and CNAME --- lib/middleware/bust.js | 5 +- lib/middleware/cutover.js | 2 +- lib/middleware/deploy.js | 2 +- lib/middleware/discard.js | 2 +- lib/middleware/encrypt.js | 2 +- lib/middleware/rollback.js | 6 +- lib/middleware/rollfore.js | 6 +- lib/util/helpers.js | 48 +++++++++-- lib/util/tables.js | 159 ++++++++++++++++++++++++++++++++++++- 9 files changed, 213 insertions(+), 19 deletions(-) diff --git a/lib/middleware/bust.js b/lib/middleware/bust.js index c1ada2f..02f1bbe 100644 --- a/lib/middleware/bust.js +++ b/lib/middleware/bust.js @@ -36,11 +36,10 @@ module.exports = function(req, next){ helpers.space() if (success){ helpers.trunc("⦿ Busting cache".green + " " + domain.underline.grey) - helpers.displayServers(response.servers) - helpers.displayConfig(response) + helpers.displayServers(response.instances) }else{ helpers.trunc("⦿ Bust".yellow) - helpers.displayServers(response.servers) + helpers.displayServers(response.instances) helpers.trunc("Cache not Busted".yellow) } return next() diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 98976ff..831754a 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -38,7 +38,7 @@ module.exports = function(req, next){ if (success){ helpers.trunc("⤮ Cutover".green) helpers.displayRevisionBasicInfo(response.revision, response.domain) - helpers.displayServers(response.servers) + helpers.displayServers(response.instances) helpers.trunc("Done".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⤮ Cutover".yellow) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index e24e76b..cd21668 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -108,7 +108,7 @@ module.exports = function(req, next){ .on("info", function(payload){ req.info = payload - // helpers.displayServers(payload.servers) + // helpers.displayServers(payload.instances) // helpers.displayPreview(payload) helpers.displayPublishInfo(payload) }) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index 0d438b4..2c07291 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -60,7 +60,7 @@ module.exports = function(req, next){ // display regions helpers.space() //helpers.displayRegions(response) - helpers.displayServers(response.servers) + helpers.displayServers(response.instances) helpers.space() if (response.uncached.change){ diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js index c084cf7..b5ffdbc 100644 --- a/lib/middleware/encrypt.js +++ b/lib/middleware/encrypt.js @@ -89,7 +89,7 @@ module.exports = function(req, next){ req.info = payload helpers.displayCertInfo(payload, { short: false, showEmpty: true }) helpers.space() - // helpers.displayServers(payload.servers) + // helpers.displayServers(payload.instances) // helpers.displayPreview(payload) //helpers.displayPublishInfo(payload) }) diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index 5234e7b..ad9db78 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -21,12 +21,14 @@ module.exports = function(req, next){ helpers.space() if (success){ helpers.trunc("⟲ Rollback".green) - helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayServers(response.servers) + //helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRollbackInfo(response, domain) + helpers.displayServers(response.instances) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⟲ Rollback (redundant)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.displayServers(response.instances) helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index f6df403..82251a7 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -21,12 +21,14 @@ module.exports = function(req, next){ helpers.space() if (success){ helpers.trunc("⟳ Forward".green) - helpers.displayRevisionBasicInfo(response.revision, domain) - helpers.displayServers(response.servers) + //helpers.displayRevisionBasicInfo(response.revision, domain) + helpers.displayRollforeInfo(response, domain) + helpers.displayServers(response.instances) helpers.trunc("Done!".green + (" - " + domain.underline + " now serving revision " + response.revision.preview.underline).grey) }else{ helpers.trunc("⟳ Forward (redundant)".yellow) helpers.displayRevisionBasicInfo(response.revision, req["argv"]["_"][0]) + helpers.displayServers(response.instances) helpers.trunc("Unchanged".yellow + (" - " + domain.underline + " already serving " + response.revision.preview.underline).grey) } return next() diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 67c37f7..7d1f61a 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -504,6 +504,26 @@ exports.displayRevisionBasicInfo = function(revision, domain){ space() } +exports.displayRollforeInfo = function(response, domain){ + var table = tables.rollfore(response) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + +exports.displayRollbackInfo = function(response, domain){ + var table = tables.rollback(response) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + exports.displayRevision = function(payload){ space() log(" Promoted revision ".grey + payload.revision.rev + " to production.".grey) @@ -533,8 +553,22 @@ exports.displayRegions = function(payload, domain){ space() } -var displayServers = exports.displayServers = function(servers){ - var table = tables.servers(servers) +var displayServers = exports.displayServers = function(instances){ + var table = tables.instances(instances) + var rows = table.toString().split("\n") + //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) + //space() + //log(" Preview at ".grey + "https://123456789.sintaxi.com".grey.underline) + //log(" Origin regions…".grey) + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + +exports.displayNameServers = function(instances, domain){ + var table = tables.instances(instances) var rows = table.toString().split("\n") //log(smart("CNAME:").grey + " dns.surge.sh " + "(or use NS servers below)".grey) //space() @@ -637,14 +671,16 @@ var displayCtas = exports.displayCta = function(payload, args){ } exports.displayPublishInfo = function(payload){ - if (payload.config) displayConfig(payload.config, { short: true }) - var table = tables.servers(payload.servers) + var nameservers = payload.instances.filter(function(s){ + s.type == "NS" + }) + + var table = tables.instances(payload.instances) var rows = table.toString().split("\n") var tableCols = rows[0].replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '').length - if (payload.certs) displayCertInfo(payload, { short: true, showEmpty: false, colWidth: tableCols }) @@ -654,7 +690,7 @@ exports.displayPublishInfo = function(payload){ //space() rows.forEach(function(row, i){ log(" ", row.grey) }) //space() - + var pad = function(str, len){ if (str.length >= len) return str return pad("." + str, len) diff --git a/lib/util/tables.js b/lib/util/tables.js index 564814b..4cb16ae 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -10,10 +10,164 @@ var dotnotation = function(email){ return email.replace("@", ".") } -exports.servers = function(servers){ +var condencedTableAttrs = { + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': '' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': ' ' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 0 + } +} + +var revisionOutput = function(revision){ + if (!revision) return "Empty" + return revision.preview.underline + "\n" + ("by " + revision.email) + ("\n(" + revision.publicFileCount + " files, " + revision.publicTotalSize + " size)") +} + +exports.rollfore = function(response){ + var rollbackTable = new Table(condencedTableAttrs) + rollbackTable.push([ + { hAlign: "left", content: revisionOutput(response.former).grey }, + ">\n>\n>".green, + { hAlign: "left", content: revisionOutput(response.revision).green }, + ]) + return rollbackTable +} + +exports.rollback = function(response){ + var rollbackTable = new Table(condencedTableAttrs) + rollbackTable.push([ + { hAlign: "left", content: revisionOutput(response.revision).green }, + "<\n<\n<".green, + { hAlign: "left", content: revisionOutput(response.former).grey }, + ]) + return rollbackTable +} + +exports.instances = function(servers){ + var ns = servers.filter(i => i.type === "NS") + if (ns && ns.length > 0){ + var dnsTable = new Table({ + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': '' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': ' ' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + + function chunkArrayInGroups(arr, size) { + var result = []; + for (var i=0; i i.domain), 2) + var nsServersStr = groups.map(r => r.join(" ")).join("\n") + var cnameDomainStr = servers.filter(i => i.type === "CNAME").map(i => i.domain).join("\n") + + dnsTable.push([ + { hAlign: "left", content: nsServersStr.cyan }, + " ", + { hAlign: "left", content: ("or " + "CNAME" + "…\n").grey.italic + cnameDomainStr.yellow.italic }, + ]) + } + + var table = new Table({ + head: dnsTable ? [{ hAlign: "center", vAlign: "center", content: "NS".grey }, { colSpan:4, content: dnsTable.toString(), hAlign:"left" }] : null, + style: { + 'compact': true, + 'padding-left': 3, + 'padding-right': 3, + } + }) + + //table.push([{rowSpan:8,content:'greetings\nfriends'}]) + + var attrReport = function(str, status){ + if (["green"].indexOf(status) !== -1) return str.green + return str.grey + } + + servers.forEach(function(s){ + var arr = [] + + var color = s.info === "pro" ? "grey" : null + + if(s.hasOwnProperty("type")) + arr.push({ hAlign: "center", content: s.type.grey }) + + if(s.hasOwnProperty("domain")) + color + ? arr.push(s.domain[color]) + : arr.push(s.domain) + + if(s.hasOwnProperty("location")) + color + ? arr.push(s.location[color]) + : arr.push(s.location) + + // if(s.hasOwnProperty("info")){ + // if (["N/A", "available"].indexOf(s.info) !== -1){ + // arr.push({ hAlign:"center", content: s.info.grey }) + // }else{ + // arr.push({ hAlign:"left", content: s.info }) + // } + // } + + if(s.hasOwnProperty("ip")) + color + ? arr.push({ hAlign:"left", content: s.ip[color] }) + : arr.push({ hAlign:"left", content: s.ip }) + + if(s.hasOwnProperty("provider")) + color + ? arr.push({ hAlign:"left", content: (s.provider || "")[color] }) + : arr.push({ hAlign:"left", content: s.provider }) + + if(s.hasOwnProperty("status")) + arr.push({ hAlign:"center", content: attrReport(s.confirmation, s.confirmationColor) + " " + attrReport(s.status, s.statusColor) }) + + if (["NS", "CNAME"].indexOf(s.type) === -1) table.push(arr) + }) + + return table + +} + +exports.nameservers = function(servers){ var table = new Table({ - //head:[{ colSpan:4, content: payload.metadata.preview.grey, hAlign:"center" }], + head:[{ colSpan:5, content: "DNS", hAlign:"center" }], style: { 'compact': true, 'padding-left': 3, @@ -51,6 +205,7 @@ exports.servers = function(servers){ if(s.hasOwnProperty("status")) arr.push({ hAlign:"center", content: report(s.status, s.statusColor) }) + if (s.type == "NS") table.push(arr) }) From 284b092669189dc9247ee96de93eb985426280af Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 12 Feb 2021 14:19:41 -0800 Subject: [PATCH 147/214] fixes dns table --- lib/util/tables.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 4cb16ae..721e05c 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -320,8 +320,9 @@ exports.customRecords = function(dninfo){ 'middle': ' ' }, style: { 'padding-left': 0, - 'padding-right': 5 - } + 'padding-right': 0 + }, + colWidths: [32, 6, 3, 50, 16] }) dninfo.records.forEach(function(record){ @@ -360,7 +361,7 @@ exports.zone = function(dninfo){ 'middle': ' ' }, style: { 'padding-left': 0, - 'padding-right': 5 + 'padding-right': 0 } }) From 78c266a61446033dbb311443cc27d48e3e1146d3 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 14 Feb 2021 13:38:59 -0800 Subject: [PATCH 148/214] cleanup message output --- lib/util/helpers.js | 26 +++++++++++++++++--------- lib/util/tables.js | 6 +++--- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 7d1f61a..343368d 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -630,13 +630,12 @@ var displayConfig = exports.displayConfig = function(props, args){ log(" " + key + ": ".grey + value) } }) - //space() + space() } } var displayCertInfo = exports.displayCertInfo = function(payload, args){ - space() if (payload.certs.length === 0){ if (args.showEmpty) trunc("Empty".grey) }else{ @@ -654,15 +653,13 @@ var displayCertInfo = exports.displayCertInfo = function(payload, args){ log(" ", row.grey) }) }) - space() } } } -var displayCtas = exports.displayCta = function(payload, args){ - space() - if (payload.ctas){ - var table = tables.ctas(payload.ctas, args.colWidth, payload.cta_color || "grey") +var displayMsgs = exports.displayMsgs = function(msgs, args){ + if (msgs){ + var table = tables.msgs(msgs, args.colWidth) var rows = table.toString().split("\n") rows.forEach(function(row, i){ log(" ", row) @@ -678,18 +675,29 @@ exports.displayPublishInfo = function(payload){ s.type == "NS" }) + // payload.msgsTop = [{ msg: "suggestion: run `surge encrypt sintaxi.com` to provision cert", color: "yellow", align: "left" }] + // payload.msgsMid = [{ msg: "suggestion: run `surge encrypt sintaxi.com` to provision cert", color: "yellow" }] + // payload.msgsBot = [{ msg: "suggestion: run `surge encrypt sintaxi.com` to provision cert", color: "yellow" }] + var table = tables.instances(payload.instances) var rows = table.toString().split("\n") var tableCols = rows[0].replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '').length + + if (payload.msgsTop) + displayMsgs(payload.msgsTop, { short: true, showEmpty: false, colWidth: tableCols }) + if (payload.certs) displayCertInfo(payload, { short: true, showEmpty: false, colWidth: tableCols }) - if (payload.ctas) - displayCtas(payload, { short: true, showEmpty: false, colWidth: tableCols }) + if (payload.msgsMid) + displayMsgs(payload.msgsMid, { short: true, showEmpty: false, colWidth: tableCols }) //space() rows.forEach(function(row, i){ log(" ", row.grey) }) //space() + + if (payload.msgsBot) + displayMsgs(payload.msgsBot, { short: true, showEmpty: false, colWidth: tableCols }) var pad = function(str, len){ if (str.length >= len) return str diff --git a/lib/util/tables.js b/lib/util/tables.js index 721e05c..430c338 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -253,7 +253,7 @@ exports.certsShort = function(certs, colWidth){ return table } -exports.ctas = function(ctas, colWidth, color){ +exports.msgs = function(msgs, colWidth, color){ var table = new Table({ colWidths:[colWidth - 2], style: { @@ -262,9 +262,9 @@ exports.ctas = function(ctas, colWidth, color){ 'padding-right': 2, } }) - ctas.forEach(function(cta, i){ + msgs.forEach(function(msg, i){ if (i % 2 === 1) table.push([""]) - table.push([{ content: cta.msg[cta.color], hAlign:'center' }]) + table.push([{ content: msg.msg[msg.color], hAlign: msg.align || 'center' }]) }) return table } From 509257e49b74677b9415f5523ce796042627ac1d Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 26 Feb 2021 03:17:52 -0800 Subject: [PATCH 149/214] bumps surge-sdk to v0.3.0 --- lib/middleware/list.js | 5 +- lib/util/helpers.js | 2 +- package-lock.json | 984 ++++++++++++----------------------------- package.json | 12 +- 4 files changed, 291 insertions(+), 712 deletions(-) diff --git a/lib/middleware/list.js b/lib/middleware/list.js index 7e83f96..3c57fdc 100644 --- a/lib/middleware/list.js +++ b/lib/middleware/list.js @@ -18,13 +18,14 @@ module.exports = function(req, next){ , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': '' , 'left': ' ' , 'left-mid': '' , 'mid': '' , 'mid-mid': '' , 'right': '' , 'right-mid': '' , 'middle': ' ' }, - style: { 'padding-left': 1, 'padding-right': 1 } + style: { 'padding-left': 0, 'padding-right': 2 } }) var lastcmd = "" if (projects.length != 0) { projects.forEach(function(project){ - var perm = project.rev ? (project.rev + " ").grey + project.domain : "" + //var perm = project.rev ? (project.rev + " ").grey + project.domain : "" + var perm = project.domain if (project.planName) { if (project.planName.indexOf("Standard") !== -1){ var pn = project.planName.grey diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 343368d..8cf8cc1 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -1,4 +1,4 @@ -var prompt = require('prompt') +var colors = require("colors") var request = require("request") var localCreds = require("./creds.js") diff --git a/package-lock.json b/package-lock.json index 93aadbb..29618f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "ajv": { "version": "6.9.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", @@ -51,13 +57,10 @@ } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-filter": { "version": "0.0.1", @@ -77,18 +80,6 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, - "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" - } - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -137,9 +128,9 @@ } }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "block-stream": { @@ -216,19 +207,19 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.5.0" } }, "cli-cursor": { @@ -326,9 +317,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "combined-stream": { "version": "1.0.7", @@ -357,11 +348,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -371,12 +357,20 @@ } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "decamelize": { @@ -385,29 +379,15 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "ecc-jsbn": { @@ -420,73 +400,22 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", - "dev": true, - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -507,11 +436,6 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, - "eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" - }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -540,23 +464,20 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -579,9 +500,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -596,12 +517,6 @@ "rimraf": "2" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -617,9 +532,9 @@ } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -627,16 +542,6 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - } } }, "glob-parent": { @@ -649,9 +554,9 @@ } }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, "graceful-readlink": { "version": "1.0.1", @@ -679,27 +584,12 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -716,11 +606,6 @@ "sshpk": "^1.7.0" } }, - "i": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", - "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -815,12 +700,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -830,24 +709,6 @@ "binary-extensions": "^2.0.0" } }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, "is-domain": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", @@ -877,64 +738,28 @@ "is-extglob": "^2.1.1" } }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -946,30 +771,13 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", - "dev": true - }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dev": true, - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } - }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsbn": { @@ -1019,12 +827,12 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" } }, "lodash": { @@ -1033,12 +841,57 @@ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "dev": true, "requires": { - "chalk": "^2.4.2" + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "mime-db": { @@ -1088,164 +941,141 @@ } }, "mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.0.tgz", + "integrity": "sha512-TQqyC89V1J/Vxx0DhJIXlq9gbbL9XFNdeLQ1+JsnZsVaSOV1z3tWfw0qZmQJGQRIfkvZcs7snQnZnOCKoldq1Q==", "dev": true, "requires": { + "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.3.1", - "debug": "3.2.6", - "diff": "4.0.2", - "escape-string-regexp": "1.0.5", - "find-up": "4.1.0", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", "minimatch": "3.0.4", - "ms": "2.1.2", - "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "3.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.0.0", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "color-convert": "^2.0.1" } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "color-name": "~1.1.4" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "path-exists": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", + "integrity": "sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", "dev": true }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } } } @@ -1256,9 +1086,9 @@ "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "mute-stream": { @@ -1266,10 +1096,11 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, - "ncp": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true }, "netrc": { "version": "0.1.4", @@ -1309,30 +1140,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1364,29 +1171,23 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -1409,41 +1210,11 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, - "promise.allsettled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", - "dev": true, - "requires": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - } - }, - "prompt": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", - "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", - "requires": { - "pkginfo": "0.x.x", - "read": "1.0.x", - "revalidator": "0.1.x", - "utile": "0.2.x", - "winston": "0.8.x" - } - }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -1459,6 +1230,15 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "read": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", @@ -1468,12 +1248,12 @@ } }, "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" } }, "request": { @@ -1509,12 +1289,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -1524,17 +1298,12 @@ "signal-exit": "^3.0.2" } }, - "revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" - }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "run-async": { @@ -1564,16 +1333,13 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "shell-quote": { "version": "1.6.1", @@ -1635,12 +1401,6 @@ "through": "2" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -1657,11 +1417,6 @@ "tweetnacl": "~0.14.0" } }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -1673,26 +1428,6 @@ "strip-ansi": "^3.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1703,15 +1438,15 @@ } }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -1733,9 +1468,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.2.4.tgz", - "integrity": "sha512-IodtZNMyA1Y12vVxVUnwJW181h4EY8KSSGYCPAJrJxHXvGOOwvJuDmxLQPhJ0PmnwSVKc78QmOq+Fm80ZU4DnQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.0.tgz", + "integrity": "sha512-x9/hfnBO5vbh1tan1QYqR3SLoI5J4On5n3YEQMwuQ+dKkp8qySmFCIIXW7K6ZN0nXCxkLgDILNEk4bOXXVqJ/g==", "requires": { "request": "^2.88.0", "split": "^1.0.1", @@ -1831,26 +1566,6 @@ "resolved": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" }, - "utile": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", - "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", - "requires": { - "async": "~0.2.9", - "deep-equal": "*", - "i": "0.3.x", - "mkdirp": "0.x.x", - "ncp": "0.4.x", - "rimraf": "2.x.x" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - } - } - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -1875,12 +1590,6 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -1896,36 +1605,10 @@ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", "dev": true }, - "winston": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", - "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", - "requires": { - "async": "0.2.x", - "colors": "0.6.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" - }, - "pkginfo": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" - } - } - }, "workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", "dev": true }, "wrap-ansi": { @@ -1964,148 +1647,43 @@ } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true }, "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { + "decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } } } }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zlib": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", diff --git a/package.json b/package.json index 7a29bbe..4076b84 100644 --- a/package.json +++ b/package.json @@ -5,23 +5,23 @@ "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { - "surge-sdk": "0.2.4", - "minimist": "1.2.3", - "inquirer": "^6.2.2", - "prompt": "~0.2.14", "cli-table3": "^0.5.1", - "progress": "2.0.3", + "colors": "^1.4.0", + "inquirer": "^6.2.2", "is-domain": "0.0.1", + "minimist": "1.2.3", "moniker": "0.1.2", "netrc": "0.1.4", + "progress": "2.0.3", "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", + "surge-sdk": "0.3.0", "url-parse-as-address": "1.0.0" }, "devDependencies": { "commander": "2.9.0", - "mocha": "8.0.1", + "mocha": "8.3.0", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From bda98483b0c69112d328cb23d4296f4de437c0f8 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 1 Mar 2021 13:46:15 -0800 Subject: [PATCH 150/214] fixes login config reference --- lib/util/helpers.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 8cf8cc1..83993c2 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -240,9 +240,9 @@ exports.loginForm = function(req, callback){ prompt: smart("email:").grey, default: suggestion, edit: true, - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input + terminal: req.configuration.terminal, + output: req.configuration.output, + input: req.configuration.input }, function(err, answer){ if (answer === undefined) { console.log() @@ -259,7 +259,7 @@ exports.loginForm = function(req, callback){ var promptPassword = function(cb){ - var out = req.config.output + var out = req.configuration.output s = 0 if (out) out.isTTY = false read({ @@ -267,7 +267,7 @@ exports.loginForm = function(req, callback){ silent: true, edit: false, output: out, - input: req.config.input + input: req.configuration.input }, function(err, password){ if (password === undefined){ console.log() @@ -281,9 +281,9 @@ exports.loginForm = function(req, callback){ req.read({ prompt: smart("forgot?").grey, default: "yes", - terminal: req.config.terminal, - output: req.config.output, - input: req.config.input + terminal: req.configuration.terminal, + output: req.configuration.output, + input: req.configuration.input }, function(err, reply){ if (reply == "yes" || reply == "y" || reply == "Y") { var options = { From a47a0d5ad86ca81f6e0d7cf614ad0bab5ff19a86 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 1 Mar 2021 13:51:49 -0800 Subject: [PATCH 151/214] version bump 0.23.0-rc.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4076b84..4eb9bdc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.22.0", + "version": "0.23.0-rc.0", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", From 80ac1bdb83f1dde7fb71480be2e0089352063923 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 7 Mar 2021 18:52:41 -0800 Subject: [PATCH 152/214] adds date to revision output --- lib/util/tables.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 430c338..30b9c48 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -35,15 +35,25 @@ var condencedTableAttrs = { var revisionOutput = function(revision){ if (!revision) return "Empty" - return revision.preview.underline + "\n" + ("by " + revision.email) + ("\n(" + revision.publicFileCount + " files, " + revision.publicTotalSize + " size)") + return ( + revision.preview.underline + + "\n" + ("by " + revision.email) + + ("\n" + revision.publicFileCount + " files, " + revision.publicTotalSize + " size") + + "\n" + new Date(revision.rev).toUTCString() + ) } exports.rollfore = function(response){ var rollbackTable = new Table(condencedTableAttrs) rollbackTable.push([ { hAlign: "left", content: revisionOutput(response.former).grey }, - ">\n>\n>".green, - { hAlign: "left", content: revisionOutput(response.revision).green }, + [ + " ───┘\\ ", + " \\ ", + " / ", + " ───┐/ " + ].join("\n").grey, + { hAlign: "left", content: revisionOutput(response.revision).blue } ]) return rollbackTable } @@ -51,9 +61,14 @@ exports.rollfore = function(response){ exports.rollback = function(response){ var rollbackTable = new Table(condencedTableAttrs) rollbackTable.push([ - { hAlign: "left", content: revisionOutput(response.revision).green }, - "<\n<\n<".green, - { hAlign: "left", content: revisionOutput(response.former).grey }, + { hAlign: "left", content: revisionOutput(response.revision).blue }, + [ + " /└─── ", + " /", + " \\", + " \\┌─── " + ].join("\n").grey, + { hAlign: "left", content: revisionOutput(response.former).grey } ]) return rollbackTable } From 4470ec2192947f2cd4599f030cff16d250f303bd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 9 Mar 2021 16:06:03 -0800 Subject: [PATCH 153/214] adds audit call. version bump 0.23.0-rc.1 --- lib/surge.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/lib/surge.js b/lib/surge.js index 71e5b9b..9ac9b1a 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -55,6 +55,9 @@ var rollback = require("./middleware/rollback") var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") var bust = require("./middleware/bust") +var analytics = require("./middleware/analytics") +var usage = require("./middleware/usage") +var audit = require("./middleware/audit") var discard = require("./middleware/discard") var invite = require("./middleware/invite") var revoke = require("./middleware/revoke") @@ -158,7 +161,10 @@ module.exports = function(configuration){ "dns", "zone", "certs", - "bust" + "bust", + "analytics", + "usage", + "audit" ] if (commands.indexOf(cmd) !== -1) { @@ -406,6 +412,63 @@ module.exports = function(configuration){ } } + surge.analytics = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + analytics, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + + surge.usage = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + usage, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + + surge.audit = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + audit, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + surge.select = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub diff --git a/package.json b/package.json index 4eb9bdc..8d99e5a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.0", + "version": "0.23.0-rc.1", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", From df3784377c625e4383e95e3c08aec3d427a286c7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 9 Mar 2021 16:07:06 -0800 Subject: [PATCH 154/214] adds files for audit and usage --- lib/middleware/analytics.js | 21 +++++++++++++++++++ lib/middleware/audit.js | 40 +++++++++++++++++++++++++++++++++++++ lib/middleware/usage.js | 21 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 lib/middleware/analytics.js create mode 100644 lib/middleware/audit.js create mode 100644 lib/middleware/usage.js diff --git a/lib/middleware/analytics.js b/lib/middleware/analytics.js new file mode 100644 index 0000000..02b80d8 --- /dev/null +++ b/lib/middleware/analytics.js @@ -0,0 +1,21 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + helpers.space() + sdk.audit(domain, { user: "token", pass: req.creds.token }, function(error, response){ + helpers.trunc("coming soon".grey) + return next() + }) + +} \ No newline at end of file diff --git a/lib/middleware/audit.js b/lib/middleware/audit.js new file mode 100644 index 0000000..f420282 --- /dev/null +++ b/lib/middleware/audit.js @@ -0,0 +1,40 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + sdk.audit(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (!response){ + helpers.trunc("coming soon".grey) + return next() + } else { + var edgenodes = Object.keys(response) + + edgenodes.forEach(function(edgenode){ + var en = edgenode.split(".")[0] + var files = Object.keys(response[edgenode]["manifest"]) + files.forEach(function(file){ + console.log( + en.green + + " " + + response[edgenode]["rev"].toString().yellow + + " " + + response[edgenode]["manifest"][file]["md5sum"].grey + + " " + + domain.cyan + file.blue + ) + }) + }) + } + }) + +} \ No newline at end of file diff --git a/lib/middleware/usage.js b/lib/middleware/usage.js new file mode 100644 index 0000000..02b80d8 --- /dev/null +++ b/lib/middleware/usage.js @@ -0,0 +1,21 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + helpers.space() + sdk.audit(domain, { user: "token", pass: req.creds.token }, function(error, response){ + helpers.trunc("coming soon".grey) + return next() + }) + +} \ No newline at end of file From 16b5dc6db3cadbc2486c6867554ec9915dd2a641 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 9 Mar 2021 16:10:07 -0800 Subject: [PATCH 155/214] version bump 0.22.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6ac15ef..5140733 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.21.6", + "version": "0.22.1", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", From 4e932f593195cd6f21fa09f8160798b7d46e68fd Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 9 Mar 2021 16:13:59 -0800 Subject: [PATCH 156/214] version bump 0.23.0-rc.1 --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 29618f0..120ccf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.22.0", + "version": "0.23.0-rc.1", "lockfileVersion": 1, "requires": true, "dependencies": { From 4213dc4068a052be3db78ce9c68609df75623e02 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 9 Mar 2021 16:14:28 -0800 Subject: [PATCH 157/214] version bump 0.23.0-rc.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8d99e5a..d6a51d1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.1", + "version": "0.23.0-rc.2", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", From 1782a0dbb5af6180ef9d24d89cc1921bf8e47688 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 17 Mar 2021 14:20:14 -0700 Subject: [PATCH 158/214] basic charting now working --- lib/middleware/analytics.js | 9 ++- lib/util/helpers.js | 10 +++ lib/util/tables.js | 155 ++++++++++++++++++++++++++++++++++++ package-lock.json | 23 +++++- package.json | 3 +- 5 files changed, 192 insertions(+), 8 deletions(-) diff --git a/lib/middleware/analytics.js b/lib/middleware/analytics.js index 02b80d8..e714b2c 100644 --- a/lib/middleware/analytics.js +++ b/lib/middleware/analytics.js @@ -12,9 +12,12 @@ module.exports = function(req, next){ var domain = req.argv["_"][0] var rev = req.argv["_"][1] || null - helpers.space() - sdk.audit(domain, { user: "token", pass: req.creds.token }, function(error, response){ - helpers.trunc("coming soon".grey) + //helpers.space() + sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ + //helpers.trunc("coming soon".grey) + //console.log(response["yyz-02.surge.sh"]) + //helpers.displayAnalytics(response["yyz-02.surge.sh"]) + helpers.displayAnalytics(response) return next() }) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 83993c2..4b63ac4 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -497,6 +497,16 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.displayAnalytics = function(data){ + var table = tables.analytics(data) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + exports.displayRevisionBasicInfo = function(revision, domain){ space() trunc((revision.preview.underline).grey + (" (" + revision.publicFileCount + " files, " + revision.publicTotalSize + " size)").grey) diff --git a/lib/util/tables.js b/lib/util/tables.js index 30b9c48..046c2dd 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -1,5 +1,6 @@ var Table = require("cli-table3") +var babar = require("babar") var fqdn = function(domain){ //return domain.match(/\.$/) ? domain : domain + "." @@ -179,6 +180,160 @@ exports.instances = function(servers){ } +exports.analytics = function(data){ + var first = data.range[0] + var last = data.range[data.range.length -1] + var startDate = new Date(first) + var endDate = new Date(last) + + var title = + startDate.toLocaleDateString("en", { month: "long" }).cyan + + " " + + first.split("-")[2].cyan + + " - ".grey + + endDate.toLocaleDateString("en", { month: "long" }).cyan + + " " + + last.split("-")[2].cyan + + //var title = new Date(data.range[0] + " to " + data.range[data.range.length -1] + + var chartData = [] + + data.range.forEach(function(date, i){ + var day = parseInt(date.split("-")[2]) + var hit = data.general["visits"]["breakdown"][i] + // var hit = 0 + // hit += data.statuses["200"][i] + // hit += data.statuses["301"][i] + // hit += data.statuses["304"][i] + // hit += data.statuses["404"][i] + chartData.push([i + 1, hit]) + }) + + + var chart = babar(chartData, { + //caption: title, + color: 'green', + height: 10, + width: 100 + }) + + // var chart = babar([ + // [1, 100], + // [2, 100], [3, 101], [4, 102], [5, 103], [6, 105], + // [7, 106], [8, 107], [9, 108], + // [10, 200], + // [11, 306], [12, 107], [13, 108], + // [14, 900], + // [15,0], + // [16, 98], + // [17, 100], [18, 101], [19, 102], [20, 103], [21, 105], + // [22, 106], [23, 107], [24, 108], + // [25, 200], + // [26, 306], + // [27, 330], + // [28, 1230], + // [29, 830], + // [30, 930] + // ], { + // caption: title, + // color: 'green', + // height: 10, + // width: 100 + // }) + + //console.log(data) + + var table = new Table({ + head: [title + (" (Last "+ data.range.length + " days)").grey + (" calculated 7min ago\n").italic.yellow], + chars: { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': '' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': ' ' , + 'right-mid': '', + 'middle': ' ' }, + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + table.push([{ colSpan:2, content: chart.toString(), hAlign:"left" }]) + + + // Top Routes + var topRoutes = [] + //var pathList = Object.keys(data.success) + + + // data.success.forEach(function(hit){ + // topRoutes.push(hit["total"].toString().padStart(7," ").blue + " " + hit["path"]) + // }) + data.success.length = 16 + + table.push([ + + '\nTOP ROUTES\n'.grey + + data.success.map(function(hit){ + return hit["total"].toString().padStart(6," ").blue + " " + hit["path"].green + }).join("\n"), + + '\nENCRYPTION\n'.grey + + data.encryption.map(function(connection){ + return connection["total"].toString().padStart(6," ").blue + " " + connection["type"] + }).join("\n") + + + '\n\nSOURCES\n'.grey + + data.source.filter(function(s){ + if (s.name.indexOf(data.domain) === -1) return s + }).map(function(hit){ + return hit["total"].toString().padStart(6," ").blue + " " + hit["name"].cyan + }).join("\n") + + + '\n\nSTATUS CODES\n'.grey + + data.status.map(function(status){ + return status["total"].toString().padStart(6," ").blue + " " + status["code"] + }).join("\n")// + + // '\n\nBROWSERS'.grey + + // data.browser.map(function(browser){ + // return browser["total"].toString().padStart(7," ").blue + " " + browser["name"] + // }).join("\n") + + ]) + + data.fail.length = 6 + table.push([ + '\nNOT FOUND\n'.grey + + data.fail.map(function(hit){ + return hit["total"].toString().padStart(6," ").blue + " " + hit["path"].red + }).join("\n"), "" + ]) + + data.redirect.length = 6 + table.push([ + '\nTOP REDIRECTS\n'.grey + + data.redirect.map(function(hit){ + return hit["total"].toString().padStart(6," ").blue + " " + hit["path"].yellow + }).join("\n"), "" + ]) + + //data.source.length = 6 + table.push([ + + ]) + + return table +} + exports.nameservers = function(servers){ var table = new Table({ diff --git a/package-lock.json b/package-lock.json index 120ccf1..4f5c53b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.1", + "version": "0.23.0-rc.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -114,6 +114,21 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, + "babar": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babar/-/babar-0.2.0.tgz", + "integrity": "sha512-bH01czBTWEbf7Q6qje/4raQEG14jhPTQJmpj1Uxzw92VCr9yQcCWN+SbKTg34aOvWDs6wrhjfr6SGC8AaeSzaA==", + "requires": { + "colors": "~0.6.2" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1468,9 +1483,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.0.tgz", - "integrity": "sha512-x9/hfnBO5vbh1tan1QYqR3SLoI5J4On5n3YEQMwuQ+dKkp8qySmFCIIXW7K6ZN0nXCxkLgDILNEk4bOXXVqJ/g==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.1.tgz", + "integrity": "sha512-LzXlN0JEOZHjN4/jGUPUCKMlWJYAJhuO9t+5WJG1SeuIrXxjos41SeFf94cwZvuEJ9tPD1ibUamYBxoOQXSFbg==", "requires": { "request": "^2.88.0", "split": "^1.0.1", diff --git a/package.json b/package.json index d6a51d1..1e245f4 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { + "babar": "^0.2.0", "cli-table3": "^0.5.1", "colors": "^1.4.0", "inquirer": "^6.2.2", @@ -16,7 +17,7 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.3.0", + "surge-sdk": "0.3.1", "url-parse-as-address": "1.0.0" }, "devDependencies": { From 4bc3e8f6e6aa70fbdea512d6c54b9e40dda951a4 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 17 Mar 2021 14:26:33 -0700 Subject: [PATCH 159/214] updates surge-sdk to v0.3.2 --- package-lock.json | 8 ++++---- package.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4f5c53b..179939e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.2", + "version": "0.23.0-rc.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1483,9 +1483,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.1.tgz", - "integrity": "sha512-LzXlN0JEOZHjN4/jGUPUCKMlWJYAJhuO9t+5WJG1SeuIrXxjos41SeFf94cwZvuEJ9tPD1ibUamYBxoOQXSFbg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.2.tgz", + "integrity": "sha512-Fj22+sxe04lxoQP1H15ubSD9ra0uy2ratekoE03pPnpyHTzgocGM1Gco6YHcnbyxvIXbHbxHJ8w/19qWMUJfqg==", "requires": { "request": "^2.88.0", "split": "^1.0.1", diff --git a/package.json b/package.json index 1e245f4..8b706ba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.2", + "version": "0.23.0-rc.3", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", @@ -17,7 +17,7 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.3.1", + "surge-sdk": "0.3.2", "url-parse-as-address": "1.0.0" }, "devDependencies": { From af4a35f8a2b4c4f2a9534b4f806a2b5e99512c39 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 26 Mar 2021 04:56:07 -0700 Subject: [PATCH 160/214] updates analytics view --- lib/middleware/analytics.js | 10 +- lib/middleware/usage.js | 12 +- lib/util/helpers.js | 10 + lib/util/tables.js | 468 ++++++++++++++++++++++++++++-------- package-lock.json | 5 + package.json | 1 + 6 files changed, 399 insertions(+), 107 deletions(-) diff --git a/lib/middleware/analytics.js b/lib/middleware/analytics.js index e714b2c..e548f4b 100644 --- a/lib/middleware/analytics.js +++ b/lib/middleware/analytics.js @@ -11,12 +11,16 @@ module.exports = function(req, next){ var domain = req.argv["_"][0] var rev = req.argv["_"][1] || null + + //helpers.trunc("coming soon".grey) + + // var data = {"normalizedAt":"2021-03-20T08:22:26.170Z","version":"0.6.4","domain":"surge.sh","range":["2021-03-07","2021-03-08","2021-03-09","2021-03-10","2021-03-11","2021-03-12","2021-03-13","2021-03-14","2021-03-15","2021-03-16","2021-03-17","2021-03-18","2021-03-19","2021-03-20"],"general":{"visits":{"total":12980,"breakdown":[0,0,0,0,0,0,0,0,0,0,3877,4295,3985,823]},"connections":{"total":126404,"breakdown":[0,0,0,0,0,0,0,0,0,0,36174,41684,41486,7060]},"bandwidth":{"total":3404488989,"breakdown":[0,0,0,0,0,0,0,0,0,0,988898062,1139372814,1100231406,175986707]}},"status":[{"code":"200","total":84259,"breakdown":[0,0,0,0,0,0,0,0,0,0,24288,28423,27261,4287]},{"code":"304","total":28197,"breakdown":[0,0,0,0,0,0,0,0,0,0,7981,8835,9747,1634]},{"code":"404","total":9005,"breakdown":[0,0,0,0,0,0,0,0,0,0,2627,2743,2909,726]},{"code":"301","total":4638,"breakdown":[0,0,0,0,0,0,0,0,0,0,1163,1577,1498,400]},{"code":"206","total":305,"breakdown":[0,0,0,0,0,0,0,0,0,0,115,106,71,13]}],"encryption":[{"type":"Unencrypted","total":64820,"breakdown":[0,0,0,0,0,0,0,0,0,0,35115,29705,0,0]},{"type":"Encrypted","total":57332,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,10523,40119,6690]},{"type":"Forced HTTPS","total":4252,"breakdown":[0,0,0,0,0,0,0,0,0,0,1059,1456,1367,370]},{"type":"Forced HTTP","total":0,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,0]}],"source":[{"name":"https://surge.sh/","total":80981,"breakdown":[0,0,0,0,0,0,0,0,0,0,22900,27220,26925,3936]},{"name":"https://surge.sh/help/getting-started-with-surge","total":6929,"breakdown":[0,0,0,0,0,0,0,0,0,0,2218,2221,2179,311]},{"name":"https://surge.sh/pricing","total":2907,"breakdown":[0,0,0,0,0,0,0,0,0,0,834,932,891,250]},{"name":"https://surge.sh/help/adding-a-custom-domain","total":2387,"breakdown":[0,0,0,0,0,0,0,0,0,0,634,797,816,140]},{"name":"https://surge.sh/help/","total":1577,"breakdown":[0,0,0,0,0,0,0,0,0,0,467,485,528,97]},{"name":"https://www.google.com/","total":1534,"breakdown":[0,0,0,0,0,0,0,0,0,0,459,512,475,88]},{"name":"https://surge.sh/tour","total":1376,"breakdown":[0,0,0,0,0,0,0,0,0,0,399,407,462,108]},{"name":"https://surge.sh/help/securing-your-custom-domain-with-ssl","total":755,"breakdown":[0,0,0,0,0,0,0,0,0,0,101,294,292,68]},{"name":"https://tmm-slope.surge.sh/","total":729,"breakdown":[0,0,0,0,0,0,0,0,0,0,227,263,239,0]},{"name":"https://surge.sh/help/remembering-a-domain","total":574,"breakdown":[0,0,0,0,0,0,0,0,0,0,149,187,218,20]},{"name":"https://surge.sh/help/tearing-down-a-project","total":397,"breakdown":[0,0,0,0,0,0,0,0,0,0,105,109,183,0]},{"name":"https://surge.surge.sh/","total":383,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,117,248,18]},{"name":"https://tam-run3.surge.sh/","total":368,"breakdown":[0,0,0,0,0,0,0,0,0,0,115,124,129,0]},{"name":"https://surge.sh/help/using-https-by-default","total":350,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,154,151,45]},{"name":"http://surge.sh/","total":259,"breakdown":[0,0,0,0,0,0,0,0,0,0,160,99,0,0]},{"name":"https://surge.sh/help/adding-a-200-page-for-client-side-routing","total":135,"breakdown":[0,0,0,0,0,0,0,0,0,0,135,0,0,0]},{"name":"https://surge.sh/help/resetting-your-password","total":132,"breakdown":[0,0,0,0,0,0,0,0,0,0,132,0,0,0]},{"name":"https://surge.sh/help/copying-extra-files-into-the-directory-you-publish","total":122,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,122,0,0]},{"name":"http://www.surge.sh/","total":121,"breakdown":[0,0,0,0,0,0,0,0,0,0,121,0,0,0]},{"name":"https://surge.sh/help/using-incremental-publishing","total":104,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,104,0]},{"name":"https://surge.sh/help/listing-all-your-projects","total":97,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,97,0]},{"name":"https://surge.sh/help/upgrading-to-surge-plus","total":42,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,42]},{"name":"https://surge.sh/plus/","total":27,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,27]},{"name":"https://surge.sh/help/deploying-continuously-using-git-hooks","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,20]},{"name":"https://surge.sh/terms","total":14,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,14]},{"name":"https://surge.sh/help/chat","total":14,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,14]}],"device":[],"os":[],"browser":[],"success":[{"path":"/","total":8386,"breakdown":[0,0,0,0,0,0,0,0,0,0,2553,2807,2514,512]},{"path":"/help/getting-started-with-surge","total":1096,"breakdown":[0,0,0,0,0,0,0,0,0,0,381,343,315,57]},{"path":"/pricing","total":780,"breakdown":[0,0,0,0,0,0,0,0,0,0,224,263,230,63]},{"path":"/help/","total":414,"breakdown":[0,0,0,0,0,0,0,0,0,0,117,126,140,31]},{"path":"/help/adding-a-custom-domain","total":371,"breakdown":[0,0,0,0,0,0,0,0,0,0,98,127,123,23]},{"path":"/tour","total":223,"breakdown":[0,0,0,0,0,0,0,0,0,0,60,65,77,21]},{"path":"/help/remembering-a-domain","total":117,"breakdown":[0,0,0,0,0,0,0,0,0,0,34,36,47,0]},{"path":"/help/using-https-by-default","total":107,"breakdown":[0,0,0,0,0,0,0,0,0,0,26,36,32,13]},{"path":"/help/tearing-down-a-project","total":96,"breakdown":[0,0,0,0,0,0,0,0,0,0,23,33,40,0]},{"path":"/help/adding-a-200-page-for-client-side-routing","total":90,"breakdown":[0,0,0,0,0,0,0,0,0,0,23,27,33,7]},{"path":"/help/copying-extra-files-into-the-directory-you-publish","total":74,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,32,24,0]},{"path":"/help/securing-your-custom-domain-with-ssl","total":72,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,30,35,7]},{"path":"/help/adding-a-custom-404-not-found-page","total":66,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,21,22,6]},{"path":"/help/upgrading-to-surge-plus","total":42,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,0,20,5]},{"path":"/help/enabling-cross-origin-resource-sharing","total":33,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,27,0,6]},{"path":"/terms","total":29,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,22,0,7]},{"path":"/help/deploying-continuously-using-git-hooks","total":28,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,21,7]},{"path":"/plus/","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,20,0]},{"path":"/help/listing-all-your-projects","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,20,0,0]},{"path":"/help/resetting-your-password","total":19,"breakdown":[0,0,0,0,0,0,0,0,0,0,19,0,0,0]},{"path":"/help/chat","total":19,"breakdown":[0,0,0,0,0,0,0,0,0,0,19,0,0,0]},{"path":"/help/why-is-surge-free","total":15,"breakdown":[0,0,0,0,0,0,0,0,0,0,15,0,0,0]},{"path":"/privacy","total":7,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,7]},{"path":"/help/deploying-a-jekyll-project","total":6,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,6]}],"fail":[{"path":"/favicon.ico","total":4984,"breakdown":[0,0,0,0,0,0,0,0,0,0,1554,1590,1494,346]},{"path":"/robots.txt","total":848,"breakdown":[0,0,0,0,0,0,0,0,0,0,199,199,352,98]},{"path":"/app-ads.txt","total":837,"breakdown":[0,0,0,0,0,0,0,0,0,0,223,197,328,89]},{"path":"/apple-touch-icon.png","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,89,56,69,16]},{"path":"/apple-touch-icon-precomposed.png","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,89,55,70,16]},{"path":"/ads.txt","total":158,"breakdown":[0,0,0,0,0,0,0,0,0,0,42,48,51,17]},{"path":"/.well-known/assetlinks.json","total":131,"breakdown":[0,0,0,0,0,0,0,0,0,0,27,31,52,21]},{"path":"/laybuy.surge.sh/styles.css","total":84,"breakdown":[0,0,0,0,0,0,0,0,0,0,26,31,22,5]},{"path":"/laybuy.surge.sh/cursor.svg","total":74,"breakdown":[0,0,0,0,0,0,0,0,0,0,22,33,19,0]},{"path":"/bluelaba.surge.sh/static/media/logo-no-bg.3de290ee.svg","total":70,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,25,20,0]},{"path":"/apple-touch-icon-120x120-precomposed.png","total":67,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,19,23,0]},{"path":"/apple-touch-icon-120x120.png","total":66,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,19,22,0]},{"path":"/laybuy.surge.sh/calendar.svg","total":65,"breakdown":[0,0,0,0,0,0,0,0,0,0,16,29,15,5]},{"path":"/laybuy.surge.sh/laybuy-badge.svg","total":50,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,27,0,6]},{"path":"/sellers.json","total":33,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,29,4]},{"path":"/laybuy.surge.sh/smiling-face.svg","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,25,0,5]},{"path":"/.well-known/pki-validation/ca3-eea3ad4bfff14d1fb386f6fd02f5693a.txt","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,23,7]},{"path":"/.well-known/pki-validation/ca3-dfd32aaf9fed492b83ca9e55634ed5c9.txt","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,23,7]},{"path":"/apple-touch-icon-152x152-precomposed.png","total":25,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,0,0,7]},{"path":"/apple-touch-icon-152x152.png","total":24,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,0,0,6]},{"path":"/csshake.surge.sh/csshake.min.css","total":21,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,21,0,0]}],"redirect":[{"path":"/css/index.css","total":2778,"breakdown":[0,0,0,0,0,0,0,0,0,0,1381,1397,0,0]},{"path":"/images/logos/svg/surge-logo.svg","total":2730,"breakdown":[0,0,0,0,0,0,0,0,0,0,1372,1358,0,0]},{"path":"/js/cache.js","total":2713,"breakdown":[0,0,0,0,0,0,0,0,0,0,1361,1352,0,0]},{"path":"/","total":1877,"breakdown":[0,0,0,0,0,0,0,0,0,0,899,978,0,0]},{"path":"/images/tour/tour-landing-example.png","total":717,"breakdown":[0,0,0,0,0,0,0,0,0,0,358,359,0,0]},{"path":"/images/surge-companion-github.png","total":619,"breakdown":[0,0,0,0,0,0,0,0,0,0,298,321,0,0]},{"path":"/images/surge-companion-cli.png","total":592,"breakdown":[0,0,0,0,0,0,0,0,0,0,286,306,0,0]},{"path":"/images/surge-companion-grunt.png","total":591,"breakdown":[0,0,0,0,0,0,0,0,0,0,286,305,0,0]},{"path":"/images/surge-companion-gulp.png","total":586,"breakdown":[0,0,0,0,0,0,0,0,0,0,283,303,0,0]},{"path":"/images/surge-companion-npm.png","total":585,"breakdown":[0,0,0,0,0,0,0,0,0,0,287,298,0,0]},{"path":"/images/surge-companion-jekyll.png","total":568,"breakdown":[0,0,0,0,0,0,0,0,0,0,277,291,0,0]},{"path":"/images/surge-companion-node.png","total":568,"breakdown":[0,0,0,0,0,0,0,0,0,0,278,290,0,0]},{"path":"/images/surge-companion-travis-ci.png","total":534,"breakdown":[0,0,0,0,0,0,0,0,0,0,258,276,0,0]},{"path":"/images/help/adding-collaborators.gif","total":420,"breakdown":[0,0,0,0,0,0,0,0,0,0,211,209,0,0]},{"path":"/help/getting-started-with-surge","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,127,103,0,0]},{"path":"301 /help","total":147,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,120,27]},{"path":"/images/help/getting-started-with-surge.gif","total":113,"breakdown":[0,0,0,0,0,0,0,0,0,0,113,0,0,0]},{"path":"/help","total":108,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,108,0,0]},{"path":"301 /plus","total":13,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,11,2]},{"path":"301 /stickers","total":1,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,1]}],"load":[{"path":"/js/cache.js","total":662398048,"breakdown":[0,0,0,0,0,0,0,0,0,0,189209522,223910746,216992464,32285316]},{"path":"/images/help/getting-started-with-surge.gif","total":599524223,"breakdown":[0,0,0,0,0,0,0,0,0,0,188847740,191922892,183551909,35201682]},{"path":"/images/tour/tour-landing-example.png","total":586248863,"breakdown":[0,0,0,0,0,0,0,0,0,0,168404313,199439873,190615584,27789093]},{"path":"/images/surge-companion-travis-ci.png","total":403651187,"breakdown":[0,0,0,0,0,0,0,0,0,0,116137028,136635927,131783528,19094704]},{"path":"/css/index.css","total":371018664,"breakdown":[0,0,0,0,0,0,0,0,0,0,104976072,125459208,122422464,18160920]},{"path":"/index.html","total":162912309,"breakdown":[0,0,0,0,0,0,0,0,0,0,49570458,54556110,50019984,8765757]},{"path":"/images/help/adding-collaborators.gif","total":101566811,"breakdown":[0,0,0,0,0,0,0,0,0,0,31066942,32639837,32344299,5515733]},{"path":"/images/surge-companion-grunt.png","total":69371565,"breakdown":[0,0,0,0,0,0,0,0,0,0,19933916,23495374,22688281,3253994]},{"path":"/images/logos/svg/surge-logo.svg","total":40754960,"breakdown":[0,0,0,0,0,0,0,0,0,0,11548336,13984416,13194336,2027872]},{"path":"/404.html","total":36478615,"breakdown":[0,0,0,0,0,0,0,0,0,0,9686580,11339085,12433520,3019430]},{"path":"/images/surge-companion-jekyll.png","total":36123912,"breakdown":[0,0,0,0,0,0,0,0,0,0,10414404,12272436,11760804,1676268]},{"path":"/images/surge-companion-github.png","total":33848328,"breakdown":[0,0,0,0,0,0,0,0,0,0,9771876,11453664,11009772,1613016]},{"path":"/images/surge-companion-gulp.png","total":30697624,"breakdown":[0,0,0,0,0,0,0,0,0,0,8847400,10371436,10028956,1449832]},{"path":"/images/plus/plus-ssl-example.png","total":30392262,"breakdown":[0,0,0,0,0,0,0,0,0,0,8197404,10440090,10053420,1701348]},{"path":"/images/surge-companion-cli.png","total":22565600,"breakdown":[0,0,0,0,0,0,0,0,0,0,6512870,7641150,7342240,1069340]},{"path":"/images/surge-companion-node.png","total":10891968,"breakdown":[0,0,0,0,0,0,0,0,0,0,4990656,5901312,0,0]},{"path":"/images/help/adding-a-custom-domain-2.png","total":5701400,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,5701400,0]},{"path":"/images/help/adding-a-custom-domain.png","total":941137,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,941137]}]} + // helpers.displayAnalytics(data) + // return next() //helpers.space() sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ - //helpers.trunc("coming soon".grey) - //console.log(response["yyz-02.surge.sh"]) - //helpers.displayAnalytics(response["yyz-02.surge.sh"]) + //console.log(JSON.stringify(response)) helpers.displayAnalytics(response) return next() }) diff --git a/lib/middleware/usage.js b/lib/middleware/usage.js index 02b80d8..02e1441 100644 --- a/lib/middleware/usage.js +++ b/lib/middleware/usage.js @@ -11,10 +11,14 @@ module.exports = function(req, next){ var domain = req.argv["_"][0] var rev = req.argv["_"][1] || null - - helpers.space() - sdk.audit(domain, { user: "token", pass: req.creds.token }, function(error, response){ - helpers.trunc("coming soon".grey) + + // var data = {"normalizedAt":"2021-03-20T08:22:26.170Z","version":"0.6.4","domain":"surge.sh","range":["2021-03-07","2021-03-08","2021-03-09","2021-03-10","2021-03-11","2021-03-12","2021-03-13","2021-03-14","2021-03-15","2021-03-16","2021-03-17","2021-03-18","2021-03-19","2021-03-20"],"general":{"visits":{"total":12980,"breakdown":[0,0,0,0,0,0,0,0,0,0,3877,4295,3985,823]},"connections":{"total":126404,"breakdown":[0,0,0,0,0,0,0,0,0,0,36174,41684,41486,7060]},"bandwidth":{"total":3404488989,"breakdown":[0,0,0,0,0,0,0,0,0,0,988898062,1139372814,1100231406,175986707]}},"status":[{"code":"200","total":84259,"breakdown":[0,0,0,0,0,0,0,0,0,0,24288,28423,27261,4287]},{"code":"304","total":28197,"breakdown":[0,0,0,0,0,0,0,0,0,0,7981,8835,9747,1634]},{"code":"404","total":9005,"breakdown":[0,0,0,0,0,0,0,0,0,0,2627,2743,2909,726]},{"code":"301","total":4638,"breakdown":[0,0,0,0,0,0,0,0,0,0,1163,1577,1498,400]},{"code":"206","total":305,"breakdown":[0,0,0,0,0,0,0,0,0,0,115,106,71,13]}],"encryption":[{"type":"Unencrypted","total":64820,"breakdown":[0,0,0,0,0,0,0,0,0,0,35115,29705,0,0]},{"type":"Encrypted","total":57332,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,10523,40119,6690]},{"type":"Forced HTTPS","total":4252,"breakdown":[0,0,0,0,0,0,0,0,0,0,1059,1456,1367,370]},{"type":"Forced HTTP","total":0,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,0]}],"source":[{"name":"https://surge.sh/","total":80981,"breakdown":[0,0,0,0,0,0,0,0,0,0,22900,27220,26925,3936]},{"name":"https://surge.sh/help/getting-started-with-surge","total":6929,"breakdown":[0,0,0,0,0,0,0,0,0,0,2218,2221,2179,311]},{"name":"https://surge.sh/pricing","total":2907,"breakdown":[0,0,0,0,0,0,0,0,0,0,834,932,891,250]},{"name":"https://surge.sh/help/adding-a-custom-domain","total":2387,"breakdown":[0,0,0,0,0,0,0,0,0,0,634,797,816,140]},{"name":"https://surge.sh/help/","total":1577,"breakdown":[0,0,0,0,0,0,0,0,0,0,467,485,528,97]},{"name":"https://www.google.com/","total":1534,"breakdown":[0,0,0,0,0,0,0,0,0,0,459,512,475,88]},{"name":"https://surge.sh/tour","total":1376,"breakdown":[0,0,0,0,0,0,0,0,0,0,399,407,462,108]},{"name":"https://surge.sh/help/securing-your-custom-domain-with-ssl","total":755,"breakdown":[0,0,0,0,0,0,0,0,0,0,101,294,292,68]},{"name":"https://tmm-slope.surge.sh/","total":729,"breakdown":[0,0,0,0,0,0,0,0,0,0,227,263,239,0]},{"name":"https://surge.sh/help/remembering-a-domain","total":574,"breakdown":[0,0,0,0,0,0,0,0,0,0,149,187,218,20]},{"name":"https://surge.sh/help/tearing-down-a-project","total":397,"breakdown":[0,0,0,0,0,0,0,0,0,0,105,109,183,0]},{"name":"https://surge.surge.sh/","total":383,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,117,248,18]},{"name":"https://tam-run3.surge.sh/","total":368,"breakdown":[0,0,0,0,0,0,0,0,0,0,115,124,129,0]},{"name":"https://surge.sh/help/using-https-by-default","total":350,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,154,151,45]},{"name":"http://surge.sh/","total":259,"breakdown":[0,0,0,0,0,0,0,0,0,0,160,99,0,0]},{"name":"https://surge.sh/help/adding-a-200-page-for-client-side-routing","total":135,"breakdown":[0,0,0,0,0,0,0,0,0,0,135,0,0,0]},{"name":"https://surge.sh/help/resetting-your-password","total":132,"breakdown":[0,0,0,0,0,0,0,0,0,0,132,0,0,0]},{"name":"https://surge.sh/help/copying-extra-files-into-the-directory-you-publish","total":122,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,122,0,0]},{"name":"http://www.surge.sh/","total":121,"breakdown":[0,0,0,0,0,0,0,0,0,0,121,0,0,0]},{"name":"https://surge.sh/help/using-incremental-publishing","total":104,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,104,0]},{"name":"https://surge.sh/help/listing-all-your-projects","total":97,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,97,0]},{"name":"https://surge.sh/help/upgrading-to-surge-plus","total":42,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,42]},{"name":"https://surge.sh/plus/","total":27,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,27]},{"name":"https://surge.sh/help/deploying-continuously-using-git-hooks","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,20]},{"name":"https://surge.sh/terms","total":14,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,14]},{"name":"https://surge.sh/help/chat","total":14,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,14]}],"device":[],"os":[],"browser":[],"success":[{"path":"/","total":8386,"breakdown":[0,0,0,0,0,0,0,0,0,0,2553,2807,2514,512]},{"path":"/help/getting-started-with-surge","total":1096,"breakdown":[0,0,0,0,0,0,0,0,0,0,381,343,315,57]},{"path":"/pricing","total":780,"breakdown":[0,0,0,0,0,0,0,0,0,0,224,263,230,63]},{"path":"/help/","total":414,"breakdown":[0,0,0,0,0,0,0,0,0,0,117,126,140,31]},{"path":"/help/adding-a-custom-domain","total":371,"breakdown":[0,0,0,0,0,0,0,0,0,0,98,127,123,23]},{"path":"/tour","total":223,"breakdown":[0,0,0,0,0,0,0,0,0,0,60,65,77,21]},{"path":"/help/remembering-a-domain","total":117,"breakdown":[0,0,0,0,0,0,0,0,0,0,34,36,47,0]},{"path":"/help/using-https-by-default","total":107,"breakdown":[0,0,0,0,0,0,0,0,0,0,26,36,32,13]},{"path":"/help/tearing-down-a-project","total":96,"breakdown":[0,0,0,0,0,0,0,0,0,0,23,33,40,0]},{"path":"/help/adding-a-200-page-for-client-side-routing","total":90,"breakdown":[0,0,0,0,0,0,0,0,0,0,23,27,33,7]},{"path":"/help/copying-extra-files-into-the-directory-you-publish","total":74,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,32,24,0]},{"path":"/help/securing-your-custom-domain-with-ssl","total":72,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,30,35,7]},{"path":"/help/adding-a-custom-404-not-found-page","total":66,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,21,22,6]},{"path":"/help/upgrading-to-surge-plus","total":42,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,0,20,5]},{"path":"/help/enabling-cross-origin-resource-sharing","total":33,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,27,0,6]},{"path":"/terms","total":29,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,22,0,7]},{"path":"/help/deploying-continuously-using-git-hooks","total":28,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,21,7]},{"path":"/plus/","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,20,0]},{"path":"/help/listing-all-your-projects","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,20,0,0]},{"path":"/help/resetting-your-password","total":19,"breakdown":[0,0,0,0,0,0,0,0,0,0,19,0,0,0]},{"path":"/help/chat","total":19,"breakdown":[0,0,0,0,0,0,0,0,0,0,19,0,0,0]},{"path":"/help/why-is-surge-free","total":15,"breakdown":[0,0,0,0,0,0,0,0,0,0,15,0,0,0]},{"path":"/privacy","total":7,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,7]},{"path":"/help/deploying-a-jekyll-project","total":6,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,6]}],"fail":[{"path":"/favicon.ico","total":4984,"breakdown":[0,0,0,0,0,0,0,0,0,0,1554,1590,1494,346]},{"path":"/robots.txt","total":848,"breakdown":[0,0,0,0,0,0,0,0,0,0,199,199,352,98]},{"path":"/app-ads.txt","total":837,"breakdown":[0,0,0,0,0,0,0,0,0,0,223,197,328,89]},{"path":"/apple-touch-icon.png","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,89,56,69,16]},{"path":"/apple-touch-icon-precomposed.png","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,89,55,70,16]},{"path":"/ads.txt","total":158,"breakdown":[0,0,0,0,0,0,0,0,0,0,42,48,51,17]},{"path":"/.well-known/assetlinks.json","total":131,"breakdown":[0,0,0,0,0,0,0,0,0,0,27,31,52,21]},{"path":"/laybuy.surge.sh/styles.css","total":84,"breakdown":[0,0,0,0,0,0,0,0,0,0,26,31,22,5]},{"path":"/laybuy.surge.sh/cursor.svg","total":74,"breakdown":[0,0,0,0,0,0,0,0,0,0,22,33,19,0]},{"path":"/bluelaba.surge.sh/static/media/logo-no-bg.3de290ee.svg","total":70,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,25,20,0]},{"path":"/apple-touch-icon-120x120-precomposed.png","total":67,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,19,23,0]},{"path":"/apple-touch-icon-120x120.png","total":66,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,19,22,0]},{"path":"/laybuy.surge.sh/calendar.svg","total":65,"breakdown":[0,0,0,0,0,0,0,0,0,0,16,29,15,5]},{"path":"/laybuy.surge.sh/laybuy-badge.svg","total":50,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,27,0,6]},{"path":"/sellers.json","total":33,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,29,4]},{"path":"/laybuy.surge.sh/smiling-face.svg","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,25,0,5]},{"path":"/.well-known/pki-validation/ca3-eea3ad4bfff14d1fb386f6fd02f5693a.txt","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,23,7]},{"path":"/.well-known/pki-validation/ca3-dfd32aaf9fed492b83ca9e55634ed5c9.txt","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,23,7]},{"path":"/apple-touch-icon-152x152-precomposed.png","total":25,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,0,0,7]},{"path":"/apple-touch-icon-152x152.png","total":24,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,0,0,6]},{"path":"/csshake.surge.sh/csshake.min.css","total":21,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,21,0,0]}],"redirect":[{"path":"/css/index.css","total":2778,"breakdown":[0,0,0,0,0,0,0,0,0,0,1381,1397,0,0]},{"path":"/images/logos/svg/surge-logo.svg","total":2730,"breakdown":[0,0,0,0,0,0,0,0,0,0,1372,1358,0,0]},{"path":"/js/cache.js","total":2713,"breakdown":[0,0,0,0,0,0,0,0,0,0,1361,1352,0,0]},{"path":"/","total":1877,"breakdown":[0,0,0,0,0,0,0,0,0,0,899,978,0,0]},{"path":"/images/tour/tour-landing-example.png","total":717,"breakdown":[0,0,0,0,0,0,0,0,0,0,358,359,0,0]},{"path":"/images/surge-companion-github.png","total":619,"breakdown":[0,0,0,0,0,0,0,0,0,0,298,321,0,0]},{"path":"/images/surge-companion-cli.png","total":592,"breakdown":[0,0,0,0,0,0,0,0,0,0,286,306,0,0]},{"path":"/images/surge-companion-grunt.png","total":591,"breakdown":[0,0,0,0,0,0,0,0,0,0,286,305,0,0]},{"path":"/images/surge-companion-gulp.png","total":586,"breakdown":[0,0,0,0,0,0,0,0,0,0,283,303,0,0]},{"path":"/images/surge-companion-npm.png","total":585,"breakdown":[0,0,0,0,0,0,0,0,0,0,287,298,0,0]},{"path":"/images/surge-companion-jekyll.png","total":568,"breakdown":[0,0,0,0,0,0,0,0,0,0,277,291,0,0]},{"path":"/images/surge-companion-node.png","total":568,"breakdown":[0,0,0,0,0,0,0,0,0,0,278,290,0,0]},{"path":"/images/surge-companion-travis-ci.png","total":534,"breakdown":[0,0,0,0,0,0,0,0,0,0,258,276,0,0]},{"path":"/images/help/adding-collaborators.gif","total":420,"breakdown":[0,0,0,0,0,0,0,0,0,0,211,209,0,0]},{"path":"/help/getting-started-with-surge","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,127,103,0,0]},{"path":"301 /help","total":147,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,120,27]},{"path":"/images/help/getting-started-with-surge.gif","total":113,"breakdown":[0,0,0,0,0,0,0,0,0,0,113,0,0,0]},{"path":"/help","total":108,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,108,0,0]},{"path":"301 /plus","total":13,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,11,2]},{"path":"301 /stickers","total":1,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,1]}],"load":[{"path":"/js/cache.js","total":662398048,"breakdown":[0,0,0,0,0,0,0,0,0,0,189209522,223910746,216992464,32285316]},{"path":"/images/help/getting-started-with-surge.gif","total":599524223,"breakdown":[0,0,0,0,0,0,0,0,0,0,188847740,191922892,183551909,35201682]},{"path":"/images/tour/tour-landing-example.png","total":586248863,"breakdown":[0,0,0,0,0,0,0,0,0,0,168404313,199439873,190615584,27789093]},{"path":"/images/surge-companion-travis-ci.png","total":403651187,"breakdown":[0,0,0,0,0,0,0,0,0,0,116137028,136635927,131783528,19094704]},{"path":"/css/index.css","total":371018664,"breakdown":[0,0,0,0,0,0,0,0,0,0,104976072,125459208,122422464,18160920]},{"path":"/index.html","total":162912309,"breakdown":[0,0,0,0,0,0,0,0,0,0,49570458,54556110,50019984,8765757]},{"path":"/images/help/adding-collaborators.gif","total":101566811,"breakdown":[0,0,0,0,0,0,0,0,0,0,31066942,32639837,32344299,5515733]},{"path":"/images/surge-companion-grunt.png","total":69371565,"breakdown":[0,0,0,0,0,0,0,0,0,0,19933916,23495374,22688281,3253994]},{"path":"/images/logos/svg/surge-logo.svg","total":40754960,"breakdown":[0,0,0,0,0,0,0,0,0,0,11548336,13984416,13194336,2027872]},{"path":"/404.html","total":36478615,"breakdown":[0,0,0,0,0,0,0,0,0,0,9686580,11339085,12433520,3019430]},{"path":"/images/surge-companion-jekyll.png","total":36123912,"breakdown":[0,0,0,0,0,0,0,0,0,0,10414404,12272436,11760804,1676268]},{"path":"/images/surge-companion-github.png","total":33848328,"breakdown":[0,0,0,0,0,0,0,0,0,0,9771876,11453664,11009772,1613016]},{"path":"/images/surge-companion-gulp.png","total":30697624,"breakdown":[0,0,0,0,0,0,0,0,0,0,8847400,10371436,10028956,1449832]},{"path":"/images/plus/plus-ssl-example.png","total":30392262,"breakdown":[0,0,0,0,0,0,0,0,0,0,8197404,10440090,10053420,1701348]},{"path":"/images/surge-companion-cli.png","total":22565600,"breakdown":[0,0,0,0,0,0,0,0,0,0,6512870,7641150,7342240,1069340]},{"path":"/images/surge-companion-node.png","total":10891968,"breakdown":[0,0,0,0,0,0,0,0,0,0,4990656,5901312,0,0]},{"path":"/images/help/adding-a-custom-domain-2.png","total":5701400,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,5701400,0]},{"path":"/images/help/adding-a-custom-domain.png","total":941137,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,941137]}]} + // helpers.displayUsage(data) + // helpers.displayAnalytics(data) + // return next() + + sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ + helpers.displayUsage(response) return next() }) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 4b63ac4..1bd0f5a 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -497,6 +497,16 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.displayUsage = function(data){ + var table = tables.usage(data) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + exports.displayAnalytics = function(data){ var table = tables.analytics(data) var rows = table.toString().split("\n") diff --git a/lib/util/tables.js b/lib/util/tables.js index 046c2dd..47d9cd3 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -1,6 +1,33 @@ -var Table = require("cli-table3") -var babar = require("babar") +var Table = require("cli-table3") +var babar = require("babar") +var url = require("url") +var hrn = require('human-readable-numbers').toHumanString + +var cleanTable = { + 'top': '' , + 'top-mid': '' , + 'top-left': '' , + 'top-right': '', + 'bottom': '' , + 'bottom-mid': '' , + 'bottom-left': '' , + 'bottom-right': '', + 'left': '' , + 'left-mid': '' , + 'mid': '' , + 'mid-mid': '', + 'right': ' ' , + 'right-mid': '', + 'middle': ' ' +} + +var chunkArrayInGroups = function(arr, size) { + var result = []; + for (var i=0; i i.domain), 2) var nsServersStr = groups.map(r => r.join(" ")).join("\n") @@ -129,9 +156,9 @@ exports.instances = function(servers){ //table.push([{rowSpan:8,content:'greetings\nfriends'}]) - var attrReport = function(str, status){ - if (["green"].indexOf(status) !== -1) return str.green - return str.grey + var attrReport = function(poperty, color){ + if (color) return poperty[color] + return poperty.grey } servers.forEach(function(s){ @@ -180,72 +207,58 @@ exports.instances = function(servers){ } -exports.analytics = function(data){ +var analyticsAndUsageHeaderTitle = function(data){ var first = data.range[0] var last = data.range[data.range.length -1] var startDate = new Date(first) var endDate = new Date(last) var title = - startDate.toLocaleDateString("en", { month: "long" }).cyan + startDate.toLocaleDateString("en", { month: "long" }) + " " - + first.split("-")[2].cyan - + " - ".grey - + endDate.toLocaleDateString("en", { month: "long" }).cyan + + first.split("-")[2] + + " - " + + endDate.toLocaleDateString("en", { month: "long" }) + " " - + last.split("-")[2].cyan + + last.split("-")[2] - //var title = new Date(data.range[0] + " to " + data.range[data.range.length -1] + return title +} - var chartData = [] - +exports.usage = function(data){ + var title = analyticsAndUsageHeaderTitle(data) + + // CHART + //console.log(data) + + data.load.map(function(file){ + file.totalInMB = file.total / 1048576 + file.totalInGB = file.totalInMB / 1024 + file.totalInGBRounded = Math.round(file.totalInGB * 100) / 100 + return {} + }) + + var chartData = [] data.range.forEach(function(date, i){ var day = parseInt(date.split("-")[2]) - var hit = data.general["visits"]["breakdown"][i] - // var hit = 0 - // hit += data.statuses["200"][i] - // hit += data.statuses["301"][i] - // hit += data.statuses["304"][i] - // hit += data.statuses["404"][i] + var hit = data.general["bandwidth"]["breakdown"][i] / 1048576 / 1024 chartData.push([i + 1, hit]) }) - var chart = babar(chartData, { - //caption: title, - color: 'green', - height: 10, + //caption: "Bandwidth (GB)", + color: 'yellow', + height: 8, width: 100 }) - // var chart = babar([ - // [1, 100], - // [2, 100], [3, 101], [4, 102], [5, 103], [6, 105], - // [7, 106], [8, 107], [9, 108], - // [10, 200], - // [11, 306], [12, 107], [13, 108], - // [14, 900], - // [15,0], - // [16, 98], - // [17, 100], [18, 101], [19, 102], [20, 103], [21, 105], - // [22, 106], [23, 107], [24, 108], - // [25, 200], - // [26, 306], - // [27, 330], - // [28, 1230], - // [29, 830], - // [30, 930] - // ], { - // caption: title, - // color: 'green', - // height: 10, - // width: 100 - // }) - - //console.log(data) + var arr = chart.split("\n") + arr.pop() + var chart = arr.join("\n") var table = new Table({ - head: [title + (" (Last "+ data.range.length + " days)").grey + (" calculated 7min ago\n").italic.yellow], + colWidths: [50, 50], + head: [], chars: { 'top': '' , 'top-mid': '' , @@ -267,7 +280,104 @@ exports.analytics = function(data){ 'padding-right': 0 } }) - table.push([{ colSpan:2, content: chart.toString(), hAlign:"left" }]) + + data.load.map(function(file){ + file.totalInMB = file.total / 1048576 + file.totalInGB = file.totalInMB / 1024 + file.totalInGBRounded = Math.round(file.totalInGB * 1000) / 1000 + return file + }) + + + if (data.load.length > 0){ + + // var header = "Bandwidth by File (ascending order)\n".grey + + var header = "(file list may not represent all transfers)".italic.grey + + table.push([ + { content: ("USAGE".underline.brightMagenta + (" (" + title + ")").grey), colSpan: 2 }, + ]) + + table.push([]) + + var groups = chunkArrayInGroups(data.load.reverse(), Math.round(data.load.length / 2)) + groups[0].forEach(function(file, i){ + table.push([ + { content: (groups[0][i].totalInGBRounded.toString().padEnd(5, "0").cyan + " GB ".grey + groups[0][i].path.grey) }, + { content: groups[1][i] ? (groups[1][i].totalInGBRounded.toString().padEnd(5, "0").cyan + " GB ".grey + groups[1][i].path.grey) : "" } + ]) + }) + + table.push([]) + + var totalInGB = data.general.bandwidth.total / 1048576 / 1024 + + // table.push([ + // { content: (Math.round(totalInGB * 1000) / 1000).toString().padEnd(5, "0") + " GB".grey + " HEADERS".grey }, "" + // ]) + + // table.push([ + // { content: (Math.round(totalInGB * 1000) / 1000).toString().padEnd(5, "0") + " GB".grey + " BODY".grey }, "" + // ]) + + table.push([ + { + hAlign: "center", + colSpan: 2, + content: (Math.round(totalInGB * 1000) / 1000).toString().padEnd(5, "0").green + " GB".grey + " TOTAL BANDWIDTH".green } + ]) + + } else { + table.push([ + { content: "Empty".yellow + " - Insufficient data.".grey, width:100 }, + ]) + } + + + // TOTALS + + + + return table +} + +exports.analytics = function(data){ + var title = analyticsAndUsageHeaderTitle(data) + + // CHART + + var chartData = [] + data.range.forEach(function(date, i){ + var day = parseInt(date.split("-")[2]) + var hit = data.traffic["visits"]["breakdown"][i] + chartData.push([i + 1, hit]) + }) + + var chart = babar(chartData, { + //caption: title, + color: 'green', + height: 8, + width: 100 + }) + + var arr = chart.split("\n") + arr.pop() + var chart = arr.join("\n") + + + // TABLE + + var table = new Table({ + //head: [title + (" (Last "+ data.range.length + " days)").grey + (" calculated 7min ago\n").italic.yellow], + //head: ["One", "two", "three", "four"], + colWidths: [24, 24, 24, 24], + chars: cleanTable, + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + table.push([{ colSpan:4, content: ("TRAFFIC".underline.brightMagenta + (" (" + title + ")").grey) + "\n\n" + chart.toString(), hAlign:"left" }]) // Top Routes @@ -278,57 +388,215 @@ exports.analytics = function(data){ // data.success.forEach(function(hit){ // topRoutes.push(hit["total"].toString().padStart(7," ").blue + " " + hit["path"]) // }) - data.success.length = 16 + //data.success.length = 16 - table.push([ - - '\nTOP ROUTES\n'.grey + - data.success.map(function(hit){ - return hit["total"].toString().padStart(6," ").blue + " " + hit["path"].green - }).join("\n"), - - '\nENCRYPTION\n'.grey + - data.encryption.map(function(connection){ - return connection["total"].toString().padStart(6," ").blue + " " + connection["type"] - }).join("\n") + - - '\n\nSOURCES\n'.grey + - data.source.filter(function(s){ - if (s.name.indexOf(data.domain) === -1) return s - }).map(function(hit){ - return hit["total"].toString().padStart(6," ").blue + " " + hit["name"].cyan - }).join("\n") + - - '\n\nSTATUS CODES\n'.grey + - data.status.map(function(status){ - return status["total"].toString().padStart(6," ").blue + " " + status["code"] - }).join("\n")// + - // '\n\nBROWSERS'.grey + - // data.browser.map(function(browser){ - // return browser["total"].toString().padStart(7," ").blue + " " + browser["name"] - // }).join("\n") + var length = data.success[0]["total"].toString().length + + table.push([]) + + var col + + summaryTable = new Table({ + chars: cleanTable, + style: { + 'padding-left': 3, + 'padding-right': 3 + } + }) + + var summaryCol1 = new Table({ + chars: cleanTable, + style: { + 'compact': true, + 'padding-left': 0, + 'padding-right': 0, + } + }) + + var cleanDelta = function(d){ + if (d === Infinity) return "∞".green + if (d === 0) return "" + + var r = Math.round(d * 100) / 100 + if (d > 5) return ("+" + r + "%").green + if (d > 0) return ("+" + r + "%").green + if (d > 0.9) return ("-" + r + "%").yellow + return ("-" + r + "%").red + } + + var noDays = data.range.length + var connectionsYesterday = data.traffic.connections.breakdown[noDays - 1] + var connectionsAverage = data.traffic.connections.breakdown[noDays - 2] + var connectionsDelta = (connectionsYesterday - connectionsAverage) / connectionsAverage * 100 + + summaryCol1.push([ + { hAlign: "right", content: "Connections:".grey, }, + { hAlign: "right", content: hrn(data.traffic.connections.total).cyan }, + { hAlign: "left", content: cleanDelta(connectionsDelta) } ]) - data.fail.length = 6 - table.push([ - '\nNOT FOUND\n'.grey + - data.fail.map(function(hit){ - return hit["total"].toString().padStart(6," ").blue + " " + hit["path"].red - }).join("\n"), "" + var visitsYesterday = data.traffic.visits.breakdown[noDays - 1] + var visitsAverage = 1000 + var visitsDelta = (visitsYesterday - visitsAverage) / visitsAverage * 100 + + summaryCol1.push([ + { hAlign: "right", content: "Visits:".grey, }, + { hAlign: "right", content: hrn(data.traffic.visits.total).cyan }, + { hAlign: "left", content: cleanDelta(visitsDelta) } ]) - data.redirect.length = 6 - table.push([ - '\nTOP REDIRECTS\n'.grey + - data.redirect.map(function(hit){ - return hit["total"].toString().padStart(6," ").blue + " " + hit["path"].yellow - }).join("\n"), "" + var uniquesYesterday = data.traffic.uniques.breakdown[noDays - 1] + var uniquesAverage = data.traffic.uniques.breakdown[noDays - 2] + var uniquesDelta = uniquesYesterday / uniquesAverage + + summaryCol1.push([ + { hAlign: "right", content: "Uniques:".grey, }, + { hAlign: "right", content: hrn(data.traffic.uniques.total).cyan }, + { hAlign: "left", content: cleanDelta(uniquesDelta) } ]) - //data.source.length = 6 - table.push([ - + //var encryptedPct = data.general.connections.encryption.type + var encryptionTotal = data.encryption.connEn.total + data.encryption.connUn.total + data.encryption.connR2En.total + data.encryption.connR2Un.total + + var httpsPct = data.encryption.connEn.total / (encryptionTotal) * 100 + var httpsPctRounded = Math.round(httpsPct * 100) / 100 + + var httpPct = data.encryption.connUn.total / (encryptionTotal) * 100 + var httpPctRounded = Math.round(httpPct * 100) / 100 + + + + var r2UnPct = data.encryption.connR2Un.total / (encryptionTotal) * 100 + var r2UnPctRounded = Math.round(r2UnPct * 100) / 100 + + + var httpsRedirectPct = data.encryption.connEn.total / (data.encryption.connEn.total + data.encryption.connUn.total) * 100 + + + var summaryCol2 = new Table({ + //head:[{ colSpan:5, content: "", hAlign:"center" }], + chars: cleanTable, + style: { + 'compact': true, + 'padding-left': 0, + 'padding-right': 0, + } + }) + + summaryCol2.push([ + { hAlign: "right", content: "Enctypted:".grey }, + { hAlign: "right", content: (httpsPctRounded + "%").green } + ]) + + if (data.encryption.connR2En.total > 0){ + var r2EnPct = data.encryption.connR2En.total / (encryptionTotal) * 100 + var r2EnPctRounded = Math.round(r2EnPct * 100) / 100 + summaryCol2.push([ + { hAlign: "right", content: "forced:".grey }, + { hAlign: "right", content: (r2EnPctRounded + "%").cyan } + ]) + } + + if (data.encryption.connR2Un.total > 0){ + var r2UnPct = data.encryption.connR2Un.total / (encryptionTotal) * 100 + var r2UnPctRounded = Math.round(r2UnPct * 100) / 100 + summaryCol2.push([ + { hAlign: "right", content: "HTTP forced:".grey }, + { hAlign: "right", content: (r2UnPctRounded + "%").cyan } + ]) + } + + + // if (data.encryption.connEn.total > 0) + // summaryCol2.push("HTTP forced: ".padStart(22, " ").grey + (r2UnPctRounded + "%").red) + + + // CACHE + var cachePct = data.cache.hit.total / (data.cache.hit.total + data.cache.miss.total) * 100 + var cachePctRounded = Math.round(cachePct * 100) / 100 + var cacheMisses = data.cache.miss.total / (data.cache.hit.total + data.cache.miss.total) * 100 + var cacheMissesRounded = Math.round(cacheMisses * 100) / 100 + + var summaryCol3 = new Table({ + //head:[{ colSpan:5, content: "Hi", hAlign:"center" }], + chars: cleanTable, + style: { + 'compact': true, + 'padding-left': 0, + 'padding-right': 0, + } + }) + + var cacheColor = "green" + var cacheColor = "green" + if (cachePctRounded < 99) cacheColor = "cyan" + if (cachePctRounded < 95) cacheColor = "yellow" + if (cachePctRounded < 90) cacheColor = "red" + + summaryCol3.push([ + { hAlign: "right", content: "Cache Hits:".grey }, + { hAlign: "right", content: (cachePctRounded + "%")[cacheColor] } + ]) + + summaryCol3.push([ + { hAlign: "right", content: "Missess:".grey }, + { hAlign: "left", content: data.cache.miss.total.toString()[cacheColor] } + ]) + + // + summaryTable.push([ + { hAlign: "center", content: summaryCol1.toString() }, + { hAlign: "center", content: summaryCol2.toString() }, + { hAlign: "center", content: summaryCol3.toString() } + ]) + + table.push([ + { hAlign: "center", content: summaryTable.toString(), colSpan: 4} + ]) + + + table.push([]) + + var col1 = [] + if (data.success.length > 28) data.success.length = 28 + + col1.push("VISITS".green) + data.success.forEach(function(path, i){ + col1.push(hrn(path["total"]).padStart(6," ").green + " " + path["path"].grey) + }) + + var col2 = [] + + col2.push("NOT FOUND".red) + data.fail.forEach(function(path, i){ + if (i > 7) return + col2.push(hrn(path["total"]).padStart(6," ").red + " " + path["path"].grey) + }) + + col2.push("\nREDIRECTS".yellow) + data.redirect.forEach(function(path, i){ + if (i > 7) return + col2.push(hrn(path["total"]).padStart(6," ").yellow + " " + path["path"].grey) + }) + + col2.push("\nSOURCES".cyan) + data.source.forEach(function(s, i){ + if (i > 7) return + col2.push(hrn(s["total"]).padStart(6," ").cyan + " " + url.parse(s["name"]).host.grey) + }) + + table.push([ + { + colSpan: 2, + colWidths: 40, + content: col1.join("\n") + }, + { + colSpan: 2, + colWidths: 40, + content: col2.join("\n") + } ]) return table diff --git a/package-lock.json b/package-lock.json index 179939e..c79ff87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -621,6 +621,11 @@ "sshpk": "^1.7.0" } }, + "human-readable-numbers": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/human-readable-numbers/-/human-readable-numbers-0.9.5.tgz", + "integrity": "sha512-VC1uYLm7FR+4UkLaQdXPLodz7xTVLBte3X6iMCYK/uPJywoHyEZfR40+kCN4YqYd+FNCPJAJNYv2CSMvAprgsQ==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", diff --git a/package.json b/package.json index 8b706ba..5e75cd1 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "babar": "^0.2.0", "cli-table3": "^0.5.1", "colors": "^1.4.0", + "human-readable-numbers": "^0.9.5", "inquirer": "^6.2.2", "is-domain": "0.0.1", "minimist": "1.2.3", From 917be3525b6790e3732304f7ae3f45ddd0ca9fad Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 27 Mar 2021 14:02:31 -0700 Subject: [PATCH 161/214] updates analytics table --- lib/util/tables.js | 63 ++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 47d9cd3..1e4393d 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -227,7 +227,7 @@ var analyticsAndUsageHeaderTitle = function(data){ exports.usage = function(data){ var title = analyticsAndUsageHeaderTitle(data) - + //console.log(Object.keys(data.load).length) // CHART //console.log(data) @@ -241,7 +241,7 @@ exports.usage = function(data){ var chartData = [] data.range.forEach(function(date, i){ var day = parseInt(date.split("-")[2]) - var hit = data.general["bandwidth"]["breakdown"][i] / 1048576 / 1024 + var hit = data.bandwidth.all["breakdown"][i] / 1048576 / 1024 chartData.push([i + 1, hit]) }) @@ -259,22 +259,7 @@ exports.usage = function(data){ var table = new Table({ colWidths: [50, 50], head: [], - chars: { - 'top': '' , - 'top-mid': '' , - 'top-left': '' , - 'top-right': '', - 'bottom': '' , - 'bottom-mid': '' , - 'bottom-left': '' , - 'bottom-right': '', - 'left': '' , - 'left-mid': '' , - 'mid': '' , - 'mid-mid': '', - 'right': ' ' , - 'right-mid': '', - 'middle': ' ' }, + chars: cleanTable, style: { 'padding-left': 0, 'padding-right': 0 @@ -298,6 +283,10 @@ exports.usage = function(data){ { content: ("USAGE".underline.brightMagenta + (" (" + title + ")").grey), colSpan: 2 }, ]) + table.push([ + { content: ("calculated ".grey + data.normalizedAtInWords.brightYellow).italic, colSpan: 2 }, + ]) + table.push([]) var groups = chunkArrayInGroups(data.load.reverse(), Math.round(data.load.length / 2)) @@ -310,7 +299,7 @@ exports.usage = function(data){ table.push([]) - var totalInGB = data.general.bandwidth.total / 1048576 / 1024 + var totalInGB = data.bandwidth.all.total / 1048576 / 1024 // table.push([ // { content: (Math.round(totalInGB * 1000) / 1000).toString().padEnd(5, "0") + " GB".grey + " HEADERS".grey }, "" @@ -377,8 +366,28 @@ exports.analytics = function(data){ 'padding-right': 0 } }) - table.push([{ colSpan:4, content: ("TRAFFIC".underline.brightMagenta + (" (" + title + ")").grey) + "\n\n" + chart.toString(), hAlign:"left" }]) + table.push([{ + colSpan:4, + hAlign:"left", + content: ("TRAFFIC".underline.brightMagenta + (" (" + title + ")").grey) + "" + }]) + + table.push([ + { + colSpan: 4, + hAlign:"left", + content: ("calculated ".grey + data.normalizedAtInWords.brightYellow).italic + }, + ]) + + table.push([]) + + table.push([{ + colSpan:4, + hAlign:"left", + content: chart.toString() + }]) // Top Routes var topRoutes = [] @@ -415,14 +424,14 @@ exports.analytics = function(data){ }) var cleanDelta = function(d){ - if (d === Infinity) return "∞".green + if (d === Infinity) return "+∞".grey if (d === 0) return "" var r = Math.round(d * 100) / 100 if (d > 5) return ("+" + r + "%").green if (d > 0) return ("+" + r + "%").green - if (d > 0.9) return ("-" + r + "%").yellow - return ("-" + r + "%").red + if (d > 0.8) return (r + "%").yellow + return (r + "%").red } var noDays = data.range.length @@ -432,17 +441,17 @@ exports.analytics = function(data){ summaryCol1.push([ { hAlign: "right", content: "Connections:".grey, }, - { hAlign: "right", content: hrn(data.traffic.connections.total).cyan }, + { hAlign: "right", content: hrn(data.traffic.connections.total).grey }, { hAlign: "left", content: cleanDelta(connectionsDelta) } ]) var visitsYesterday = data.traffic.visits.breakdown[noDays - 1] - var visitsAverage = 1000 + var visitsAverage = data.traffic.visits.breakdown[noDays - 2] var visitsDelta = (visitsYesterday - visitsAverage) / visitsAverage * 100 summaryCol1.push([ { hAlign: "right", content: "Visits:".grey, }, - { hAlign: "right", content: hrn(data.traffic.visits.total).cyan }, + { hAlign: "right", content: hrn(data.traffic.visits.total).grey }, { hAlign: "left", content: cleanDelta(visitsDelta) } ]) @@ -452,7 +461,7 @@ exports.analytics = function(data){ summaryCol1.push([ { hAlign: "right", content: "Uniques:".grey, }, - { hAlign: "right", content: hrn(data.traffic.uniques.total).cyan }, + { hAlign: "right", content: hrn(data.traffic.uniques.total).grey }, { hAlign: "left", content: cleanDelta(uniquesDelta) } ]) From 26c36f51dfa5980ee19029e5abfd49e9afcc517e Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 29 Mar 2021 13:03:34 -0700 Subject: [PATCH 162/214] updates analytics with better number output --- lib/middleware/analytics.js | 7 ++- lib/util/tables.js | 87 +++++++++++++++++++++++++------------ package-lock.json | 5 +++ package.json | 3 +- 4 files changed, 73 insertions(+), 29 deletions(-) diff --git a/lib/middleware/analytics.js b/lib/middleware/analytics.js index e548f4b..71e1954 100644 --- a/lib/middleware/analytics.js +++ b/lib/middleware/analytics.js @@ -20,7 +20,12 @@ module.exports = function(req, next){ //helpers.space() sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ - //console.log(JSON.stringify(response)) + //console.log(JSON.stringify(response.range)) + + response.range.forEach(function(d, i){ + console.log(d, response.traffic.uniques.breakdown[i]) + }) + //console.log(JSON.stringify(response.traffic.uniques)) helpers.displayAnalytics(response) return next() }) diff --git a/lib/util/tables.js b/lib/util/tables.js index 1e4393d..6bc397b 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -3,6 +3,7 @@ var Table = require("cli-table3") var babar = require("babar") var url = require("url") var hrn = require('human-readable-numbers').toHumanString +var xbytes = require('xbytes'); var cleanTable = { 'top': '' , @@ -257,8 +258,8 @@ exports.usage = function(data){ var chart = arr.join("\n") var table = new Table({ - colWidths: [50, 50], - head: [], + //colWidths: [50, 50], + //head: [], chars: cleanTable, style: { 'padding-left': 0, @@ -266,12 +267,12 @@ exports.usage = function(data){ } }) - data.load.map(function(file){ - file.totalInMB = file.total / 1048576 - file.totalInGB = file.totalInMB / 1024 - file.totalInGBRounded = Math.round(file.totalInGB * 1000) / 1000 - return file - }) + // data.load.map(function(file){ + // file.totalInMB = file.total / 1048576 + // file.totalInGB = file.totalInMB / 1024 + // file.totalInGBRounded = Math.round(file.totalInGB * 1000) / 1000 + // return file + // }) if (data.load.length > 0){ @@ -289,31 +290,63 @@ exports.usage = function(data){ table.push([]) - var groups = chunkArrayInGroups(data.load.reverse(), Math.round(data.load.length / 2)) - groups[0].forEach(function(file, i){ - table.push([ - { content: (groups[0][i].totalInGBRounded.toString().padEnd(5, "0").cyan + " GB ".grey + groups[0][i].path.grey) }, - { content: groups[1][i] ? (groups[1][i].totalInGBRounded.toString().padEnd(5, "0").cyan + " GB ".grey + groups[1][i].path.grey) : "" } - ]) - }) - - table.push([]) + // DOUBLE TABLE + + if (data.load.length > 50){ + var groups = chunkArrayInGroups(data.load.reverse(), Math.round(data.load.length / 2)) + + var col1 = new Table({ + chars: cleanTable, + colWidths: [9, 36], + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + groups[0].forEach(function(file, i){ + col1.push([ + { content: xbytes(file.total).cyan, hAlign: "right" }, + { content: file.path.grey } + ]) + }) + + var col2 = new Table({ + chars: cleanTable, + colWidths: [9, 36], + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + groups[1].forEach(function(file, i){ + col2.push([ + { content: xbytes(file.total).cyan, hAlign: "right" }, + { content: file.path.grey } + ]) + }) - var totalInGB = data.bandwidth.all.total / 1048576 / 1024 + table.push([ + { content: col1.toString() }, + { content: col2.toString() }, + ]) + } else { + data.load.forEach(function(file){ + table.push([ + { content: xbytes(file.total).cyan, hAlign: "right" }, + { content: file.path.grey } + ]) + }) + } - // table.push([ - // { content: (Math.round(totalInGB * 1000) / 1000).toString().padEnd(5, "0") + " GB".grey + " HEADERS".grey }, "" - // ]) + - // table.push([ - // { content: (Math.round(totalInGB * 1000) / 1000).toString().padEnd(5, "0") + " GB".grey + " BODY".grey }, "" - // ]) + table.push([]) table.push([ { hAlign: "center", colSpan: 2, - content: (Math.round(totalInGB * 1000) / 1000).toString().padEnd(5, "0").green + " GB".grey + " TOTAL BANDWIDTH".green } + content: (xbytes(data.bandwidth.all.total).yellow + " TOTAL BANDWIDTH".grey) } ]) } else { @@ -338,7 +371,7 @@ exports.analytics = function(data){ var chartData = [] data.range.forEach(function(date, i){ var day = parseInt(date.split("-")[2]) - var hit = data.traffic["visits"]["breakdown"][i] + var hit = data.traffic.uniques["breakdown"][i] chartData.push([i + 1, hit]) }) @@ -592,7 +625,7 @@ exports.analytics = function(data){ col2.push("\nSOURCES".cyan) data.source.forEach(function(s, i){ if (i > 7) return - col2.push(hrn(s["total"]).padStart(6," ").cyan + " " + url.parse(s["name"]).host.grey) + col2.push(hrn(s["total"]).padStart(6," ").cyan + " " + s["name"].grey) }) table.push([ diff --git a/package-lock.json b/package-lock.json index c79ff87..88e2149 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1646,6 +1646,11 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "xbytes": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/xbytes/-/xbytes-1.7.0.tgz", + "integrity": "sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ==" + }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", diff --git a/package.json b/package.json index 5e75cd1..b881feb 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "request": "^2.88.0", "surge-ignore": "0.2.0", "surge-sdk": "0.3.2", - "url-parse-as-address": "1.0.0" + "url-parse-as-address": "1.0.0", + "xbytes": "^1.7.0" }, "devDependencies": { "commander": "2.9.0", From 19611cae6370bfa746032a8f7dc243c77a89b5aa Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 30 Mar 2021 13:39:56 -0700 Subject: [PATCH 163/214] updates help output --- lib/middleware/help.js | 74 ++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 42 deletions(-) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 79974f4..fb3c0f4 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -3,51 +3,41 @@ var helpers = require("../util/helpers") module.exports = function(req, next){ if (req.argv.help || req.argv.h) { helpers - //.log() - //.log(" " + req.configuration.name.bold, "– single command web publishing.".grey, ("(v" + req.pkg.version + ")"). grey) .log() - .log(" Main Usage:".grey) - .log(" "+ req.configuration.name +" publish project to domain") + .log(" " + req.configuration.platform.replace(/^\w/, c => c.toUpperCase()).underline.blue, "- Static Web Publishing".brightYellow, req.pkg.version.grey) .log() - .log(" Project Commands:".grey) - .log(" "+ req.configuration.name +" cutover change to latest revision") - .log(" "+ req.configuration.name +" discard remove revision from system") - .log(" "+ req.configuration.name +" rollfore change to next revision") - .log(" "+ req.configuration.name +" rollback change to previous revision") - .log(" "+ req.configuration.name +" teardown tear down a published project") - .log(" "+ req.configuration.name +" invite invites user to be a contributor") - .log(" "+ req.configuration.name +" revoke revokes contributor rights") - .log(" "+ req.configuration.name +" list list all revisions") - .log(" "+ req.configuration.name +" ssl publish .pem file for SSL support") + .log(" "+ req.configuration.name +" "+"(opt --preview)".grey+" publish with prompts".grey) + .log(" "+ req.configuration.name +" "+"(opt --preview)".grey+" publish without prompts (recommended)".grey) + .log(" "+ req.configuration.name +" encrypt "+"provision SSL cert for project".grey) + .log(" "+ req.configuration.name +" certs "+"view certs for project".grey) + .log(" "+ req.configuration.name +" config "+"view/change project configuration".grey) + .log(" "+ req.configuration.name +" list "+"list all project revisions".grey) + .log(" "+ req.configuration.name +" rollfore "+"change to next revision".grey) + .log(" "+ req.configuration.name +" rollback "+"change to previous revision".grey) + .log(" "+ req.configuration.name +" cutover "+"change to latest revision".grey) + .log(" "+ req.configuration.name +" discard "+"remove revision from system".grey) + .log(" "+ req.configuration.name +" files "+"list all project files".grey) + .log(" "+ req.configuration.name +" audit "+"audit edgenode state".grey) + .log(" "+ req.configuration.name +" bust "+"busts cache on all edgenodes".grey) + .log(" "+ req.configuration.name +" traffic "+"analytics showing project traffic".grey) + .log(" "+ req.configuration.name +" audience "+"analytics showing audience device info".grey) + .log(" "+ req.configuration.name +" usage "+"analytics showing bandwidth usage".grey) + .log(" "+ req.configuration.name +" teardown "+"tear down a published project".grey) + .log(" "+ req.configuration.name +" ssl "+"legacy command for uploding .pem file".grey) + .log(" "+ req.configuration.name +" invite "+"invites user to be a contributor".grey) + .log(" "+ req.configuration.name +" revoke "+"revokes contributor rights".grey) + .log(" "+ req.configuration.name +" dns "+"view DNS records".grey) + .log(" "+ req.configuration.name +" dns add "+"add DNS record".grey) + .log(" "+ req.configuration.name +" dns rem "+"remove DNS record".grey) + .log(" "+ req.configuration.name +" whoami "+"show who you are logged in as".grey) + .log(" "+ req.configuration.name +" login "+"only performs authentication step".grey) + .log(" "+ req.configuration.name +" logout "+"expire local token".grey) + .log(" "+ req.configuration.name +" token "+"create token for automation purposes".grey) + .log(" "+ req.configuration.name +" plan "+"upgrade or downgrade account plan".grey) + .log(" "+ req.configuration.name +" list "+"list all projects".grey) + .log(" "+ req.configuration.name +" --version "+"outputs version".grey) + .log(" "+ req.configuration.name +" --help "+"outputs this help message".grey) .log() - .log(" Account Commands:".grey) - .log(" "+ req.configuration.name +" whoami show who you are logged in as") - .log(" "+ req.configuration.name +" login only performs authentication step") - .log(" "+ req.configuration.name +" logout expire local token") - .log(" "+ req.configuration.name +" token create token for automation purposes") - .log(" "+ req.configuration.name +" plan upgrade or downgrade account plan") - .log(" "+ req.configuration.name +" list list all projects") - .log() - .log(" Options:".grey) - .log(" -s, --preview (when publishing) publishes preview") - .log(" -t, --token pass in token to use for call") - .log(" -V, --version show the version number") - .log(" -h, --help show this help message") - .log() - .log(" Examples:".grey) - .log(" "+ req.configuration.name +" www example.com publishes www directory to example.com") - .log(" "+ req.configuration.name +" . example.com --preview publishes current directory for preview") - .log(" "+ req.configuration.name +" cutover example.com switches latest preview to production") - .log(" "+ req.configuration.name +" . _ publish current dir to random subdomain") - // .log() - // .log(" Guides:".grey) - // .log(" Getting started " + "surge.sh/help/getting-started-with-surge".underline.grey) - // .log(" Custom domains " + "surge.sh/help/adding-a-custom-domain".underline.grey) - // .log(" Additional help " + "surge.sh/help".underline.grey) - .log() - .log(" When in doubt, run ".grey + req.configuration.name.green.underline + " from within your project directory.".grey) - .log() - } else { next() } From 370329b41e6bf08822303114bed3219b806eb5a9 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 2 Apr 2021 05:46:34 -0700 Subject: [PATCH 164/214] analytics mostly functioning - and its amazing. --- lib/middleware/analytics.js | 6 -- lib/middleware/audience.js | 28 ++++++ lib/middleware/audit.js | 24 ++---- lib/middleware/files.js | 26 ++++++ lib/middleware/help.js | 1 + lib/middleware/nuke.js | 38 +++++++++ lib/middleware/traffic.js | 28 ++++++ lib/middleware/usage.js | 14 +-- lib/surge.js | 90 ++++++++++++++++++- lib/util/helpers.js | 33 +++++++ lib/util/tables.js | 166 ++++++++++++++++++++++++++++++++++++ 11 files changed, 420 insertions(+), 34 deletions(-) create mode 100644 lib/middleware/audience.js create mode 100644 lib/middleware/files.js create mode 100644 lib/middleware/nuke.js create mode 100644 lib/middleware/traffic.js diff --git a/lib/middleware/analytics.js b/lib/middleware/analytics.js index 71e1954..f0b88e8 100644 --- a/lib/middleware/analytics.js +++ b/lib/middleware/analytics.js @@ -20,12 +20,6 @@ module.exports = function(req, next){ //helpers.space() sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ - //console.log(JSON.stringify(response.range)) - - response.range.forEach(function(d, i){ - console.log(d, response.traffic.uniques.breakdown[i]) - }) - //console.log(JSON.stringify(response.traffic.uniques)) helpers.displayAnalytics(response) return next() }) diff --git a/lib/middleware/audience.js b/lib/middleware/audience.js new file mode 100644 index 0000000..1374cac --- /dev/null +++ b/lib/middleware/audience.js @@ -0,0 +1,28 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + helpers.space() + sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (!response){ + if (!domain){ + helpers.trunc("domain required".grey) + return next() + } + } else { + helpers.displayAudience(response) + return next() + } + }) + +} \ No newline at end of file diff --git a/lib/middleware/audit.js b/lib/middleware/audit.js index f420282..50346f9 100644 --- a/lib/middleware/audit.js +++ b/lib/middleware/audit.js @@ -13,27 +13,15 @@ module.exports = function(req, next){ var rev = req.argv["_"][1] || null sdk.audit(domain, { user: "token", pass: req.creds.token }, function(error, response){ + helpers.space() if (!response){ - helpers.trunc("coming soon".grey) + if (!domain){ + helpers.trunc("domain required".grey) + } return next() } else { - var edgenodes = Object.keys(response) - - edgenodes.forEach(function(edgenode){ - var en = edgenode.split(".")[0] - var files = Object.keys(response[edgenode]["manifest"]) - files.forEach(function(file){ - console.log( - en.green - + " " + - response[edgenode]["rev"].toString().yellow - + " " + - response[edgenode]["manifest"][file]["md5sum"].grey - + " " + - domain.cyan + file.blue - ) - }) - }) + helpers.displayAudit(response) + return next() } }) diff --git a/lib/middleware/files.js b/lib/middleware/files.js new file mode 100644 index 0000000..12c3ef7 --- /dev/null +++ b/lib/middleware/files.js @@ -0,0 +1,26 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + helpers.space() + if (!domain){ + helpers.trunc("domain required".grey) + return next() + } else { + sdk.manifest(domain, { user: "token", pass: req.creds.token }, function(error, response){ + helpers.displayAnalytics(response) + return next() + }) + } + +} \ No newline at end of file diff --git a/lib/middleware/help.js b/lib/middleware/help.js index fb3c0f4..440c9da 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -34,6 +34,7 @@ module.exports = function(req, next){ .log(" "+ req.configuration.name +" logout "+"expire local token".grey) .log(" "+ req.configuration.name +" token "+"create token for automation purposes".grey) .log(" "+ req.configuration.name +" plan "+"upgrade or downgrade account plan".grey) + .log(" "+ req.configuration.name +" nuke "+"permanently removes account".grey) .log(" "+ req.configuration.name +" list "+"list all projects".grey) .log(" "+ req.configuration.name +" --version "+"outputs version".grey) .log(" "+ req.configuration.name +" --help "+"outputs this help message".grey) diff --git a/lib/middleware/nuke.js b/lib/middleware/nuke.js new file mode 100644 index 0000000..652b90b --- /dev/null +++ b/lib/middleware/nuke.js @@ -0,0 +1,38 @@ + +var helpers = require("../util/helpers") +var localCreds = require("../util/creds.js") +var surgeSDK = require("surge-sdk") +var path = require("path") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + helpers.space() + sdk.nuke({ user: "token", pass: req.creds.token }, function(error, response){ + + if (error){ + console.log("error", error) + } + + var creds = localCreds(req.endpoint).set(null) + + if (req.creds) { + var filePath = path.join(process.env[(/^win/.test(process.platform)) ? 'USERPROFILE' : 'HOME'], ".netrc") + helpers.trunc(("Success").green + (" - " + response.msg).grey) + } + + + return next() + + + + }) + +} \ No newline at end of file diff --git a/lib/middleware/traffic.js b/lib/middleware/traffic.js new file mode 100644 index 0000000..bbee873 --- /dev/null +++ b/lib/middleware/traffic.js @@ -0,0 +1,28 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + helpers.space() + sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (!response){ + if (!domain){ + helpers.trunc("domain required".grey) + return next() + } + } else { + helpers.displayAnalytics(response) + return next() + } + }) + +} \ No newline at end of file diff --git a/lib/middleware/usage.js b/lib/middleware/usage.js index 02e1441..b1ea463 100644 --- a/lib/middleware/usage.js +++ b/lib/middleware/usage.js @@ -12,14 +12,14 @@ module.exports = function(req, next){ var domain = req.argv["_"][0] var rev = req.argv["_"][1] || null - // var data = {"normalizedAt":"2021-03-20T08:22:26.170Z","version":"0.6.4","domain":"surge.sh","range":["2021-03-07","2021-03-08","2021-03-09","2021-03-10","2021-03-11","2021-03-12","2021-03-13","2021-03-14","2021-03-15","2021-03-16","2021-03-17","2021-03-18","2021-03-19","2021-03-20"],"general":{"visits":{"total":12980,"breakdown":[0,0,0,0,0,0,0,0,0,0,3877,4295,3985,823]},"connections":{"total":126404,"breakdown":[0,0,0,0,0,0,0,0,0,0,36174,41684,41486,7060]},"bandwidth":{"total":3404488989,"breakdown":[0,0,0,0,0,0,0,0,0,0,988898062,1139372814,1100231406,175986707]}},"status":[{"code":"200","total":84259,"breakdown":[0,0,0,0,0,0,0,0,0,0,24288,28423,27261,4287]},{"code":"304","total":28197,"breakdown":[0,0,0,0,0,0,0,0,0,0,7981,8835,9747,1634]},{"code":"404","total":9005,"breakdown":[0,0,0,0,0,0,0,0,0,0,2627,2743,2909,726]},{"code":"301","total":4638,"breakdown":[0,0,0,0,0,0,0,0,0,0,1163,1577,1498,400]},{"code":"206","total":305,"breakdown":[0,0,0,0,0,0,0,0,0,0,115,106,71,13]}],"encryption":[{"type":"Unencrypted","total":64820,"breakdown":[0,0,0,0,0,0,0,0,0,0,35115,29705,0,0]},{"type":"Encrypted","total":57332,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,10523,40119,6690]},{"type":"Forced HTTPS","total":4252,"breakdown":[0,0,0,0,0,0,0,0,0,0,1059,1456,1367,370]},{"type":"Forced HTTP","total":0,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,0]}],"source":[{"name":"https://surge.sh/","total":80981,"breakdown":[0,0,0,0,0,0,0,0,0,0,22900,27220,26925,3936]},{"name":"https://surge.sh/help/getting-started-with-surge","total":6929,"breakdown":[0,0,0,0,0,0,0,0,0,0,2218,2221,2179,311]},{"name":"https://surge.sh/pricing","total":2907,"breakdown":[0,0,0,0,0,0,0,0,0,0,834,932,891,250]},{"name":"https://surge.sh/help/adding-a-custom-domain","total":2387,"breakdown":[0,0,0,0,0,0,0,0,0,0,634,797,816,140]},{"name":"https://surge.sh/help/","total":1577,"breakdown":[0,0,0,0,0,0,0,0,0,0,467,485,528,97]},{"name":"https://www.google.com/","total":1534,"breakdown":[0,0,0,0,0,0,0,0,0,0,459,512,475,88]},{"name":"https://surge.sh/tour","total":1376,"breakdown":[0,0,0,0,0,0,0,0,0,0,399,407,462,108]},{"name":"https://surge.sh/help/securing-your-custom-domain-with-ssl","total":755,"breakdown":[0,0,0,0,0,0,0,0,0,0,101,294,292,68]},{"name":"https://tmm-slope.surge.sh/","total":729,"breakdown":[0,0,0,0,0,0,0,0,0,0,227,263,239,0]},{"name":"https://surge.sh/help/remembering-a-domain","total":574,"breakdown":[0,0,0,0,0,0,0,0,0,0,149,187,218,20]},{"name":"https://surge.sh/help/tearing-down-a-project","total":397,"breakdown":[0,0,0,0,0,0,0,0,0,0,105,109,183,0]},{"name":"https://surge.surge.sh/","total":383,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,117,248,18]},{"name":"https://tam-run3.surge.sh/","total":368,"breakdown":[0,0,0,0,0,0,0,0,0,0,115,124,129,0]},{"name":"https://surge.sh/help/using-https-by-default","total":350,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,154,151,45]},{"name":"http://surge.sh/","total":259,"breakdown":[0,0,0,0,0,0,0,0,0,0,160,99,0,0]},{"name":"https://surge.sh/help/adding-a-200-page-for-client-side-routing","total":135,"breakdown":[0,0,0,0,0,0,0,0,0,0,135,0,0,0]},{"name":"https://surge.sh/help/resetting-your-password","total":132,"breakdown":[0,0,0,0,0,0,0,0,0,0,132,0,0,0]},{"name":"https://surge.sh/help/copying-extra-files-into-the-directory-you-publish","total":122,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,122,0,0]},{"name":"http://www.surge.sh/","total":121,"breakdown":[0,0,0,0,0,0,0,0,0,0,121,0,0,0]},{"name":"https://surge.sh/help/using-incremental-publishing","total":104,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,104,0]},{"name":"https://surge.sh/help/listing-all-your-projects","total":97,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,97,0]},{"name":"https://surge.sh/help/upgrading-to-surge-plus","total":42,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,42]},{"name":"https://surge.sh/plus/","total":27,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,27]},{"name":"https://surge.sh/help/deploying-continuously-using-git-hooks","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,20]},{"name":"https://surge.sh/terms","total":14,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,14]},{"name":"https://surge.sh/help/chat","total":14,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,14]}],"device":[],"os":[],"browser":[],"success":[{"path":"/","total":8386,"breakdown":[0,0,0,0,0,0,0,0,0,0,2553,2807,2514,512]},{"path":"/help/getting-started-with-surge","total":1096,"breakdown":[0,0,0,0,0,0,0,0,0,0,381,343,315,57]},{"path":"/pricing","total":780,"breakdown":[0,0,0,0,0,0,0,0,0,0,224,263,230,63]},{"path":"/help/","total":414,"breakdown":[0,0,0,0,0,0,0,0,0,0,117,126,140,31]},{"path":"/help/adding-a-custom-domain","total":371,"breakdown":[0,0,0,0,0,0,0,0,0,0,98,127,123,23]},{"path":"/tour","total":223,"breakdown":[0,0,0,0,0,0,0,0,0,0,60,65,77,21]},{"path":"/help/remembering-a-domain","total":117,"breakdown":[0,0,0,0,0,0,0,0,0,0,34,36,47,0]},{"path":"/help/using-https-by-default","total":107,"breakdown":[0,0,0,0,0,0,0,0,0,0,26,36,32,13]},{"path":"/help/tearing-down-a-project","total":96,"breakdown":[0,0,0,0,0,0,0,0,0,0,23,33,40,0]},{"path":"/help/adding-a-200-page-for-client-side-routing","total":90,"breakdown":[0,0,0,0,0,0,0,0,0,0,23,27,33,7]},{"path":"/help/copying-extra-files-into-the-directory-you-publish","total":74,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,32,24,0]},{"path":"/help/securing-your-custom-domain-with-ssl","total":72,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,30,35,7]},{"path":"/help/adding-a-custom-404-not-found-page","total":66,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,21,22,6]},{"path":"/help/upgrading-to-surge-plus","total":42,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,0,20,5]},{"path":"/help/enabling-cross-origin-resource-sharing","total":33,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,27,0,6]},{"path":"/terms","total":29,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,22,0,7]},{"path":"/help/deploying-continuously-using-git-hooks","total":28,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,21,7]},{"path":"/plus/","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,20,0]},{"path":"/help/listing-all-your-projects","total":20,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,20,0,0]},{"path":"/help/resetting-your-password","total":19,"breakdown":[0,0,0,0,0,0,0,0,0,0,19,0,0,0]},{"path":"/help/chat","total":19,"breakdown":[0,0,0,0,0,0,0,0,0,0,19,0,0,0]},{"path":"/help/why-is-surge-free","total":15,"breakdown":[0,0,0,0,0,0,0,0,0,0,15,0,0,0]},{"path":"/privacy","total":7,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,7]},{"path":"/help/deploying-a-jekyll-project","total":6,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,6]}],"fail":[{"path":"/favicon.ico","total":4984,"breakdown":[0,0,0,0,0,0,0,0,0,0,1554,1590,1494,346]},{"path":"/robots.txt","total":848,"breakdown":[0,0,0,0,0,0,0,0,0,0,199,199,352,98]},{"path":"/app-ads.txt","total":837,"breakdown":[0,0,0,0,0,0,0,0,0,0,223,197,328,89]},{"path":"/apple-touch-icon.png","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,89,56,69,16]},{"path":"/apple-touch-icon-precomposed.png","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,89,55,70,16]},{"path":"/ads.txt","total":158,"breakdown":[0,0,0,0,0,0,0,0,0,0,42,48,51,17]},{"path":"/.well-known/assetlinks.json","total":131,"breakdown":[0,0,0,0,0,0,0,0,0,0,27,31,52,21]},{"path":"/laybuy.surge.sh/styles.css","total":84,"breakdown":[0,0,0,0,0,0,0,0,0,0,26,31,22,5]},{"path":"/laybuy.surge.sh/cursor.svg","total":74,"breakdown":[0,0,0,0,0,0,0,0,0,0,22,33,19,0]},{"path":"/bluelaba.surge.sh/static/media/logo-no-bg.3de290ee.svg","total":70,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,25,20,0]},{"path":"/apple-touch-icon-120x120-precomposed.png","total":67,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,19,23,0]},{"path":"/apple-touch-icon-120x120.png","total":66,"breakdown":[0,0,0,0,0,0,0,0,0,0,25,19,22,0]},{"path":"/laybuy.surge.sh/calendar.svg","total":65,"breakdown":[0,0,0,0,0,0,0,0,0,0,16,29,15,5]},{"path":"/laybuy.surge.sh/laybuy-badge.svg","total":50,"breakdown":[0,0,0,0,0,0,0,0,0,0,17,27,0,6]},{"path":"/sellers.json","total":33,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,29,4]},{"path":"/laybuy.surge.sh/smiling-face.svg","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,25,0,5]},{"path":"/.well-known/pki-validation/ca3-eea3ad4bfff14d1fb386f6fd02f5693a.txt","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,23,7]},{"path":"/.well-known/pki-validation/ca3-dfd32aaf9fed492b83ca9e55634ed5c9.txt","total":30,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,23,7]},{"path":"/apple-touch-icon-152x152-precomposed.png","total":25,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,0,0,7]},{"path":"/apple-touch-icon-152x152.png","total":24,"breakdown":[0,0,0,0,0,0,0,0,0,0,18,0,0,6]},{"path":"/csshake.surge.sh/csshake.min.css","total":21,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,21,0,0]}],"redirect":[{"path":"/css/index.css","total":2778,"breakdown":[0,0,0,0,0,0,0,0,0,0,1381,1397,0,0]},{"path":"/images/logos/svg/surge-logo.svg","total":2730,"breakdown":[0,0,0,0,0,0,0,0,0,0,1372,1358,0,0]},{"path":"/js/cache.js","total":2713,"breakdown":[0,0,0,0,0,0,0,0,0,0,1361,1352,0,0]},{"path":"/","total":1877,"breakdown":[0,0,0,0,0,0,0,0,0,0,899,978,0,0]},{"path":"/images/tour/tour-landing-example.png","total":717,"breakdown":[0,0,0,0,0,0,0,0,0,0,358,359,0,0]},{"path":"/images/surge-companion-github.png","total":619,"breakdown":[0,0,0,0,0,0,0,0,0,0,298,321,0,0]},{"path":"/images/surge-companion-cli.png","total":592,"breakdown":[0,0,0,0,0,0,0,0,0,0,286,306,0,0]},{"path":"/images/surge-companion-grunt.png","total":591,"breakdown":[0,0,0,0,0,0,0,0,0,0,286,305,0,0]},{"path":"/images/surge-companion-gulp.png","total":586,"breakdown":[0,0,0,0,0,0,0,0,0,0,283,303,0,0]},{"path":"/images/surge-companion-npm.png","total":585,"breakdown":[0,0,0,0,0,0,0,0,0,0,287,298,0,0]},{"path":"/images/surge-companion-jekyll.png","total":568,"breakdown":[0,0,0,0,0,0,0,0,0,0,277,291,0,0]},{"path":"/images/surge-companion-node.png","total":568,"breakdown":[0,0,0,0,0,0,0,0,0,0,278,290,0,0]},{"path":"/images/surge-companion-travis-ci.png","total":534,"breakdown":[0,0,0,0,0,0,0,0,0,0,258,276,0,0]},{"path":"/images/help/adding-collaborators.gif","total":420,"breakdown":[0,0,0,0,0,0,0,0,0,0,211,209,0,0]},{"path":"/help/getting-started-with-surge","total":230,"breakdown":[0,0,0,0,0,0,0,0,0,0,127,103,0,0]},{"path":"301 /help","total":147,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,120,27]},{"path":"/images/help/getting-started-with-surge.gif","total":113,"breakdown":[0,0,0,0,0,0,0,0,0,0,113,0,0,0]},{"path":"/help","total":108,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,108,0,0]},{"path":"301 /plus","total":13,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,11,2]},{"path":"301 /stickers","total":1,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,1]}],"load":[{"path":"/js/cache.js","total":662398048,"breakdown":[0,0,0,0,0,0,0,0,0,0,189209522,223910746,216992464,32285316]},{"path":"/images/help/getting-started-with-surge.gif","total":599524223,"breakdown":[0,0,0,0,0,0,0,0,0,0,188847740,191922892,183551909,35201682]},{"path":"/images/tour/tour-landing-example.png","total":586248863,"breakdown":[0,0,0,0,0,0,0,0,0,0,168404313,199439873,190615584,27789093]},{"path":"/images/surge-companion-travis-ci.png","total":403651187,"breakdown":[0,0,0,0,0,0,0,0,0,0,116137028,136635927,131783528,19094704]},{"path":"/css/index.css","total":371018664,"breakdown":[0,0,0,0,0,0,0,0,0,0,104976072,125459208,122422464,18160920]},{"path":"/index.html","total":162912309,"breakdown":[0,0,0,0,0,0,0,0,0,0,49570458,54556110,50019984,8765757]},{"path":"/images/help/adding-collaborators.gif","total":101566811,"breakdown":[0,0,0,0,0,0,0,0,0,0,31066942,32639837,32344299,5515733]},{"path":"/images/surge-companion-grunt.png","total":69371565,"breakdown":[0,0,0,0,0,0,0,0,0,0,19933916,23495374,22688281,3253994]},{"path":"/images/logos/svg/surge-logo.svg","total":40754960,"breakdown":[0,0,0,0,0,0,0,0,0,0,11548336,13984416,13194336,2027872]},{"path":"/404.html","total":36478615,"breakdown":[0,0,0,0,0,0,0,0,0,0,9686580,11339085,12433520,3019430]},{"path":"/images/surge-companion-jekyll.png","total":36123912,"breakdown":[0,0,0,0,0,0,0,0,0,0,10414404,12272436,11760804,1676268]},{"path":"/images/surge-companion-github.png","total":33848328,"breakdown":[0,0,0,0,0,0,0,0,0,0,9771876,11453664,11009772,1613016]},{"path":"/images/surge-companion-gulp.png","total":30697624,"breakdown":[0,0,0,0,0,0,0,0,0,0,8847400,10371436,10028956,1449832]},{"path":"/images/plus/plus-ssl-example.png","total":30392262,"breakdown":[0,0,0,0,0,0,0,0,0,0,8197404,10440090,10053420,1701348]},{"path":"/images/surge-companion-cli.png","total":22565600,"breakdown":[0,0,0,0,0,0,0,0,0,0,6512870,7641150,7342240,1069340]},{"path":"/images/surge-companion-node.png","total":10891968,"breakdown":[0,0,0,0,0,0,0,0,0,0,4990656,5901312,0,0]},{"path":"/images/help/adding-a-custom-domain-2.png","total":5701400,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,5701400,0]},{"path":"/images/help/adding-a-custom-domain.png","total":941137,"breakdown":[0,0,0,0,0,0,0,0,0,0,0,0,0,941137]}]} - // helpers.displayUsage(data) - // helpers.displayAnalytics(data) - // return next() - sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ - helpers.displayUsage(response) - return next() + if (!response){ + if (!domain) helpers.trunc("domain required".grey) + return next() + } else { + helpers.displayUsage(response) + return next() + } }) } \ No newline at end of file diff --git a/lib/surge.js b/lib/surge.js index 9ac9b1a..901a5a0 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -56,6 +56,8 @@ var rollfore = require("./middleware/rollfore") var cutover = require("./middleware/cutover") var bust = require("./middleware/bust") var analytics = require("./middleware/analytics") +var traffic = require("./middleware/traffic") +var audience = require("./middleware/audience") var usage = require("./middleware/usage") var audit = require("./middleware/audit") var discard = require("./middleware/discard") @@ -65,6 +67,8 @@ var encrypt = require("./middleware/encrypt") var certs = require("./middleware/certs") var dns = require("./middleware/dns") var config = require("./middleware/config") +var files = require("./middleware/files") +var nuke = require("./middleware/nuke") @@ -161,10 +165,14 @@ module.exports = function(configuration){ "dns", "zone", "certs", + "files", + "audit", "bust", "analytics", "usage", - "audit" + "traffic", + "audience", + "nuke", ] if (commands.indexOf(cmd) !== -1) { @@ -431,6 +439,44 @@ module.exports = function(configuration){ } } + surge.traffic = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + traffic, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + + surge.audience = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + audience, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + surge.usage = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub @@ -450,6 +496,25 @@ module.exports = function(configuration){ } } + surge.files = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + files, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + surge.audit = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub @@ -533,8 +598,8 @@ module.exports = function(configuration){ var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ - whitelist, endpoint, pkg, help, version, - preAuth, creds, auth, postAuth, + whitelist, endpoint, pkg, help, version, space, + preAuth, creds, welcome, auth, postAuth, shorthand, discovery.setDomainFromArgs, plans, plan, exitifcurrentplan, payment, subscribe, @@ -570,6 +635,25 @@ module.exports = function(configuration){ } } + surge.nuke = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + nuke, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + surge.ssl = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 1bd0f5a..d453806 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -170,6 +170,9 @@ var fetchAccount = exports.fetchAccount = function(endpoint){ trunc("Error".red + " - Deployment endpoint temporarily unreachable".grey) space() process.exit(1) + } else if (r.statusCode == 404){ + console.log("here") + return callback(null) }else{ return callback(JSON.parse(obj)) } @@ -497,6 +500,36 @@ exports.payment = function(req, stripe_pk, existing){ } +exports.displayAudience = function(data){ + var table = tables.audience(data) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + +exports.displayAudit = function(data){ + var table = tables.audit(data) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + +exports.displayGuide = function(data){ + var table = tables.guide(data) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + exports.displayUsage = function(data){ var table = tables.usage(data) var rows = table.toString().split("\n") diff --git a/lib/util/tables.js b/lib/util/tables.js index 6bc397b..3ee9017 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -102,6 +102,172 @@ exports.rollback = function(response){ return rollbackTable } + +exports.audience = function(data){ + var title = analyticsAndUsageHeaderTitle(data) + + // CHART + + var chartData = [] + data.range.forEach(function(date, i){ + var day = parseInt(date.split("-")[2]) + var hit = data.traffic.uniques["breakdown"][i] + chartData.push([i + 1, hit]) + }) + + var chart = babar(chartData, { + //caption: title, + color: 'green', + height: 8, + width: 100 + }) + + var arr = chart.split("\n") + arr.pop() + var chart = arr.join("\n") + + + // TABLE + + var table = new Table({ + //head: [title + (" (Last "+ data.range.length + " days)").grey + (" calculated 7min ago\n").italic.yellow], + //head: ["One", "two", "three", "four"], + colWidths: [24, 24, 24, 24], + chars: cleanTable, + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + + table.push([{ + colSpan:4, + hAlign:"left", + content: ("AUDIENCE".underline.brightMagenta + (" (" + title + ")").grey) + "" + }]) + + table.push([ + { + colSpan: 4, + hAlign:"left", + content: ("calculated ".grey + data.normalizedAtInWords.brightYellow).italic + }, + ]) + + table.push([]) + + var col1 = new Table({ + chars: cleanTable, + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + + + col1.push([ + { content: "BROWSER".grey } + ]) + + data.browser.forEach(function(device){ + col1.push([ + { content: hrn(device.total).cyan, hAlign:"right" }, + { content: device.name.grey } + ]) + }) + + var col2 = new Table({ + chars: cleanTable, + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + + col2.push([ + { content: "OS".grey } + ]) + + data.os.forEach(function(device){ + col2.push([ + { content: hrn(device.total).cyan, hAlign:"right" }, + { content: device.name.grey } + ]) + }) + + col2.push([]) + + col2.push([ + { content: "DEVICES".grey } + ]) + + data.device.forEach(function(device){ + col2.push([ + { content: hrn(device.total).cyan, hAlign:"right" }, + { content: device.name.grey } + ]) + }) + + + + table.push([ + { + colSpan: 2, + hAlign:"left", + content: col1.toString() + }, + { + colSpan: 2, + hAlign:"left", + content: col2.toString() + }, + ]) + + return table +} + + +exports.audit = function(data){ + var table = new Table({ + chars: cleanTable, + }) + var edgenodes = Object.keys(data) + edgenodes.forEach(function(edgenode){ + var en = edgenode.split(".")[0] + table.push([ + { content: en }, + { content: data[edgenode]["rev"].toString().green }, + { content: (data[edgenode]["publicFileCount"] + " files").yellow }, + { content: xbytes(data[edgenode]["publicTotalSize"]).cyan } + ]) + }) + return table +} + +exports.guide = function(guide){ + var table = new Table({ + chars: cleanTable, + //colWidths: [9, 32, 50], + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + + var files = Object.keys(guide.manifest) + + files.forEach(function(file){ + table.push([ + { content: xbytes(guide.manifest[file]["size"]).cyan, hAlign: "right" }, + //{ content: manifest[file]["md5sum"].grey }, + { content: guide.domain.green + file.grey, } + + ]) + }) + + return table +} + exports.instances = function(servers){ var ns = servers.filter(i => i.type === "NS") if (ns && ns.length > 0){ From bc18a42de06a2cbf112536313f23d8e761aa57ae Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 2 Apr 2021 13:42:18 -0700 Subject: [PATCH 165/214] bump to 0.23.0-rc.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b881feb..faff74d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.3", + "version": "0.23.0-rc.4", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", From 567f0ae4759f32f30693b6b823cfa5dda0fa96bc Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 9 Apr 2021 08:53:54 -0700 Subject: [PATCH 166/214] fixes tables for analytics --- lib/util/tables.js | 340 ++++++++++++++++++++------------------------- 1 file changed, 148 insertions(+), 192 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 3ee9017..4ba249a 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -23,6 +23,60 @@ var cleanTable = { 'middle': ' ' } +var calculateDays = function(data){ + var todayIndex = data.range.length -1 + var yesterdayIndex = data.range.length -2 + var dayBeforeIndex = data.range.length -3 + var todayDate = data.range[todayIndex] + var yesterdayDate = data.range[yesterdayIndex] + var dayBeforeDate = data.range[dayBeforeIndex] + + // default to yesterday + var focusDayIndex = yesterdayIndex + var focusDayDate = yesterdayDate + var focusDayWord = "yesterday" + + // focus on today if more traffic than yesterday + if (data.traffic.connections.s[todayIndex] > data.traffic.connections.s[yesterdayIndex]){ + var focusDayIndex = todayIndex + var focusDayWord = "today" + } + + return { + todayIndex : todayIndex, + todayDate : todayDate, + yesterdayIndex : yesterdayIndex, + yesterdayDate : yesterdayDate, + dayBeforeIndex : dayBeforeIndex, + dayBeforeDate : dayBeforeDate, + focusDayIndex : focusDayIndex, + focusDayDate : data.range[focusDayIndex], + focusDayWord : focusDayWord + } +} + +var calculateTitle = function(data, scope){ + var first = data.range[0] + var last = data.range[data.range.length -1] + var startDate = new Date(first) + var endDate = new Date(last) + + var title = + startDate.toLocaleDateString("en", { month: "long" }) + + " " + + first.split("-")[2] + + " - " + + endDate.toLocaleDateString("en", { month: "long" }) + + " " + + last.split("-")[2] + + return (scope.toUpperCase().underline.brightMagenta + (" (" + title + ")").grey) + "" +} + +var calculateSubTitle = function(data){ + return ("calculated ".grey + data.normalizedAtInWords.brightYellow).italic +} + var chunkArrayInGroups = function(arr, size) { var result = []; for (var i=0; i 0){ - - // var header = "Bandwidth by File (ascending order)\n".grey + - var header = "(file list may not represent all transfers)".italic.grey + if (data.load[days.focusDayDate].length > 0){ table.push([ - { content: ("USAGE".underline.brightMagenta + (" (" + title + ")").grey), colSpan: 2 }, + { content: title, colSpan: 3 }, ]) table.push([ - { content: ("calculated ".grey + data.normalizedAtInWords.brightYellow).italic, colSpan: 2 }, + { content: subtitle, colSpan: 3 }, ]) table.push([]) - // DOUBLE TABLE - - if (data.load.length > 50){ - var groups = chunkArrayInGroups(data.load.reverse(), Math.round(data.load.length / 2)) - - var col1 = new Table({ - chars: cleanTable, - colWidths: [9, 36], - style: { - 'padding-left': 0, - 'padding-right': 0 - } - }) - groups[0].forEach(function(file, i){ - col1.push([ - { content: xbytes(file.total).cyan, hAlign: "right" }, - { content: file.path.grey } - ]) - }) - - var col2 = new Table({ - chars: cleanTable, - colWidths: [9, 36], - style: { - 'padding-left': 0, - 'padding-right': 0 - } - }) - groups[1].forEach(function(file, i){ - col2.push([ - { content: xbytes(file.total).cyan, hAlign: "right" }, - { content: file.path.grey } - ]) - }) + table.push([ + { content: days.focusDayWord.toUpperCase().grey, hAlign: "right" }, + { content: "MONTHLY".grey, hAlign: "right" }, + { content: "FILENAME".grey } + ]) - table.push([ - { content: col1.toString() }, - { content: col2.toString() }, - ]) - } else { - data.load.forEach(function(file){ - table.push([ - { content: xbytes(file.total).cyan, hAlign: "right" }, - { content: file.path.grey } - ]) - }) - } - + data.load[days.focusDayDate].forEach(function(path){ + table.push([ + { content: xbytes(path.count).cyan, hAlign: "right" }, + { content: xbytes(path.count * 30).green, hAlign: "right" }, + { content: path.name.grey } + ]) + }) table.push([]) + + // table.push([ + // { content: days.focusDayWord.grey, hAlign: "right" }, + // { content: "monthly".grey, hAlign: "right", colSpan: 1 }, + // { content: "", hAlign: "right", colSpan: 1 } + // ]) table.push([ - { - hAlign: "center", - colSpan: 2, - content: (xbytes(data.bandwidth.all.total).yellow + " TOTAL BANDWIDTH".grey) } + { content: "", hAlign: "right", colSpan: 1 }, + { content: (xbytes(data.bandwidth.all.t * 30)).underline.green, hAlign: "right", colSpan: 1 }, + { content: "ESTIMATED MONTHLY BANDWIDTH".underline.grey, hAlign: "left", colSpan: 1 } ]) } else { @@ -529,15 +495,19 @@ exports.usage = function(data){ return table } + + exports.analytics = function(data){ - var title = analyticsAndUsageHeaderTitle(data) - + var days = calculateDays(data) + var title = calculateTitle(data, "Traffic") + var subtitle = calculateSubTitle(data) + // CHART var chartData = [] data.range.forEach(function(date, i){ var day = parseInt(date.split("-")[2]) - var hit = data.traffic.uniques["breakdown"][i] + var hit = data.traffic.uniques["s"][i] chartData.push([i + 1, hit]) }) @@ -569,14 +539,14 @@ exports.analytics = function(data){ table.push([{ colSpan:4, hAlign:"left", - content: ("TRAFFIC".underline.brightMagenta + (" (" + title + ")").grey) + "" + content: title }]) table.push([ { colSpan: 4, hAlign:"left", - content: ("calculated ".grey + data.normalizedAtInWords.brightYellow).italic + content: subtitle }, ]) @@ -588,20 +558,11 @@ exports.analytics = function(data){ content: chart.toString() }]) - // Top Routes - var topRoutes = [] - //var pathList = Object.keys(data.success) - - - // data.success.forEach(function(hit){ - // topRoutes.push(hit["total"].toString().padStart(7," ").blue + " " + hit["path"]) - // }) - //data.success.length = 16 - - var length = data.success[0]["total"].toString().length table.push([]) + // SUMARY TABLE + var col summaryTable = new Table({ @@ -633,53 +594,50 @@ exports.analytics = function(data){ return (r + "%").red } - var noDays = data.range.length - var connectionsYesterday = data.traffic.connections.breakdown[noDays - 1] - var connectionsAverage = data.traffic.connections.breakdown[noDays - 2] - var connectionsDelta = (connectionsYesterday - connectionsAverage) / connectionsAverage * 100 - - summaryCol1.push([ - { hAlign: "right", content: "Connections:".grey, }, - { hAlign: "right", content: hrn(data.traffic.connections.total).grey }, - { hAlign: "left", content: cleanDelta(connectionsDelta) } - ]) - - var visitsYesterday = data.traffic.visits.breakdown[noDays - 1] - var visitsAverage = data.traffic.visits.breakdown[noDays - 2] + var visitsYesterday = data.traffic.visits.s[days.todayIndex] + var visitsAverage = data.traffic.visits.s[days.yesterdayIndex] var visitsDelta = (visitsYesterday - visitsAverage) / visitsAverage * 100 summaryCol1.push([ { hAlign: "right", content: "Visits:".grey, }, - { hAlign: "right", content: hrn(data.traffic.visits.total).grey }, + { hAlign: "right", content: hrn(data.traffic.visits.t).grey }, { hAlign: "left", content: cleanDelta(visitsDelta) } ]) - var uniquesYesterday = data.traffic.uniques.breakdown[noDays - 1] - var uniquesAverage = data.traffic.uniques.breakdown[noDays - 2] + var uniquesYesterday = data.traffic.uniques.s[days.todayIndex] + var uniquesAverage = data.traffic.uniques.s[days.yesterdayIndex] var uniquesDelta = uniquesYesterday / uniquesAverage summaryCol1.push([ { hAlign: "right", content: "Uniques:".grey, }, - { hAlign: "right", content: hrn(data.traffic.uniques.total).grey }, + { hAlign: "right", content: hrn(data.traffic.uniques.t).grey }, { hAlign: "left", content: cleanDelta(uniquesDelta) } ]) + var connectionsfocusDay = data.traffic.connections.s[days.focusDayIndex] + var connectionsAverage = data.traffic.connections.s[days.dayBeforeIndex] + var connectionsDelta = (connectionsfocusDay - connectionsAverage) / connectionsAverage * 100 + + summaryCol1.push([ + { hAlign: "right", content: "Connections:".grey, }, + { hAlign: "right", content: hrn(data.traffic.connections.t).grey }, + { hAlign: "left", content: cleanDelta(connectionsDelta) } + ]) + //var encryptedPct = data.general.connections.encryption.type - var encryptionTotal = data.encryption.connEn.total + data.encryption.connUn.total + data.encryption.connR2En.total + data.encryption.connR2Un.total + var encryptionTotal = data.encryption.cE.t + data.encryption.cU.t + data.encryption.cRe.t + data.encryption.cRu.t - var httpsPct = data.encryption.connEn.total / (encryptionTotal) * 100 + var httpsPct = data.encryption.cE.t / (encryptionTotal) * 100 var httpsPctRounded = Math.round(httpsPct * 100) / 100 - var httpPct = data.encryption.connUn.total / (encryptionTotal) * 100 + var httpPct = data.encryption.cU.t / (encryptionTotal) * 100 var httpPctRounded = Math.round(httpPct * 100) / 100 - - - var r2UnPct = data.encryption.connR2Un.total / (encryptionTotal) * 100 + var r2UnPct = data.encryption.cRu.t / (encryptionTotal) * 100 var r2UnPctRounded = Math.round(r2UnPct * 100) / 100 - var httpsRedirectPct = data.encryption.connEn.total / (data.encryption.connEn.total + data.encryption.connUn.total) * 100 + var httpsRedirectPct = data.encryption.cE.t / (data.encryption.cU.t + data.encryption.cU.t) * 100 var summaryCol2 = new Table({ @@ -693,12 +651,12 @@ exports.analytics = function(data){ }) summaryCol2.push([ - { hAlign: "right", content: "Enctypted:".grey }, + { hAlign: "right", content: "Encrypted:".grey }, { hAlign: "right", content: (httpsPctRounded + "%").green } ]) - if (data.encryption.connR2En.total > 0){ - var r2EnPct = data.encryption.connR2En.total / (encryptionTotal) * 100 + if (data.encryption.cRe.total > 0){ + var r2EnPct = data.encryption.cRe.t / (encryptionTotal) * 100 var r2EnPctRounded = Math.round(r2EnPct * 100) / 100 summaryCol2.push([ { hAlign: "right", content: "forced:".grey }, @@ -706,8 +664,8 @@ exports.analytics = function(data){ ]) } - if (data.encryption.connR2Un.total > 0){ - var r2UnPct = data.encryption.connR2Un.total / (encryptionTotal) * 100 + if (data.encryption.cRu.total > 0){ + var r2UnPct = data.encryption.cRu.t / (encryptionTotal) * 100 var r2UnPctRounded = Math.round(r2UnPct * 100) / 100 summaryCol2.push([ { hAlign: "right", content: "HTTP forced:".grey }, @@ -719,11 +677,10 @@ exports.analytics = function(data){ // if (data.encryption.connEn.total > 0) // summaryCol2.push("HTTP forced: ".padStart(22, " ").grey + (r2UnPctRounded + "%").red) - // CACHE - var cachePct = data.cache.hit.total / (data.cache.hit.total + data.cache.miss.total) * 100 + var cachePct = data.cache.hit.t / (data.cache.hit.t + data.cache.miss.t) * 100 var cachePctRounded = Math.round(cachePct * 100) / 100 - var cacheMisses = data.cache.miss.total / (data.cache.hit.total + data.cache.miss.total) * 100 + var cacheMisses = data.cache.miss.t / (data.cache.hit.t + data.cache.miss.t) * 100 var cacheMissesRounded = Math.round(cacheMisses * 100) / 100 var summaryCol3 = new Table({ @@ -749,10 +706,9 @@ exports.analytics = function(data){ summaryCol3.push([ { hAlign: "right", content: "Missess:".grey }, - { hAlign: "left", content: data.cache.miss.total.toString()[cacheColor] } + { hAlign: "left", content: data.cache.miss.t.toString()[cacheColor] } ]) - // summaryTable.push([ { hAlign: "center", content: summaryCol1.toString() }, { hAlign: "center", content: summaryCol2.toString() }, @@ -763,35 +719,35 @@ exports.analytics = function(data){ { hAlign: "center", content: summaryTable.toString(), colSpan: 4} ]) - table.push([]) - var col1 = [] - if (data.success.length > 28) data.success.length = 28 + // ROUTES + + if (data.success[days.focusDayDate].length > 28) data.success[days.focusDayDate].length = 28 - col1.push("VISITS".green) - data.success.forEach(function(path, i){ - col1.push(hrn(path["total"]).padStart(6," ").green + " " + path["path"].grey) + var col1 = [] + col1.push(("VISITS: ".green + days.focusDayWord.italic.grey)) + data.success[days.focusDayDate].forEach(function(route, i){ + col1.push(hrn(route.count).padStart(6," ").green + " " + route.name.grey) }) var col2 = [] - - col2.push("NOT FOUND".red) - data.fail.forEach(function(path, i){ + col2.push("NOT FOUND: ".red + days.focusDayWord.italic.grey) + data.fail[days.focusDayDate].forEach(function(route, i){ if (i > 7) return - col2.push(hrn(path["total"]).padStart(6," ").red + " " + path["path"].grey) + col2.push(hrn(route.count).padStart(6," ").red + " " + route.name.grey) }) - col2.push("\nREDIRECTS".yellow) - data.redirect.forEach(function(path, i){ + col2.push("\nREDIRECTS: ".yellow + days.focusDayWord.italic.grey) + data.redirect[days.focusDayDate].forEach(function(route, i){ if (i > 7) return - col2.push(hrn(path["total"]).padStart(6," ").yellow + " " + path["path"].grey) + col2.push(hrn(route.count).padStart(6," ").yellow + " " + route.name.grey) }) - col2.push("\nSOURCES".cyan) - data.source.forEach(function(s, i){ + col2.push("\nSOURCES: ".cyan + days.focusDayWord.italic.grey) + data.source[days.focusDayDate].forEach(function(route, i){ if (i > 7) return - col2.push(hrn(s["total"]).padStart(6," ").cyan + " " + s["name"].grey) + col2.push(hrn(route.count).padStart(6," ").cyan + " " + route.name.grey) }) table.push([ From cb59338f18fd8ee12f1257806f52d66299312073 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 9 Apr 2021 09:03:13 -0700 Subject: [PATCH 167/214] version bump 0.24.0-rc.1 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88e2149..e0d892d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.3", + "version": "0.23.0-rc.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1652,9 +1652,9 @@ "integrity": "sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ==" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index faff74d..5840c59 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.4", + "version": "0.24.0-rc.1", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", From 6d622880380b46ec1dcd245555990981d1b945bb Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 9 Apr 2021 09:11:24 -0700 Subject: [PATCH 168/214] verison bump 0.23.0. fixes dependencies --- package-lock.json | 866 +++++++++++++++------------------------------- package.json | 4 +- 2 files changed, 285 insertions(+), 585 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a1dd63..d754462 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,15 @@ { "name": "surge", - "version": "0.21.6", + "version": "0.23.0", "lockfileVersion": 1, "requires": true, "dependencies": { + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "ajv": { "version": "6.9.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", @@ -41,9 +47,9 @@ } }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -51,13 +57,10 @@ } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-filter": { "version": "0.0.1", @@ -77,18 +80,6 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, - "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" - } - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -137,9 +128,9 @@ } }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "block-stream": { @@ -216,19 +207,19 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.5.0" } }, "cli-cursor": { @@ -371,12 +362,20 @@ } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "decamelize": { @@ -390,24 +389,15 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "ecc-jsbn": { @@ -420,73 +410,22 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", - "dev": true, - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -540,23 +479,20 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -579,18 +515,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -629,9 +559,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -668,27 +598,12 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -804,12 +719,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -819,24 +728,6 @@ "binary-extensions": "^2.0.0" } }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, "is-domain": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", @@ -866,64 +757,28 @@ "is-extglob": "^2.1.1" } }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -935,30 +790,13 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", - "dev": true - }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dev": true, - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } - }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsbn": { @@ -1008,12 +846,12 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" } }, "lodash": { @@ -1022,12 +860,57 @@ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "dev": true, "requires": { - "chalk": "^2.4.2" + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "mime-db": { @@ -1077,55 +960,85 @@ } }, "mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", + "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", "dev": true, "requires": { + "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.3.1", - "debug": "3.2.6", - "diff": "4.0.2", - "escape-string-regexp": "1.0.5", - "find-up": "4.1.0", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", "minimatch": "3.0.4", - "ms": "2.1.2", - "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "3.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.0.0", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1141,100 +1054,61 @@ } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } } } @@ -1245,9 +1119,9 @@ "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "mute-stream": { @@ -1255,6 +1129,12 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true + }, "ncp": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", @@ -1298,30 +1178,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1353,29 +1209,23 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -1408,19 +1258,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" }, - "promise.allsettled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", - "dev": true, - "requires": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - } - }, "prompt": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", @@ -1448,6 +1285,15 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "read": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", @@ -1457,12 +1303,12 @@ } }, "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" } }, "request": { @@ -1498,12 +1344,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -1553,16 +1393,13 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "shell-quote": { "version": "1.6.1", @@ -1624,12 +1461,6 @@ "through": "2" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -1662,26 +1493,6 @@ "strip-ansi": "^3.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1692,15 +1503,15 @@ } }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -1870,12 +1681,6 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -1918,9 +1723,9 @@ } }, "workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", "dev": true }, "wrap-ansi": { @@ -1939,9 +1744,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { @@ -1959,147 +1764,42 @@ } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true }, "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { + "decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } } } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 5140733..8dc4415 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.22.1", + "version": "0.23.0", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", @@ -23,7 +23,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "8.0.1", + "mocha": "^8.3.2", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From 072efd6689be8a804f6fac8762cb399c941f9411 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 12 Apr 2021 00:14:13 -0700 Subject: [PATCH 169/214] config call requires domain --- lib/middleware/config.js | 7 +++++++ package-lock.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/middleware/config.js b/lib/middleware/config.js index 55ad260..a7e6c28 100644 --- a/lib/middleware/config.js +++ b/lib/middleware/config.js @@ -9,6 +9,13 @@ module.exports = function(req, next){ }) var domain = req.argv["_"][0] + + if (!domain) { + helpers.space() + helpers.trunc("Error".red + (" - domain required".grey)) + return next() + } + sdk.settings(domain, req.argv, { user: "token", pass: req.creds.token }, function(error, rsp){ if (error) { helpers.space() diff --git a/package-lock.json b/package-lock.json index e0d892d..bcdcdf4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.23.0-rc.5", + "version": "0.24.0-rc.1", "lockfileVersion": 1, "requires": true, "dependencies": { From ce8419580d68b6ea2c86cf562706dfd320826de5 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 12 Apr 2021 03:52:51 -0700 Subject: [PATCH 170/214] fixes to config and force https --- lib/middleware/_shared/_protocol.js | 4 ++-- lib/surge.js | 6 +++--- package-lock.json | 2 +- package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/middleware/_shared/_protocol.js b/lib/middleware/_shared/_protocol.js index a035ad2..455006b 100644 --- a/lib/middleware/_shared/_protocol.js +++ b/lib/middleware/_shared/_protocol.js @@ -5,8 +5,8 @@ module.exports = function(req, next){ var u = url.parse(req.domain) if (u.protocol !== null) { - if (u.protocol == "https:") req.ssl = true - if (u.protocol == "http:") req.ssl = false + if (u.protocol == "https:") req.argv.force = "https" + if (u.protocol == "http:") req.argv.force = "http" req.domain = u.hostname } diff --git a/lib/surge.js b/lib/surge.js index 901a5a0..9b2fcce 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -257,9 +257,9 @@ module.exports = function(configuration){ endpoint, pkg, help, version, space, preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, preProject, project, postProject, - preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, postDomain, + preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, protocol, domain, postDomain, preSize, size, postSize, - prePublish, protocol, deploy, postPublish, ipaddress + prePublish, deploy, postPublish, ipaddress ] return function(){ var argv = parse(arguments[arguments.length -1]) @@ -661,7 +661,7 @@ module.exports = function(configuration){ var onion = [ whitelist, endpoint, pkg, help, version, space, preAuth, creds, auth, postAuth, - shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domainOrSilent, + shorthand, discovery.setDomainFromArgs, discovery.suggestDomainFromCname, domainOrSilent, pemOrSilent, ssl, space ] return function(){ diff --git a/package-lock.json b/package-lock.json index bcdcdf4..3e99798 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.1", + "version": "0.24.0-rc.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5840c59..746e413 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.1", + "version": "0.24.0-rc.2", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./bin/surge", From a8b9d528f78aec2f91bbcdac36f7ba79cee72304 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 13 Apr 2021 03:06:42 -0700 Subject: [PATCH 171/214] updates tables. bumps surge-sdk --- lib/middleware/files.js | 6 +++--- lib/middleware/help.js | 2 +- lib/util/helpers.js | 4 ++-- lib/util/tables.js | 8 ++++---- package-lock.json | 8 ++++---- package.json | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/middleware/files.js b/lib/middleware/files.js index 12c3ef7..9f94066 100644 --- a/lib/middleware/files.js +++ b/lib/middleware/files.js @@ -16,9 +16,9 @@ module.exports = function(req, next){ if (!domain){ helpers.trunc("domain required".grey) return next() - } else { - sdk.manifest(domain, { user: "token", pass: req.creds.token }, function(error, response){ - helpers.displayAnalytics(response) + } else { + sdk.manifest(domain, { user: "token", pass: req.creds.token }, function(error, manifest){ + helpers.displayManifest(manifest, domain) return next() }) } diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 440c9da..8246b40 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -4,7 +4,7 @@ module.exports = function(req, next){ if (req.argv.help || req.argv.h) { helpers .log() - .log(" " + req.configuration.platform.replace(/^\w/, c => c.toUpperCase()).underline.blue, "- Static Web Publishing".brightYellow, req.pkg.version.grey) + .log(" " + req.configuration.platform.replace(/^\w/, c => c.toUpperCase()).underline.blue, ("⚡ " + req.pkg.description).brightYellow, req.pkg.version.grey) .log() .log(" "+ req.configuration.name +" "+"(opt --preview)".grey+" publish with prompts".grey) .log(" "+ req.configuration.name +" "+"(opt --preview)".grey+" publish without prompts (recommended)".grey) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index d453806..fe764af 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -520,8 +520,8 @@ exports.displayAudit = function(data){ space() } -exports.displayGuide = function(data){ - var table = tables.guide(data) +exports.displayManifest = function(data, domain){ + var table = tables.manifest(data, domain) var rows = table.toString().split("\n") space() rows.forEach(function(row, i){ diff --git a/lib/util/tables.js b/lib/util/tables.js index 4ba249a..9447903 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -275,7 +275,7 @@ exports.audit = function(data){ return table } -exports.guide = function(guide){ +exports.manifest = function(manifest, domain){ var table = new Table({ chars: cleanTable, //colWidths: [9, 32, 50], @@ -285,13 +285,13 @@ exports.guide = function(guide){ } }) - var files = Object.keys(guide.manifest) + var files = Object.keys(manifest) files.forEach(function(file){ table.push([ - { content: xbytes(guide.manifest[file]["size"]).cyan, hAlign: "right" }, + { content: xbytes(manifest[file]["size"]).cyan, hAlign: "right" }, //{ content: manifest[file]["md5sum"].grey }, - { content: guide.domain.green + file.grey, } + { content: domain.green + file.grey, } ]) }) diff --git a/package-lock.json b/package-lock.json index 3e99798..c99dbde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.2", + "version": "0.24.0-rc.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1488,9 +1488,9 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.2.tgz", - "integrity": "sha512-Fj22+sxe04lxoQP1H15ubSD9ra0uy2ratekoE03pPnpyHTzgocGM1Gco6YHcnbyxvIXbHbxHJ8w/19qWMUJfqg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.3.tgz", + "integrity": "sha512-YqHqBfrL/AeiYuyxRQbTy2v1VC6Llp8wUiYHo2eeiiSUfQfTB0QrfMv+dk3lziExdQWKAWq/kjxgGhN/w/BKPQ==", "requires": { "request": "^2.88.0", "split": "^1.0.1", diff --git a/package.json b/package.json index 746e413..2bbe1fd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "surge", - "version": "0.24.0-rc.2", - "description": "CDN for front-end developers", + "version": "0.24.0-rc.3", + "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { @@ -18,7 +18,7 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.3.2", + "surge-sdk": "0.3.3", "url-parse-as-address": "1.0.0", "xbytes": "^1.7.0" }, From 826ba88e9681c4d6a355ee51d7e8abe31e86f36f Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 13 Apr 2021 21:16:58 -0700 Subject: [PATCH 172/214] table cleanup for dns records --- lib/util/tables.js | 19 +++++++++++-------- package.json | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 9447903..2af165e 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -924,14 +924,15 @@ exports.customRecords = function(dninfo){ 'padding-left': 0, 'padding-right': 0 }, - colWidths: [32, 6, 3, 50, 16] + colWidths: [32, 6, 3, 32, 16], + wordWrap:true }) dninfo.records.forEach(function(record){ table.push([ - { hAlign: "left", content: record.name }, + { hAlign: "left", content: record.name.grey }, { hAlign: "left", content: record.type.blue }, - { hAlign: "left", content: record.priority }, + { hAlign: "left", content: (record.priority || "").toString().grey }, { hAlign: "left", content: record.value.green.underline }, { hAlign: "left", content: (record.id ? record.id : "").grey }, ]) @@ -964,7 +965,9 @@ exports.zone = function(dninfo){ style: { 'padding-left': 0, 'padding-right': 0 - } + }, + colWidths: [28, 6, 32, 16, 28], + wordWrap:true }) // $ORIGIN @@ -992,7 +995,7 @@ exports.zone = function(dninfo){ { hAlign: "left", content: record.type.grey }, { hAlign: "left", content: fqdn(record.value).grey }, { hAlign: "left", content: dotnotation(record.email).grey }, - { hAlign: "left", content: ("( " + dninfo.serial + " 1d 2h 4w 1h )").grey }, + { hAlign: "left", content: ("(" + dninfo.serial + " 1d 2h 4w 1h)").grey }, ]) }else if (record.type === "NS"){ table.push([ @@ -1000,7 +1003,7 @@ exports.zone = function(dninfo){ { hAlign: "left", content: record.type.grey }, { hAlign: "left", content: fqdn(record.value).grey}, { hAlign: "left", content: (record.id ? record.id : "").grey }, - { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + { hAlign: "left", content: (record.category ? (";" + record.category.toUpperCase()).grey : ";CUSTOM".grey) }, ]) }else if (record.category === "glue"){ table.push([ @@ -1008,7 +1011,7 @@ exports.zone = function(dninfo){ { hAlign: "left", content: record.type.grey }, { hAlign: "left", content: record.value.grey}, { hAlign: "left", content: (record.id ? record.id : "").grey }, - { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + { hAlign: "left", content: (record.category ? (";" + record.category.toUpperCase()).grey : ";CUSTOM".grey) }, ]) }else{ table.push([ @@ -1016,7 +1019,7 @@ exports.zone = function(dninfo){ { hAlign: "left", content: record.type.grey }, { hAlign: "left", content: record.value.grey}, { hAlign: "left", content: (record.id ? record.id : "").grey }, - { hAlign: "left", content: (record.category ? ("; " + record.category.toUpperCase()).grey : "; CUSTOM".grey) }, + { hAlign: "left", content: (record.category ? (";" + record.category.toUpperCase()).grey : ";CUSTOM".grey) }, ]) } }) diff --git a/package.json b/package.json index 2bbe1fd..b302729 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.3", + "version": "0.24.0-rc.4", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 1fd1ad90bd72aff179ba8261268988753ecd6d15 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 15 Apr 2021 14:41:24 -0700 Subject: [PATCH 173/214] display auto-renew for certs. version bump 0.24.0-rc.5 --- lib/util/tables.js | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 2af165e..7f8ac87 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -897,7 +897,7 @@ exports.cert = function(cert){ table.push({ "Issuer": [cert.issuer] }) table.push({ "Alt Names": cert.subjectAltNames.join(", ") }) table.push({ "Expires": [days] }) - table.push({ "Auto-Renew": ["false".grey] }) + table.push({ "Auto-Renew": [cert.autoRenew ? cert.autoRenew.toString().green : cert.autoRenew.toString().grey] }) return table } diff --git a/package-lock.json b/package-lock.json index c99dbde..fc7f0b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.3", + "version": "0.24.0-rc.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b302729..ab78af0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.4", + "version": "0.24.0-rc.5", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 0c7bd6d60937d4eb2a4c4136484271ab520cfe22 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Tue, 4 May 2021 17:43:42 -0700 Subject: [PATCH 174/214] adds network call --- lib/middleware/current.js | 28 +++++++++++++ lib/middleware/help.js | 7 ++-- lib/middleware/traffic.js | 2 +- lib/surge.js | 21 ++++++++++ lib/util/helpers.js | 14 ++++++- lib/util/tables.js | 86 ++++++++++++++++++++++++++++++++++++++- package-lock.json | 2 +- package.json | 2 +- 8 files changed, 153 insertions(+), 9 deletions(-) create mode 100644 lib/middleware/current.js diff --git a/lib/middleware/current.js b/lib/middleware/current.js new file mode 100644 index 0000000..7ac813d --- /dev/null +++ b/lib/middleware/current.js @@ -0,0 +1,28 @@ + +var helpers = require("../util/helpers") +var surgeSDK = require("surge-sdk") + +module.exports = function(req, next){ + + var sdk = surgeSDK({ + endpoint: req.endpoint.format(), + defaults: helpers.defaults + }) + + var domain = req.argv["_"][0] + var rev = req.argv["_"][1] || null + + helpers.space() + sdk.analytics(domain, { user: "token", pass: req.creds.token }, function(error, response){ + if (!response){ + if (!domain){ + helpers.trunc("domain required".grey) + return next() + } + } else { + helpers.displayCurrent(response) + return next() + } + }) + +} \ No newline at end of file diff --git a/lib/middleware/help.js b/lib/middleware/help.js index 8246b40..d63af60 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -20,15 +20,16 @@ module.exports = function(req, next){ .log(" "+ req.configuration.name +" audit "+"audit edgenode state".grey) .log(" "+ req.configuration.name +" bust "+"busts cache on all edgenodes".grey) .log(" "+ req.configuration.name +" traffic "+"analytics showing project traffic".grey) + .log(" "+ req.configuration.name +" network "+"analytics showing global distribution".grey) .log(" "+ req.configuration.name +" audience "+"analytics showing audience device info".grey) .log(" "+ req.configuration.name +" usage "+"analytics showing bandwidth usage".grey) .log(" "+ req.configuration.name +" teardown "+"tear down a published project".grey) .log(" "+ req.configuration.name +" ssl "+"legacy command for uploding .pem file".grey) .log(" "+ req.configuration.name +" invite "+"invites user to be a contributor".grey) .log(" "+ req.configuration.name +" revoke "+"revokes contributor rights".grey) - .log(" "+ req.configuration.name +" dns "+"view DNS records".grey) - .log(" "+ req.configuration.name +" dns add "+"add DNS record".grey) - .log(" "+ req.configuration.name +" dns rem "+"remove DNS record".grey) + .log(" "+ req.configuration.name +" dns|zone "+"view DNS records".grey) + .log(" "+ req.configuration.name +" dns|zone add "+"add DNS record".grey) + .log(" "+ req.configuration.name +" dns|zone rem "+"remove DNS record".grey) .log(" "+ req.configuration.name +" whoami "+"show who you are logged in as".grey) .log(" "+ req.configuration.name +" login "+"only performs authentication step".grey) .log(" "+ req.configuration.name +" logout "+"expire local token".grey) diff --git a/lib/middleware/traffic.js b/lib/middleware/traffic.js index bbee873..b1ca042 100644 --- a/lib/middleware/traffic.js +++ b/lib/middleware/traffic.js @@ -20,7 +20,7 @@ module.exports = function(req, next){ return next() } } else { - helpers.displayAnalytics(response) + helpers.displayTraffic(response) return next() } }) diff --git a/lib/surge.js b/lib/surge.js index 9b2fcce..5e6c8a3 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -57,6 +57,7 @@ var cutover = require("./middleware/cutover") var bust = require("./middleware/bust") var analytics = require("./middleware/analytics") var traffic = require("./middleware/traffic") +var current = require("./middleware/current") var audience = require("./middleware/audience") var usage = require("./middleware/usage") var audit = require("./middleware/audit") @@ -171,6 +172,7 @@ module.exports = function(configuration){ "analytics", "usage", "traffic", + "network", "audience", "nuke", ] @@ -458,6 +460,25 @@ module.exports = function(configuration){ } } + surge.network = function(hooks){ + var hooks = hooks || {} + var preAuth = hooks.preAuth || stub + var postAuth = hooks.postAuth || stub + var onion = [ + whitelist, endpoint, pkg, help, version, + preAuth, creds, welcome, auth, postAuth, + current, space + ] + return function(){ + var argv = parse(arguments[arguments.length -1]) + skin({ + configuration: configuration, + argv: argv, + read: read + }, onion) + } + } + surge.audience = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub diff --git a/lib/util/helpers.js b/lib/util/helpers.js index fe764af..6798ba5 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -540,8 +540,18 @@ exports.displayUsage = function(data){ space() } -exports.displayAnalytics = function(data){ - var table = tables.analytics(data) +exports.displayTraffic = function(data){ + var table = tables.traffic(data) + var rows = table.toString().split("\n") + space() + rows.forEach(function(row, i){ + log(" ", row.grey) + }) + space() +} + +exports.displayCurrent = function(data){ + var table = tables.current(data) var rows = table.toString().split("\n") space() rows.forEach(function(row, i){ diff --git a/lib/util/tables.js b/lib/util/tables.js index 7f8ac87..7d9c51c 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -495,9 +495,93 @@ exports.usage = function(data){ return table } +var buildCurrentChart = function(range, dc, color, size){ + var chartData = [] + range.forEach(function(date, i){ + var day = parseInt(date.split("-")[2]) + var hit = dc["s"][i] + chartData.push([i + 1, hit]) + }) + var chart = babar(chartData, { + //caption: title.grey, + color: color || "cyan", + height: size || 3, + width: 100 + }) + + var arr = chart.split("\n") + arr.pop() + var chart = arr.join("\n") + + return chart + +} +exports.current = function(data){ + var days = calculateDays(data) + var title = calculateTitle(data, "Connections") + var subtitle = calculateSubTitle(data) + + var table = new Table({ + //head: [title + (" (Last "+ data.range.length + " days)").grey + (" calculated 7min ago\n").italic.yellow], + //head: ["One", "two", "three", "four"], + //colWidths: [24, 24, 24, 24], + chars: cleanTable, + style: { + 'padding-left': 0, + 'padding-right': 0 + } + }) + + table.push([{ + colSpan:4, + hAlign:"left", + content: title + }]) + + table.push([ + { + colSpan: 4, + hAlign:"left", + content: subtitle + }, + ]) + + table.push([]) + + Object.keys(data.datacenters).forEach(function(dc){ + if (data.datacenters[dc]["t"] > 1){ + var c = buildCurrentChart(data.range, data.datacenters[dc], "cyan", 4) + table.push([ + { + content: c.toString() + "\n", + hAlign: "right" + }, + { + content: data.datacenters[dc]["city"].underline.grey + "\n" + dc.split(".")[0].grey + ("\n" + hrn(data.datacenters[dc]["t"])).grey, + hAlign: "left" + } + ]) + } + }) + + var c = buildCurrentChart(data.range, data.traffic["connections"], "green", 4) + + table.push([ + { + content: c.toString() + "\n", + hAlign: "right" + }, + { + content: "TOTAL".underline.green + ("\n" + hrn(data.traffic["connections"]["t"])).green, + hAlign: "left" + } + ]) + + return table +} -exports.analytics = function(data){ +exports.traffic = function(data){ var days = calculateDays(data) var title = calculateTitle(data, "Traffic") var subtitle = calculateSubTitle(data) diff --git a/package-lock.json b/package-lock.json index fc7f0b6..a8b77bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.5", + "version": "0.24.0-rc.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ab78af0..d8c8e49 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.5", + "version": "0.24.0-rc.6", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 62f1de71d5acf307a4981337f960add9e4d591be Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 6 May 2021 16:48:36 -0700 Subject: [PATCH 175/214] fixes forbidden bug on encrypt call --- lib/middleware/encrypt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js index b5ffdbc..169b4c1 100644 --- a/lib/middleware/encrypt.js +++ b/lib/middleware/encrypt.js @@ -154,7 +154,7 @@ module.exports = function(req, next){ .on("forbidden", function(payload){ helpers.space() - helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) + helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + domain.underline).grey) helpers.space() process.exit(1) }) From dd6af4b647be7ba35cfab2a746bc78cb1ec23ec7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 12 May 2021 22:26:49 -0700 Subject: [PATCH 176/214] removes CI yaml files --- .travis.yml | 5 ----- appveyor.yml | 27 --------------------------- 2 files changed, 32 deletions(-) delete mode 100644 .travis.yml delete mode 100644 appveyor.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 32e0fb7..0000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -sudo: false -language: node_js -node_js: - - "0.12" - - "4.0" diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index c83c9d3..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: "{build}" -os: Windows Server 2012 R2 - -# Test against this version of Node.js -environment: - matrix: - - nodejs_version: "0.12" - - nodejs_version: "4.0" - -# Install scripts. (runs after repo cloning) -install: - # Get the latest stable version of Node.js or io.js - - ps: Install-Product node $env:nodejs_version - # install modules - - npm install - -# Post-install test scripts. -test_script: - # Output useful info for debugging. - - node --version - - npm --version - # run tests - - npm test - -# Don't actually build or deploy. -build: off -deploy: off From 5d71e9d6c62f052ee697bb7c2ea8a96d9d3c9234 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 13 May 2021 03:50:57 -0700 Subject: [PATCH 177/214] change from inquirer to prompts. version bump 0.24.0-rc.7 --- lib/middleware/cut/interactive.js | 20 +-- lib/middleware/cutover.js | 1 - lib/middleware/discard.js | 1 - lib/middleware/plan.js | 119 +++++++++++--- lib/middleware/select.js | 5 +- lib/util/helpers.js | 62 +------- lib/util/tables.js | 100 ++++++++++++ package-lock.json | 256 +++--------------------------- package.json | 4 +- 9 files changed, 232 insertions(+), 336 deletions(-) diff --git a/lib/middleware/cut/interactive.js b/lib/middleware/cut/interactive.js index ca6655c..069a028 100644 --- a/lib/middleware/cut/interactive.js +++ b/lib/middleware/cut/interactive.js @@ -3,7 +3,7 @@ var url = require("url") var request = require("request") var Table = require("cli-table3") var helpers = require("../../util/helpers") -var inquirer = require("inquirer") +//var inquirer = require("inquirer") var tableRevisions = require("../../util/table-revision.js") @@ -55,14 +55,16 @@ module.exports = function(req, next){ message: ' ' } - inquirer.prompt([args]).then(function (answers) { - if (answers.revision.current){ - helpers.trunc("No change".green + " - Selected revision is already current".grey ) - return next() - } else { - return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) - } - }) + console.log("Feature not implemented") + process.exit() + // inquirer.prompt([args]).then(function (answers) { + // if (answers.revision.current){ + // helpers.trunc("No change".green + " - Selected revision is already current".grey ) + // return next() + // } else { + // return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) + // } + // }) } diff --git a/lib/middleware/cutover.js b/lib/middleware/cutover.js index 831754a..c80bada 100644 --- a/lib/middleware/cutover.js +++ b/lib/middleware/cutover.js @@ -1,7 +1,6 @@ var helpers = require("../util/helpers") var cutto = require("./cut/cutto") -var interactive = require("./cut/interactive.js") var surgeSDK = require("surge-sdk") diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index 2c07291..baac200 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -1,7 +1,6 @@ var helpers = require("../util/helpers") var cutto = require("./cut/cutto") -var interactive = require("./cut/interactive.js") var surgeSDK = require("surge-sdk") diff --git a/lib/middleware/plan.js b/lib/middleware/plan.js index a00068f..de1f05a 100644 --- a/lib/middleware/plan.js +++ b/lib/middleware/plan.js @@ -4,7 +4,8 @@ var helpers = require("../util/helpers") var path = require("path") var fs = require("fs") var os = require("os") -var inquirer = require('inquirer') +var prompts = require("prompts") +var tables = require("../util/tables") module.exports = function(req, next, abort){ @@ -17,7 +18,7 @@ module.exports = function(req, next, abort){ ? "yr" : "mo" - var title = plan.name.underline + var title = plan.name // add price if (price == "00") { @@ -40,9 +41,10 @@ module.exports = function(req, next, abort){ var features = [title].concat(plan.perks || []) return { - short: " ", value: plan, - name: " " + features.join("\n - ") + "\n" + //title: " " + features.join("\n - ") + "\n", + title: plan.name, + //plan: plan } } @@ -54,31 +56,102 @@ module.exports = function(req, next, abort){ var choices = req.plans.list.map(choice) - var args = { - type: 'list', - name: 'plan', - default: indexOfCurrent, - choices: choices, - pageSize: 30, - separator: true - } + // var args = { + // type: 'list', + // name: 'plan', + // default: indexOfCurrent, + // choices: choices, + // pageSize: 30, + // separator: true + // } // use message if the server gives us one // args.message = req.plans.message ? (" " + req.plans.message.yellow + "\n") : ' ' - args.message = ' ' + //args.message = ' ' // prompt user to choose a plan - inquirer.prompt([args]).then(function (answers) { - helpers.gap() - if (answers.plan.comped){ - helpers.trunc(" Done".green + (" - On " + answers.plan.name + " plan, free of charge.").grey) + + + + var questions = { + type: 'select', + name: 'plan', + message: 'Select a Plan', + initial: indexOfCurrent, + choices: choices + } + + //console.log(choices) + + // prompts(questions, { onCancel: new Function, onSubmit: new Function }, function(a,b,c){ + // console.log() + // console.log() + // console.log(a) + // console.log() + // console.log(b) + // console.log() + // console.log(c) + // console.log() + // }) + + var table = tables.plans(choices) + var rows = table.toString().split("\n") + rows.forEach(function(row, i){ + helpers.trunc(row.grey) + }) + helpers.space() + + ;(async () => { + const response = await prompts({ + type: 'select', + name: 'plan', + message: 'Select Account Plan', + initial: indexOfCurrent, + choices: choices + }, { + + onCancel: function(resp){ + console.log() + }, + + onSubmit: function(resp){ + console.log() + } + + }); + + if (response.plan){ + if (response.plan.comped){ + helpers.gap() + helpers.trunc(" Done".green + (" - On " + response.plan.name + " plan, free of charge.").grey) + helpers.space() + process.exit() + }else{ + req.selectedPlan = response.plan + var p = req.selectedPlan.id.split("-")[0] + req.plan = p.charAt(0).toUpperCase() + p.slice(1) + return next() + } + }else{ + helpers.trunc(" Aborted".yellow + (" - No plan selected.").grey) helpers.space() - process.exit() } - req.selectedPlan = answers.plan - var p = req.selectedPlan.id.split("-")[0] - req.plan = p.charAt(0).toUpperCase() + p.slice(1) - return next() - }) + + })(); + + + + // inquirer.prompt([args]).then(function (answers) { + // helpers.gap() + // if (answers.plan.comped){ + // helpers.trunc(" Done".green + (" - On " + answers.plan.name + " plan, free of charge.").grey) + // helpers.space() + // process.exit() + // } + // req.selectedPlan = answers.plan + // var p = req.selectedPlan.id.split("-")[0] + // req.plan = p.charAt(0).toUpperCase() + p.slice(1) + // return next() + // }) } diff --git a/lib/middleware/select.js b/lib/middleware/select.js index e86be54..fc10cd0 100644 --- a/lib/middleware/select.js +++ b/lib/middleware/select.js @@ -1,7 +1,8 @@ var helpers = require("../util/helpers") var cutto = require("./cut/cutto") -var interactive = require("./cut/interactive.js") module.exports = function(req, next){ - return interactive(req, next) + helpers.space() + helpers.log("Feature not implemented") + process.exit() } \ No newline at end of file diff --git a/lib/util/helpers.js b/lib/util/helpers.js index 6798ba5..a9056c7 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -12,7 +12,7 @@ var pkg = require("../../package.json") var url = require("url") var Table = require("cli-table3") -var inquirer = require("inquirer") +var prompts = require("prompts") var tableRevisions = require("./table-revision.js") var tableRegions = require("./table-regions.js") @@ -824,66 +824,6 @@ exports.displayRecords = function(arg, type){ } } -exports.revisionSelector = function(req, callback){ - - var options = { - 'url': url.resolve(req.endpoint.format(), req.argv["_"][0] + '/list'), - 'method': 'get', - 'auth': { - 'user': "token", - 'pass': req.creds.token, - 'sendImmediately': true - } - } - - request(options, function(e, r, obj){ - if (e) throw e - // TODO: handle 410 - - var list = JSON.parse(obj) - - if (list.length == 0){ - space() - trunc("Empty".blue + (" - There are no revisions for " + req.argv["_"][0]).grey) - return callback(null, null) - } else { - - var table = tableRevisions(req.argv["_"][0], list) - var rows = table.toString().split("\n") - - var choice = function(revision, i){ - return { - short: " ", - value: revision, - name: rows[i] - } - } - - var indexOfCurrent = 0 - var choices = list.map(choice) - - var args = { - type: 'list', - name: 'revision', - default: indexOfCurrent, - choices: choices, - pageSize: 8, - separator: true, - message: ' ' - } - - inquirer.prompt([args]).then(function (answers) { - if (answers.revision.current){ - trunc("No change".green + " - Selected revision is already current".grey ) - return next() - } else { - return callback(null, answers) - //return helpers.cutto(req.argv["_"][0], answers.revision.rev, next) - } - }) - } - }) -} exports.validDomain = function(domain) { if (domain && (isDomain(domain) === true || isDomain(urlAddy(domain).host) === true)) { diff --git a/lib/util/tables.js b/lib/util/tables.js index 7d9c51c..cfbd5c7 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -275,6 +275,106 @@ exports.audit = function(data){ return table } + +exports.plans = function(choices){ + + // var head = choices.map(function(choice){ + // return { + // content: choice.value.name, + // hAlign: "center" + // } + // }) + + // var table = new Table({ + // head: head, + // chars: {}, + // colWidths: [42, 42], + // style: { + // 'compact': true, + // 'padding-left': 3, + // 'padding-right': 3, + // } + // }) + + // var row = [] + // choices.map(function(choice){ + + // row.push({ + // content: choice.value.perks.join("\n- ") + "\n" + // }) + // }) + + // table.push(row) + + var outerTable = new Table({ + chars: cleanTable, + //colWidths: [42, 42], + style: { + 'compact': true, + 'padding-left': 0, + 'padding-right': 0, + } + }) + + // outerTable.push([ + // { + // content: "Hello World", + // hAlign: "center" + // }, + // { + // content: "Hello World", + // hAlign: "center" + // } + // ]) + + outerTable.push([{ + content: [ + "", + "Select an Account Plan".blue, + "upgrade or downgrade account at any time".italic.grey, + "" + ].join("\n"), + colSpan: choices.length, + hAlign: "center" + }]) + + var panels = [] + + choices.forEach(function(choice){ + var price = choice.value.amount.toString().substring(0, choice.value.amount.toString().length - 2) + var shortinter = choice.value.interval == "year" ? "yr" : "mo" + + var priceFormated + if (choice.value.price == "00") { + priceFormated = "Free" + }else{ + priceFormated = "$" + price + "/" + shortinter + } + var table = new Table({ + head: [{ + content: [choice.value.name, priceFormated].join("\n"), + hAlign: "center" + }], + chars: {}, + colWidths: [38], + style: { + 'compact': true, + 'padding-left': 2, + 'padding-right': 2, + } + }) + table.push([{ + content: choice.value.perks.join("\n- ") + "\n" + }]) + + panels.push(table.toString()) + }) + + outerTable.push(panels) + + return outerTable +} + exports.manifest = function(manifest, domain){ var table = new Table({ chars: cleanTable, diff --git a/package-lock.json b/package-lock.json index a8b77bc..e5ecd40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.6", + "version": "0.24.0-rc.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -27,25 +27,12 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", @@ -191,36 +178,6 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, "chokidar": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", @@ -237,14 +194,6 @@ "readdirp": "~3.5.0" } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" - } - }, "cli-table3": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", @@ -290,11 +239,6 @@ } } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -318,19 +262,6 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -426,26 +357,11 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -461,14 +377,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -626,14 +534,6 @@ "resolved": "https://registry.npmjs.org/human-readable-numbers/-/human-readable-numbers-0.9.5.tgz", "integrity": "sha512-VC1uYLm7FR+4UkLaQdXPLodz7xTVLBte3X6iMCYK/uPJywoHyEZfR40+kCN4YqYd+FNCPJAJNYv2CSMvAprgsQ==" }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -648,72 +548,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", - "requires": { - "ansi-regex": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==" - } - } - } - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -770,11 +604,6 @@ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -837,6 +666,11 @@ "verror": "1.10.0" } }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -855,11 +689,6 @@ "p-locate": "^5.0.0" } }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" - }, "log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", @@ -927,11 +756,6 @@ "mime-db": "~1.38.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1168,14 +992,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -1185,11 +1001,6 @@ "lcid": "^1.0.0" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -1235,6 +1046,15 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -1309,15 +1129,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -1326,22 +1137,6 @@ "glob": "^7.1.3" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "^2.1.0" - } - }, - "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "requires": { - "tslib": "^1.9.0" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -1408,10 +1203,10 @@ "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", "dev": true }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "split": { "version": "1.0.1", @@ -1522,14 +1317,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1555,11 +1342,6 @@ } } }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", diff --git a/package.json b/package.json index d8c8e49..b8640ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.6", + "version": "0.24.0-rc.7", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", @@ -9,7 +9,7 @@ "cli-table3": "^0.5.1", "colors": "^1.4.0", "human-readable-numbers": "^0.9.5", - "inquirer": "^6.2.2", + "prompts": "*", "is-domain": "0.0.1", "minimist": "1.2.3", "moniker": "0.1.2", From 326bc2895896d6a68888d0d00fecd2a84deba834 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Wed, 19 May 2021 22:21:31 -0700 Subject: [PATCH 178/214] fixes broken prompts --- lib/middleware/discard.js | 3 +-- lib/middleware/nuke.js | 1 + lib/middleware/rollback.js | 4 +++- lib/middleware/rollfore.js | 4 +++- lib/surge.js | 2 +- package.json | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/middleware/discard.js b/lib/middleware/discard.js index baac200..f76f2b1 100644 --- a/lib/middleware/discard.js +++ b/lib/middleware/discard.js @@ -34,8 +34,7 @@ module.exports = function(req, next){ helpers.log(" " + "Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ - - if (response.status && response.status == 200){ + if (response){ // display discard information helpers.space() helpers.log(" ✂ Discarded".green + (" " + response.revision.preview.underline).grey) diff --git a/lib/middleware/nuke.js b/lib/middleware/nuke.js index 652b90b..85277c8 100644 --- a/lib/middleware/nuke.js +++ b/lib/middleware/nuke.js @@ -3,6 +3,7 @@ var helpers = require("../util/helpers") var localCreds = require("../util/creds.js") var surgeSDK = require("surge-sdk") var path = require("path") +var pkg = require("../../package.json") module.exports = function(req, next){ diff --git a/lib/middleware/rollback.js b/lib/middleware/rollback.js index ad9db78..d13fd00 100644 --- a/lib/middleware/rollback.js +++ b/lib/middleware/rollback.js @@ -17,7 +17,9 @@ module.exports = function(req, next){ helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ - var success = response.status && response.status == 201 + if (response.revision && response.former && (response.revision.rev !== response.former.rev)){ + var success = true + } helpers.space() if (success){ helpers.trunc("⟲ Rollback".green) diff --git a/lib/middleware/rollfore.js b/lib/middleware/rollfore.js index 82251a7..5d3f77c 100644 --- a/lib/middleware/rollfore.js +++ b/lib/middleware/rollfore.js @@ -17,7 +17,9 @@ module.exports = function(req, next){ helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) helpers.space() }else{ - var success = response.status && response.status == 201 + if (response.revision && response.former && (response.revision.rev !== response.former.rev)){ + var success = true + } helpers.space() if (success){ helpers.trunc("⟳ Forward".green) diff --git a/lib/surge.js b/lib/surge.js index 5e6c8a3..e479c5c 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -259,7 +259,7 @@ module.exports = function(configuration){ endpoint, pkg, help, version, space, preAuth, creds, welcome, auth, authInfo, postAuth, shorthand, preProject, project, postProject, - preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, protocol, domain, postDomain, + preDomain, discovery.setDomainFromCname, discovery.suggestDomainFromGenerator, domain, protocol, postDomain, preSize, size, postSize, prePublish, deploy, postPublish, ipaddress ] diff --git a/package.json b/package.json index b8640ae..04d62d1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.7", + "version": "0.24.0-rc.8", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From f0481ccbe526912368340a9f698f7ce03ad98296 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 20 May 2021 11:57:53 -0700 Subject: [PATCH 179/214] changes network command to load --- lib/middleware/help.js | 2 +- lib/middleware/{current.js => load.js} | 0 lib/surge.js | 8 ++++---- lib/util/helpers.js | 2 +- lib/util/tables.js | 4 ++-- package.json | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) rename lib/middleware/{current.js => load.js} (100%) diff --git a/lib/middleware/help.js b/lib/middleware/help.js index d63af60..0949698 100644 --- a/lib/middleware/help.js +++ b/lib/middleware/help.js @@ -20,7 +20,7 @@ module.exports = function(req, next){ .log(" "+ req.configuration.name +" audit "+"audit edgenode state".grey) .log(" "+ req.configuration.name +" bust "+"busts cache on all edgenodes".grey) .log(" "+ req.configuration.name +" traffic "+"analytics showing project traffic".grey) - .log(" "+ req.configuration.name +" network "+"analytics showing global distribution".grey) + .log(" "+ req.configuration.name +" load "+"analytics showing global network load".grey) .log(" "+ req.configuration.name +" audience "+"analytics showing audience device info".grey) .log(" "+ req.configuration.name +" usage "+"analytics showing bandwidth usage".grey) .log(" "+ req.configuration.name +" teardown "+"tear down a published project".grey) diff --git a/lib/middleware/current.js b/lib/middleware/load.js similarity index 100% rename from lib/middleware/current.js rename to lib/middleware/load.js diff --git a/lib/surge.js b/lib/surge.js index e479c5c..d60684c 100644 --- a/lib/surge.js +++ b/lib/surge.js @@ -57,7 +57,7 @@ var cutover = require("./middleware/cutover") var bust = require("./middleware/bust") var analytics = require("./middleware/analytics") var traffic = require("./middleware/traffic") -var current = require("./middleware/current") +var load = require("./middleware/load") var audience = require("./middleware/audience") var usage = require("./middleware/usage") var audit = require("./middleware/audit") @@ -172,7 +172,7 @@ module.exports = function(configuration){ "analytics", "usage", "traffic", - "network", + "load", "audience", "nuke", ] @@ -460,14 +460,14 @@ module.exports = function(configuration){ } } - surge.network = function(hooks){ + surge.load = function(hooks){ var hooks = hooks || {} var preAuth = hooks.preAuth || stub var postAuth = hooks.postAuth || stub var onion = [ whitelist, endpoint, pkg, help, version, preAuth, creds, welcome, auth, postAuth, - current, space + load, space ] return function(){ var argv = parse(arguments[arguments.length -1]) diff --git a/lib/util/helpers.js b/lib/util/helpers.js index a9056c7..8173b01 100644 --- a/lib/util/helpers.js +++ b/lib/util/helpers.js @@ -551,7 +551,7 @@ exports.displayTraffic = function(data){ } exports.displayCurrent = function(data){ - var table = tables.current(data) + var table = tables.load(data) var rows = table.toString().split("\n") space() rows.forEach(function(row, i){ diff --git a/lib/util/tables.js b/lib/util/tables.js index cfbd5c7..0aa52d9 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -617,9 +617,9 @@ var buildCurrentChart = function(range, dc, color, size){ } -exports.current = function(data){ +exports.load = function(data){ var days = calculateDays(data) - var title = calculateTitle(data, "Connections") + var title = calculateTitle(data, "Load") var subtitle = calculateSubTitle(data) var table = new Table({ diff --git a/package.json b/package.json index 04d62d1..f285e02 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.8", + "version": "0.24.0-rc.9", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 5029d556541e28ea6849a18b8908bf3e5d48e493 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 20 May 2021 12:40:50 -0700 Subject: [PATCH 180/214] tweaks to traffic display --- lib/util/tables.js | 30 +++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 0aa52d9..7c61954 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -772,10 +772,10 @@ exports.traffic = function(data){ if (d === 0) return "" var r = Math.round(d * 100) / 100 - if (d > 5) return ("+" + r + "%").green - if (d > 0) return ("+" + r + "%").green - if (d > 0.8) return (r + "%").yellow - return (r + "%").red + if (d > 5) return (" " + r + "% ↗").green + if (d > 0) return (" " + r + "% ↗").green + if (d > -3) return (r + "%").yellow + return (r + "% ↙").red } var visitsYesterday = data.traffic.visits.s[days.todayIndex] @@ -821,8 +821,11 @@ exports.traffic = function(data){ var r2UnPctRounded = Math.round(r2UnPct * 100) / 100 + //var httpsRedirectPct = data.encryption.cE.t / (data.encryption.cU.t + data.encryption.cU.t) * 100 var httpsRedirectPct = data.encryption.cE.t / (data.encryption.cU.t + data.encryption.cU.t) * 100 + // console.log(data.traffic) + // console.log(data.encryption) var summaryCol2 = new Table({ //head:[{ colSpan:5, content: "", hAlign:"center" }], @@ -839,16 +842,16 @@ exports.traffic = function(data){ { hAlign: "right", content: (httpsPctRounded + "%").green } ]) - if (data.encryption.cRe.total > 0){ + if (data.encryption.cRe.t > 0){ var r2EnPct = data.encryption.cRe.t / (encryptionTotal) * 100 var r2EnPctRounded = Math.round(r2EnPct * 100) / 100 summaryCol2.push([ { hAlign: "right", content: "forced:".grey }, - { hAlign: "right", content: (r2EnPctRounded + "%").cyan } + { hAlign: "right", content: (r2EnPctRounded + "%").green } ]) } - if (data.encryption.cRu.total > 0){ + if (data.encryption.cRu.t > 0){ var r2UnPct = data.encryption.cRu.t / (encryptionTotal) * 100 var r2UnPctRounded = Math.round(r2UnPct * 100) / 100 summaryCol2.push([ @@ -857,6 +860,19 @@ exports.traffic = function(data){ ]) } + if (data.encryption.cU.t > 0){ + summaryCol2.push([ + { hAlign: "right", content: "Naked:".grey }, + { hAlign: "right", content: hrn(data.encryption.cU.t).red } + ]) + }else{ + summaryCol2.push([ + { hAlign: "right", content: "Naked:".grey }, + { hAlign: "right", content: hrn(data.encryption.cU.t).green } + ]) + } + + // if (data.encryption.connEn.total > 0) // summaryCol2.push("HTTP forced: ".padStart(22, " ").grey + (r2UnPctRounded + "%").red) diff --git a/package.json b/package.json index f285e02..d8d59e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.9", + "version": "0.24.0-rc.10", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 40d9855a8c2fa79a220764967acafb6f4b982c53 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 6 Aug 2021 17:00:06 -0700 Subject: [PATCH 181/214] adds cert check to audit. version bump 0.24.0-rc.11 --- lib/util/tables.js | 10 +++++++++- package.json | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 7c61954..203e6fd 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -264,12 +264,20 @@ exports.audit = function(data){ }) var edgenodes = Object.keys(data) edgenodes.forEach(function(edgenode){ + + if (data[edgenode]["certError"]){ + var cert = (data[edgenode]["certError"]["code"]).red + }else{ + var cert = ("Cert Valid (" + data[edgenode]["cert"]["valid_to"] + ")").green + } + var en = edgenode.split(".")[0] table.push([ { content: en }, { content: data[edgenode]["rev"].toString().green }, { content: (data[edgenode]["publicFileCount"] + " files").yellow }, - { content: xbytes(data[edgenode]["publicTotalSize"]).cyan } + { content: xbytes(data[edgenode]["publicTotalSize"]).cyan }, + { content: cert } ]) }) return table diff --git a/package.json b/package.json index d8d59e3..9a15871 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.10", + "version": "0.24.0-rc.11", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From feed98b86acef2f23597e951135d1cb056a000b5 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Thu, 23 Sep 2021 20:41:09 -0700 Subject: [PATCH 182/214] more fault tolerant audit --- lib/util/tables.js | 9 ++++++++- package.json | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/util/tables.js b/lib/util/tables.js index 203e6fd..edf6391 100644 --- a/lib/util/tables.js +++ b/lib/util/tables.js @@ -262,11 +262,18 @@ exports.audit = function(data){ var table = new Table({ chars: cleanTable, }) + //console.log(data) var edgenodes = Object.keys(data) edgenodes.forEach(function(edgenode){ if (data[edgenode]["certError"]){ - var cert = (data[edgenode]["certError"]["code"]).red + if (data[edgenode]["certError"]["code"]){ + var cert = (data[edgenode]["certError"]["code"]).red + }else if(data[edgenode]["certError"]["reason"]){ + var cert = (data[edgenode]["certError"]["reason"]).red + }else{ + var cert = ("Unknown reason").red + } }else{ var cert = ("Cert Valid (" + data[edgenode]["cert"]["valid_to"] + ")").green } diff --git a/package.json b/package.json index 9a15871..3caaed5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.11", + "version": "0.24.0-rc.12", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 32eaaa2c5731c20093c12fde4c92d58bacda377a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 9 Jan 2022 01:28:35 -0800 Subject: [PATCH 183/214] pins colors to v1.4.0 --- package-lock.json | 2951 +++++++++++++++++++++++++++++++++++++-------- package.json | 4 +- 2 files changed, 2441 insertions(+), 514 deletions(-) diff --git a/package-lock.json b/package-lock.json index fcd7bc1..db56a60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,2167 @@ { "name": "surge", -<<<<<<< HEAD - "version": "0.23.0", -======= - "version": "0.21.7", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 - "lockfileVersion": 1, + "version": "0.23.1", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "surge", + "version": "0.23.1", + "license": "ISC", + "dependencies": { + "cli-table3": "^0.5.1", + "colors": "1.4.0", + "inquirer": "^6.2.2", + "is-domain": "0.0.1", + "minimist": "1.2.3", + "moniker": "0.1.2", + "netrc": "0.1.4", + "progress": "1.1.8", + "read": "1.0.5", + "request": "^2.88.0", + "split": "0.3.1", + "surge-fstream-ignore": "^1.0.6", + "surge-ignore": "0.2.0", + "tarr": "1.1.0", + "url-parse-as-address": "1.0.0" + }, + "bin": { + "surge": "lib/cli.js" + }, + "devDependencies": { + "commander": "2.9.0", + "mocha": "^8.3.2", + "nixt": "^0.5.1", + "should": "7.1.0", + "yargs": "3.30.0" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-domain": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", + "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.3.tgz", + "integrity": "sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw==" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mocha": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", + "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 10.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/mocha/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/mocha/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moniker": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", + "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "node_modules/nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/netrc": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" + }, + "node_modules/nixt": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/nixt/-/nixt-0.5.1.tgz", + "integrity": "sha512-FlRpYm9sopR+aN05WSTZUA68nolYbH1MRB8JnQfDquToyo1YJCTJvhKnQzNZV3XLHKcLVURWWtMgAJr5IZ2wUg==", + "dev": true, + "dependencies": { + "assertion-error": "~1.0.0", + "clone": "^1.0.2", + "shell-quote": "^1.4.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/read": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", + "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "node_modules/should": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/should/-/should-7.1.0.tgz", + "integrity": "sha1-WUGumqZnW+JAZ9QywCryEMzZx3I=", + "dev": true, + "dependencies": { + "should-equal": "0.5.0", + "should-format": "0.3.0", + "should-type": "0.2.0" + } + }, + "node_modules/should-equal": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", + "integrity": "sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=", + "dev": true, + "dependencies": { + "should-type": "0.2.0" + } + }, + "node_modules/should-format": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", + "integrity": "sha1-QgB+wKochupEkUzJER8bnyfTzqw=", + "dev": true, + "dependencies": { + "should-type": "0.2.0" + } + }, + "node_modules/should-type": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", + "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + }, + "node_modules/split": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.1.tgz", + "integrity": "sha1-zrzxQr9hu7ZLFBYo5ttIKikUZUw=", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/surge-fstream-ignore": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/surge-fstream-ignore/-/surge-fstream-ignore-1.0.6.tgz", + "integrity": "sha512-hNN52cz2fYCAzhlHmWPn4aE3bFbpBt01AkWFLljrtSzFvxlipLAeLuLtQ3t4f0RKoUkjzXWCAFK13WoET2iM1A==", + "dependencies": { + "fstream": ">=1.0.12", + "inherits": "2", + "minimatch": "^3.0.0" + } + }, + "node_modules/surge-ignore": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", + "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" + }, + "node_modules/tarr": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", + "integrity": "sha512-tENbQ43IQckay71stp1p1lljRhoEZpZk10FzEZKW2tJcMcnLwV3CfZdxBAERlH6nwnFvnHMS9eJOJl6IzSsG0g==", + "dependencies": { + "block-stream": "*", + "fstream": ">=1.0.12", + "inherits": "2" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-as-address": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", + "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true, + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/yargs": { + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.30.0.tgz", + "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", + "dev": true, + "dependencies": { + "camelcase": "^1.2.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "window-size": "^0.1.2", + "y18n": "^3.2.0" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@ungap/promise-all-settled": { "version": "1.1.2", @@ -15,11 +2170,11 @@ "dev": true }, "ajv": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", - "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -37,10 +2192,9 @@ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", @@ -66,28 +2220,10 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { "safer-buffer": "~2.1.0" } @@ -114,14 +2250,14 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -146,9 +2282,9 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -188,21 +2324,6 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, "chardet": { @@ -211,15 +2332,9 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { -<<<<<<< HEAD "version": "3.5.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", -======= - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "dev": true, "requires": { "anymatch": "~3.1.1", @@ -248,59 +2363,61 @@ "colors": "^1.1.2", "object-assign": "^4.1.0", "string-width": "^2.1.1" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "optional": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" } } } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -332,9 +2449,9 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { "delayed-stream": "~1.0.0" } @@ -367,7 +2484,6 @@ } }, "debug": { -<<<<<<< HEAD "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", @@ -382,14 +2498,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } -======= - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 } }, "decamelize": { @@ -398,14 +2506,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, -<<<<<<< HEAD - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, -======= ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -432,15 +2532,12 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, -<<<<<<< HEAD "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, -======= ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -452,9 +2549,9 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "requires": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -467,14 +2564,14 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "figures": { "version": "2.0.0", @@ -536,6 +2633,17 @@ "dev": true, "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -551,9 +2659,9 @@ } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -561,16 +2669,6 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - } } }, "glob-parent": { @@ -583,9 +2681,9 @@ } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "graceful-readlink": { "version": "1.0.1", @@ -605,19 +2703,18 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "he": { "version": "1.2.0", @@ -653,14 +2750,14 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "requires": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -668,59 +2765,13 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", - "requires": { - "ansi-regex": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==" - } - } - } } }, "invert-kv": { @@ -750,18 +2801,14 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -779,11 +2826,6 @@ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -801,15 +2843,9 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-yaml": { -<<<<<<< HEAD "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", -======= - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "dev": true, "requires": { "argparse": "^2.0.1" @@ -821,9 +2857,9 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", @@ -835,20 +2871,14 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -871,9 +2901,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "log-symbols": { "version": "4.0.0", @@ -894,9 +2924,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -917,7 +2947,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true -<<<<<<< HEAD + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", @@ -927,22 +2962,20 @@ "requires": { "has-flag": "^4.0.0" } -======= ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 } } }, "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.51.0" } }, "mimic-fn": { @@ -979,35 +3012,22 @@ } }, "mocha": { -<<<<<<< HEAD - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", - "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", -======= - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", - "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", + "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", -<<<<<<< HEAD "chokidar": "3.5.1", "debug": "4.3.1", "diff": "5.0.0", -======= - "chokidar": "3.4.3", - "debug": "4.2.0", - "diff": "4.0.2", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", -<<<<<<< HEAD "js-yaml": "4.0.0", "log-symbols": "4.0.0", "minimatch": "3.0.4", @@ -1021,28 +3041,13 @@ "workerpool": "6.1.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", -======= - "js-yaml": "3.14.0", - "log-symbols": "4.0.0", - "minimatch": "3.0.4", - "ms": "2.1.2", - "nanoid": "3.1.12", - "serialize-javascript": "5.0.1", - "strip-json-comments": "3.1.1", - "supports-color": "7.2.0", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.0.2", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "yargs-unparser": "2.0.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -1074,87 +3079,57 @@ "color-name": "~1.1.4" } }, -<<<<<<< HEAD "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, -======= ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "is-fullwidth-code-point": { -<<<<<<< HEAD -======= - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 + "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "wrap-ansi": { @@ -1208,23 +3183,11 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nanoid": { -<<<<<<< HEAD "version": "3.1.20", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", "dev": true }, - "ncp": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" -======= - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", - "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", - "dev": true ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 - }, "netrc": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", @@ -1294,15 +3257,9 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-limit": { -<<<<<<< HEAD "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", -======= - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", - "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "dev": true, "requires": { "yocto-queue": "^0.1.0" @@ -1334,9 +3291,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "progress": { @@ -1344,25 +3301,10 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" }, -<<<<<<< HEAD - "prompt": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", - "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", - "requires": { - "pkginfo": "0.x.x", - "read": "1.0.x", - "revalidator": "0.1.x", - "utile": "0.2.x", - "winston": "0.8.x" - } - }, -======= ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "punycode": { "version": "2.1.1", @@ -1401,9 +3343,9 @@ } }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1412,7 +3354,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -1422,7 +3364,7 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" } @@ -1443,33 +3385,30 @@ } }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", @@ -1484,27 +3423,12 @@ "requires": { "randombytes": "^2.1.0" } -<<<<<<< HEAD -======= - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 }, "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true }, "should": { "version": "7.1.0", @@ -1542,9 +3466,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, "split": { "version": "0.3.1", @@ -1555,9 +3479,9 @@ } }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1571,23 +3495,35 @@ } }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^4.1.0" } }, "strip-json-comments": { @@ -1597,18 +3533,11 @@ "dev": true }, "supports-color": { -<<<<<<< HEAD - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", -======= - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 - "dev": true, + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" } }, "surge-fstream-ignore": { @@ -1619,19 +3548,6 @@ "fstream": ">=1.0.12", "inherits": "2", "minimatch": "^3.0.0" - }, - "dependencies": { - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - } } }, "surge-ignore": { @@ -1647,19 +3563,6 @@ "block-stream": "*", "fstream": ">=1.0.12", "inherits": "2" - }, - "dependencies": { - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - } } }, "through": { @@ -1685,25 +3588,18 @@ } }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tunnel-agent": { "version": "0.6.0", @@ -1719,9 +3615,9 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } @@ -1732,9 +3628,9 @@ "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "verror": { "version": "1.10.0", @@ -1771,15 +3667,9 @@ "dev": true }, "workerpool": { -<<<<<<< HEAD "version": "6.1.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", -======= - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", - "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", ->>>>>>> 4007cda2e29acbddb6a712277a799471232c4271 "dev": true }, "wrap-ansi": { @@ -1790,6 +3680,43 @@ "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "wrappy": { @@ -1836,9 +3763,9 @@ }, "dependencies": { "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "decamelize": { diff --git a/package.json b/package.json index f6eab80..cd40985 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.23.0", + "version": "0.23.1", "description": "CDN for front-end developers", "author": "Brock Whitten ", "bin": "./lib/cli.js", "dependencies": { "cli-table3": "^0.5.1", - "colors": "^1.4.0", + "colors": "1.4.0", "inquirer": "^6.2.2", "is-domain": "0.0.1", "minimist": "1.2.3", From d59dd9ba7af77aca6ecad9dee46599f9a0855f6a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 10 Jan 2022 11:18:33 -0800 Subject: [PATCH 184/214] patches colors vulnerability --- package-lock.json | 790 +++++++++++++++++++++++----------------------- package.json | 8 +- 2 files changed, 401 insertions(+), 397 deletions(-) diff --git a/package-lock.json b/package-lock.json index e5ecd40..427504e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.7", + "version": "0.24.0-rc.13", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -11,11 +11,11 @@ "dev": true }, "ajv": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", - "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -28,15 +28,23 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -49,28 +57,10 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { "safer-buffer": "~2.1.0" } @@ -97,9 +87,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "babar": { "version": "0.2.0", @@ -117,9 +107,9 @@ } }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -144,9 +134,9 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -168,9 +158,9 @@ "dev": true }, "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "caseless": { @@ -178,78 +168,97 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, "requires": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "readdirp": "~3.6.0" } }, "cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "colors": "1.4.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "optional": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" } } } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -262,15 +271,30 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { "delayed-stream": "~1.0.0" } @@ -303,9 +327,9 @@ } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -320,9 +344,9 @@ } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true }, "delayed-stream": { @@ -348,8 +372,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "escalade": { "version": "3.1.1", @@ -357,6 +380,12 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -368,14 +397,14 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fill-range": { "version": "7.0.1", @@ -455,9 +484,9 @@ } }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -468,18 +497,18 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "graceful-readlink": { "version": "1.0.1", @@ -499,11 +528,11 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -544,9 +573,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "invert-kv": { "version": "1.0.0", @@ -575,18 +604,14 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -609,6 +634,12 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -621,9 +652,9 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -635,9 +666,9 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", @@ -649,20 +680,14 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -690,70 +715,26 @@ } }, "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.51.0" } }, "minimatch": { @@ -785,85 +766,57 @@ } }, "mocha": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.0.tgz", - "integrity": "sha512-TQqyC89V1J/Vxx0DhJIXlq9gbbL9XFNdeLQ1+JsnZsVaSOV1z3tWfw0qZmQJGQRIfkvZcs7snQnZnOCKoldq1Q==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", + "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.1", - "debug": "4.3.1", + "chokidar": "3.5.2", + "debug": "4.3.2", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.6", + "glob": "7.1.7", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.1.20", - "serialize-javascript": "5.0.1", + "nanoid": "3.1.25", + "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.1.0", + "workerpool": "6.1.5", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -871,42 +824,25 @@ "dev": true }, "string-width": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", - "integrity": "sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -936,14 +872,14 @@ "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", + "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", "dev": true }, "netrc": { @@ -979,11 +915,6 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1036,9 +967,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "progress": { @@ -1047,18 +978,18 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "punycode": { "version": "2.1.1", @@ -1088,18 +1019,18 @@ } }, "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" } }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1108,7 +1039,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -1118,7 +1049,7 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" } @@ -1138,9 +1069,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", @@ -1148,25 +1079,19 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { "randombytes": "^2.1.0" } }, "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true }, "should": { "version": "7.1.0", @@ -1217,9 +1142,9 @@ } }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1233,23 +1158,21 @@ } }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { @@ -1327,19 +1250,12 @@ } }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tunnel-agent": { @@ -1356,9 +1272,9 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } @@ -1369,9 +1285,9 @@ "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "verror": { "version": "1.10.0", @@ -1392,15 +1308,6 @@ "isexe": "^2.0.0" } }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", @@ -1408,19 +1315,54 @@ "dev": true }, "workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", + "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", "dev": true }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "wrappy": { @@ -1434,9 +1376,9 @@ "integrity": "sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ==" }, "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yargs": { @@ -1451,6 +1393,82 @@ "os-locale": "^1.4.0", "window-size": "^0.1.2", "y18n": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + } } }, "yargs-parser": { @@ -1469,20 +1487,6 @@ "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - } } }, "yocto-queue": { diff --git a/package.json b/package.json index 3caaed5..fb4f9c7 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "surge", - "version": "0.24.0-rc.12", + "version": "0.24.0-rc.13", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", "dependencies": { "babar": "^0.2.0", - "cli-table3": "^0.5.1", - "colors": "^1.4.0", + "cli-table3": "0.6.1", + "colors": "1.4.0", "human-readable-numbers": "^0.9.5", "prompts": "*", "is-domain": "0.0.1", @@ -24,7 +24,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "8.3.0", + "mocha": "9.1.3", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From cf4ec45676e468b32902b94ed6536180bdbf7ed1 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 21 Aug 2022 20:22:18 -0700 Subject: [PATCH 185/214] adds surge-stream, bumps surge-sdk --- lib/middleware/deploy.js | 3 +- package-lock.json | 76 ++++++++++++++++++++++++++++------------ package.json | 5 +-- test/basic.js | 6 +++- 4 files changed, 64 insertions(+), 26 deletions(-) diff --git a/lib/middleware/deploy.js b/lib/middleware/deploy.js index cd21668..2ee9479 100644 --- a/lib/middleware/deploy.js +++ b/lib/middleware/deploy.js @@ -3,6 +3,7 @@ var helpers = require('../util/helpers') var localCreds = require("../util/creds.js") var surge = require('../surge') var surgeSDK = require("surge-sdk") +var surgeStream = require("surge-stream") var ProgressBar = require("progress") var fs = require("fs") @@ -17,7 +18,7 @@ module.exports = function(req, next){ var sdk = surgeSDK({ endpoint: req.endpoint.format(), defaults: helpers.defaults - }) + }, surgeStream) /** diff --git a/package-lock.json b/package-lock.json index 427504e..cbea89d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.13", + "version": "0.24.0-rc.14", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -91,6 +91,14 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, "babar": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/babar/-/babar-0.2.0.tgz", @@ -128,7 +136,7 @@ "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", "requires": { "inherits": "~2.0.0" } @@ -431,6 +439,11 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -484,16 +497,26 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "glob-parent": { @@ -506,9 +529,9 @@ } }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "graceful-readlink": { "version": "1.0.1", @@ -751,17 +774,17 @@ "integrity": "sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw==" }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "dependencies": { "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" } } }, @@ -1206,10 +1229,19 @@ "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, "surge-sdk": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.3.3.tgz", - "integrity": "sha512-YqHqBfrL/AeiYuyxRQbTy2v1VC6Llp8wUiYHo2eeiiSUfQfTB0QrfMv+dk3lziExdQWKAWq/kjxgGhN/w/BKPQ==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.5.2.tgz", + "integrity": "sha512-Ujn4Z3meANp/PQ/2o25/RhHeY9rCODM6FJ9M/7JWXh10jKwUPb/mEZPkEo8ISwN+2n3TWhNsnxjh2Z/qDJCmXQ==", + "requires": { + "axios": "^0.21.1" + } + }, + "surge-stream": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/surge-stream/-/surge-stream-0.5.2.tgz", + "integrity": "sha512-WhgsFLqEslsu8JdqBMHxaDlhKAqTP8tbCbkGXH3uyQ/qgQH4OJFZZtkoe4fJvhlPFevQQdAN+S73DfF73fXuSA==", "requires": { + "axios": "^0.21.1", "request": "^2.88.0", "split": "^1.0.1", "surge-fstream-ignore": "^1.0.6", @@ -1221,7 +1253,7 @@ "surge-ignore": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", - "integrity": "sha1-METmyiMw81hAHihfkAxtKM9e3C4=" + "integrity": "sha512-tFq03FSTC2w6iVyJkzgFzwa2+lW4DZheIvStTO4Vn82Mk1x9aJyt/WUz5sKZE9woCn5dPB7nLARVFqJXDv5trA==" } } }, @@ -1238,7 +1270,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "to-regex-range": { "version": "5.0.1", @@ -1498,7 +1530,7 @@ "zlib": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", - "integrity": "sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA=" + "integrity": "sha512-40fpE2II+Cd3k8HWTWONfeKE2jL+P42iWJ1zzps5W51qcTsOUKM5Q5m2PFb0CLxlmFAaUuUdJGc3OfZy947v0w==" } } } diff --git a/package.json b/package.json index fb4f9c7..bc7dcbf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.13", + "version": "0.24.0-rc.14", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", @@ -18,7 +18,8 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.3.3", + "surge-sdk": "0.5.2", + "surge-stream": "0.5.2", "url-parse-as-address": "1.0.0", "xbytes": "^1.7.0" }, diff --git a/test/basic.js b/test/basic.js index 247df61..42f375a 100644 --- a/test/basic.js +++ b/test/basic.js @@ -5,6 +5,8 @@ var pkg = require('../package.json') var endpoint = typeof process.env.ENDPOINT !== 'undefined' ? ' -e ' + process.env.ENDPOINT + ' ' : ' ' var surge = 'node ' + pkg.bin + endpoint +console.log(surge) + var opts = { colors: false, newlines: false @@ -29,12 +31,14 @@ describe("surge " + testid + " using " + user, function () { describe("helpers", function(){ - it('should catch invalid arguments', function (done) { + it.skip('should catch invalid arguments', function (done) { nixt({ colors: false }) .run(surge + '--foo') .expect(function (result) { should(result.stdout).match(/foo/) should(result.stdout).match(/not/) + }).catch(function(result){ + console.log(result) }).end(done) }) From 3bffb1dc92a45e6b5d8db4d5262e3343f03b7e9a Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 21 Aug 2022 20:25:03 -0700 Subject: [PATCH 186/214] bumps minimist and mocha --- package-lock.json | 204 +++++++++++++--------------------------------- package.json | 4 +- 2 files changed, 58 insertions(+), 150 deletions(-) diff --git a/package-lock.json b/package-lock.json index cbea89d..5cb4256 100644 --- a/package-lock.json +++ b/package-lock.json @@ -198,9 +198,9 @@ } }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -231,40 +231,6 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } } }, "clone": { @@ -335,9 +301,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -539,12 +505,6 @@ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -623,7 +583,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { @@ -663,12 +623,6 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -769,9 +723,9 @@ } }, "minimist": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.3.tgz", - "integrity": "sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mkdirp": { "version": "0.5.6", @@ -789,47 +743,39 @@ } }, "mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", - "growl": "1.10.5", + "glob": "7.2.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -838,32 +784,37 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } } }, "yargs": { @@ -900,9 +851,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, "netrc": { @@ -1080,7 +1031,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "rimraf": { @@ -1331,15 +1282,6 @@ "extsprintf": "^1.2.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", @@ -1347,9 +1289,9 @@ "dev": true }, "workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "wrap-ansi": { @@ -1361,40 +1303,6 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } } }, "wrappy": { diff --git a/package.json b/package.json index bc7dcbf..fd30405 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "human-readable-numbers": "^0.9.5", "prompts": "*", "is-domain": "0.0.1", - "minimist": "1.2.3", + "minimist": "1.2.6", "moniker": "0.1.2", "netrc": "0.1.4", "progress": "2.0.3", @@ -25,7 +25,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "9.1.3", + "mocha": "10.0.0", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From 3a12ae11ffef2eab9d6ff6524dbe06c2b85d8788 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Mon, 22 Aug 2022 08:42:37 -0700 Subject: [PATCH 187/214] version bump 0.24.0-rc.15 --- lib/middleware/encrypt.js | 7 ++++--- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/middleware/encrypt.js b/lib/middleware/encrypt.js index 169b4c1..79baead 100644 --- a/lib/middleware/encrypt.js +++ b/lib/middleware/encrypt.js @@ -1,6 +1,7 @@ -var helpers = require("../util/helpers.js") -var surgeSDK = require("surge-sdk") +var helpers = require("../util/helpers.js") +var surgeSDK = require("surge-sdk") +var surgeStream = require("surge-stream") module.exports = function(req, next){ @@ -11,7 +12,7 @@ module.exports = function(req, next){ var sdk = surgeSDK({ endpoint: req.endpoint.format(), defaults: helpers.defaults - }) + }, surgeStream) var domain = req.argv["_"][0] diff --git a/package-lock.json b/package-lock.json index 5cb4256..5f90673 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.14", + "version": "0.24.0-rc.15", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fd30405..5d516dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0-rc.14", + "version": "0.24.0-rc.15", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From c0a59bdf1a5188b0754daa89708946c08ed0c716 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 11 Aug 2023 13:23:48 -0700 Subject: [PATCH 188/214] bug fix when busting cache --- lib/middleware/bust.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/middleware/bust.js b/lib/middleware/bust.js index 02f1bbe..a2284c1 100644 --- a/lib/middleware/bust.js +++ b/lib/middleware/bust.js @@ -27,6 +27,7 @@ module.exports = function(req, next){ sdk.bust(domain, { user: "token", pass: req.creds.token }, function(error, response){ // response.confirmed = ["sfo-11", "jfk-08", "ams-14"] // response.unconfirmed = ["yyz-16"] + //console.log(error, response) if (error){ helpers.space() helpers.trunc("Error".red + (" - " + error.messages.join(", ")).grey) @@ -38,7 +39,7 @@ module.exports = function(req, next){ helpers.trunc("⦿ Busting cache".green + " " + domain.underline.grey) helpers.displayServers(response.instances) }else{ - helpers.trunc("⦿ Bust".yellow) + helpers.trunc("⦿ Bust".yellow + " " + domain.grey) helpers.displayServers(response.instances) helpers.trunc("Cache not Busted".yellow) } From c24b6b1a7743966c2bd4a1587b64e8415879138f Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Fri, 11 Aug 2023 13:28:45 -0700 Subject: [PATCH 189/214] cleanup --- package-lock.json | 1444 ++++++++++++++++++++++++++++++--------------- 1 file changed, 966 insertions(+), 478 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f90673..6712dcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,472 +1,669 @@ { "name": "surge", "version": "0.24.0-rc.15", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@ungap/promise-all-settled": { + "packages": { + "": { + "name": "surge", + "version": "0.24.0-rc.15", + "license": "ISC", + "dependencies": { + "babar": "^0.2.0", + "cli-table3": "0.6.1", + "colors": "1.4.0", + "human-readable-numbers": "^0.9.5", + "is-domain": "0.0.1", + "minimist": "1.2.6", + "moniker": "0.1.2", + "netrc": "0.1.4", + "progress": "2.0.3", + "prompts": "*", + "read": "1.0.5", + "request": "^2.88.0", + "surge-ignore": "0.2.0", + "surge-sdk": "0.5.2", + "surge-stream": "0.5.2", + "url-parse-as-address": "1.0.0", + "xbytes": "^1.7.0" + }, + "bin": { + "surge": "bin/surge" + }, + "devDependencies": { + "commander": "2.9.0", + "mocha": "10.0.0", + "nixt": "^0.5.1", + "should": "7.1.0", + "yargs": "3.30.0" + } + }, + "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "ajv": { + "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ansi-colors": { + "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "anymatch": { + "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "argparse": { + "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "asn1": { + "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { + "dependencies": { "safer-buffer": "~2.1.0" } }, - "assert-plus": { + "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } }, - "assertion-error": { + "node_modules/assertion-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "asynckit": { + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "aws-sign2": { + "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } }, - "aws4": { + "node_modules/aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, - "axios": { + "node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { + "dependencies": { "follow-redirects": "^1.14.0" } }, - "babar": { + "node_modules/babar": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/babar/-/babar-0.2.0.tgz", "integrity": "sha512-bH01czBTWEbf7Q6qje/4raQEG14jhPTQJmpj1Uxzw92VCr9yQcCWN+SbKTg34aOvWDs6wrhjfr6SGC8AaeSzaA==", - "requires": { - "colors": "~0.6.2" - }, "dependencies": { - "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" - } + "colors": "~0.6.2" } }, - "balanced-match": { + "node_modules/babar/node_modules/colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "bcrypt-pbkdf": { + "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { + "dependencies": { "tweetnacl": "^0.14.3" } }, - "binary-extensions": { + "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "block-stream": { + "node_modules/block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", - "requires": { + "dependencies": { "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" } }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "requires": { + "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "browser-stdout": { + "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "camelcase": { + "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "caseless": { + "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "chalk": { + "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "chokidar": { + "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "requires": { + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "cli-table3": { + "node_modules/cli-table3": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", - "requires": { - "colors": "1.4.0", + "dependencies": { "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "1.4.0" } }, - "cliui": { + "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "requires": { + "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, - "clone": { + "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, - "code-point-at": { + "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "color-convert": { + "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { + "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colors": { + "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } }, - "combined-stream": { + "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { + "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commander": { + "node_modules/commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, - "requires": { + "dependencies": { "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" } }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "dashdash": { + "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, - "debug": { + "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "requires": { + "dependencies": { "ms": "2.1.2" }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "decamelize": { + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "delayed-stream": { + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } }, - "diff": { + "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "ecc-jsbn": { + "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { + "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "emoji-regex": { + "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "escalade": { + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "extend": { + "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extsprintf": { + "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] }, - "fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fill-range": { + "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "find-up": { + "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "flat": { + "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true + "dev": true, + "bin": { + "flat": "cli.js" + } }, - "follow-redirects": { + "node_modules/follow-redirects": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "forever-agent": { + "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } }, - "form-data": { + "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { + "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "fstream": { + "node_modules/fstream": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" + }, + "engines": { + "node": ">=0.6" } }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "getpass": { + "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0" } }, - "glob": { + "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", @@ -474,280 +671,368 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - } + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { + "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "requires": { + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "graceful-readlink": { + "node_modules/graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, - "har-schema": { + "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } }, - "har-validator": { + "node_modules/har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { + "deprecated": "this library is no longer supported", + "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "has-flag": { + "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "he": { + "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "dev": true, + "bin": { + "he": "bin/he" + } }, - "http-signature": { + "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "human-readable-numbers": { + "node_modules/human-readable-numbers": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/human-readable-numbers/-/human-readable-numbers-0.9.5.tgz", "integrity": "sha512-VC1uYLm7FR+4UkLaQdXPLodz7xTVLBte3X6iMCYK/uPJywoHyEZfR40+kCN4YqYd+FNCPJAJNYv2CSMvAprgsQ==" }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "invert-kv": { + "node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-domain": { + "node_modules/is-domain": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", "integrity": "sha1-f/sojVzO1rB8Ty35HJvpFTURNI4=" }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } }, - "is-glob": { + "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-number": { + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "is-plain-obj": { + "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-typedarray": { + "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-unicode-supported": { + "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "isstream": { + "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "js-yaml": { + "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "requires": { + "dependencies": { "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsbn": { + "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, - "json-schema": { + "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, - "json-schema-traverse": { + "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "json-stringify-safe": { + "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsprim": { + "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { + "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, - "kleur": { + "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } }, - "lcid": { + "node_modules/lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, - "requires": { + "dependencies": { "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "locate-path": { + "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "log-symbols": { + "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "requires": { + "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "mime-db": { + "node_modules/mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "requires": { + "dependencies": { "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, - "mkdirp": { + "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { + "dependencies": { "minimist": "^1.2.6" }, - "dependencies": { - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - } + "bin": { + "mkdirp": "bin/cmd.js" } }, - "mocha": { + "node_modules/mkdirp/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/mocha": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", "dev": true, - "requires": { + "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -771,241 +1056,325 @@ "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "dependencies": { - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - } - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "moniker": { + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moniker": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", - "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=" + "integrity": "sha1-hy37pXXc6o+gSlE1sT1fJL7MyX4=", + "engines": { + "node": "*" + } }, - "ms": { + "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "mute-stream": { + "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, - "nanoid": { + "node_modules/nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "netrc": { + "node_modules/netrc": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" }, - "nixt": { + "node_modules/nixt": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/nixt/-/nixt-0.5.1.tgz", "integrity": "sha512-FlRpYm9sopR+aN05WSTZUA68nolYbH1MRB8JnQfDquToyo1YJCTJvhKnQzNZV3XLHKcLVURWWtMgAJr5IZ2wUg==", "dev": true, - "requires": { + "dependencies": { "assertion-error": "~1.0.0", "clone": "^1.0.2", "shell-quote": "^1.4.1" } }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "number-is-nan": { + "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "oauth-sign": { + "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { + "dependencies": { "wrappy": "1" } }, - "os-locale": { + "node_modules/os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, - "requires": { + "dependencies": { "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "p-limit": { + "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "requires": { + "dependencies": { "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } }, - "performance-now": { + "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "progress": { + "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } }, - "prompts": { + "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "requires": { + "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, - "psl": { + "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "punycode": { + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } }, - "qs": { + "node_modules/qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "^5.1.0" } }, - "read": { + "node_modules/read": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", "integrity": "sha1-AHo9FpR4qnEKSRcn5FPv+5LnYgM=", - "requires": { + "dependencies": { "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" } }, - "readdirp": { + "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "request": { + "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", "caseless": "~0.12.0", @@ -1026,100 +1395,126 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "serialize-javascript": { + "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "requires": { + "dependencies": { "randombytes": "^2.1.0" } }, - "shell-quote": { + "node_modules/shell-quote": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, - "should": { + "node_modules/should": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/should/-/should-7.1.0.tgz", "integrity": "sha1-WUGumqZnW+JAZ9QywCryEMzZx3I=", "dev": true, - "requires": { + "dependencies": { "should-equal": "0.5.0", "should-format": "0.3.0", "should-type": "0.2.0" } }, - "should-equal": { + "node_modules/should-equal": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", "integrity": "sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=", "dev": true, - "requires": { + "dependencies": { "should-type": "0.2.0" } }, - "should-format": { + "node_modules/should-format": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", "integrity": "sha1-QgB+wKochupEkUzJER8bnyfTzqw=", "dev": true, - "requires": { + "dependencies": { "should-type": "0.2.0" } }, - "should-type": { + "node_modules/should-type": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", "dev": true }, - "sisteransi": { + "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, - "split": { + "node_modules/split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { + "dependencies": { "through": "2" + }, + "engines": { + "node": "*" } }, - "sshpk": { + "node_modules/sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { + "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", @@ -1129,69 +1524,95 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "string-width": { + "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { + "dependencies": { "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-json-comments": { + "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "surge-fstream-ignore": { + "node_modules/surge-fstream-ignore": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/surge-fstream-ignore/-/surge-fstream-ignore-1.0.6.tgz", "integrity": "sha512-hNN52cz2fYCAzhlHmWPn4aE3bFbpBt01AkWFLljrtSzFvxlipLAeLuLtQ3t4f0RKoUkjzXWCAFK13WoET2iM1A==", - "requires": { + "dependencies": { "fstream": ">=1.0.12", "inherits": "2", "minimatch": "^3.0.0" } }, - "surge-ignore": { + "node_modules/surge-ignore": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", "integrity": "sha1-Wn+KIKcRiM+edaLP6OsYLekNrzs=" }, - "surge-sdk": { + "node_modules/surge-sdk": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.5.2.tgz", "integrity": "sha512-Ujn4Z3meANp/PQ/2o25/RhHeY9rCODM6FJ9M/7JWXh10jKwUPb/mEZPkEo8ISwN+2n3TWhNsnxjh2Z/qDJCmXQ==", - "requires": { + "dependencies": { "axios": "^0.21.1" } }, - "surge-stream": { + "node_modules/surge-stream": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/surge-stream/-/surge-stream-0.5.2.tgz", "integrity": "sha512-WhgsFLqEslsu8JdqBMHxaDlhKAqTP8tbCbkGXH3uyQ/qgQH4OJFZZtkoe4fJvhlPFevQQdAN+S73DfF73fXuSA==", - "requires": { + "dependencies": { "axios": "^0.21.1", "request": "^2.88.0", "split": "^1.0.1", @@ -1199,246 +1620,313 @@ "surge-ignore": "^0.3.0", "tarr": "^1.1.0", "zlib": "^1.0.5" - }, - "dependencies": { - "surge-ignore": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", - "integrity": "sha512-tFq03FSTC2w6iVyJkzgFzwa2+lW4DZheIvStTO4Vn82Mk1x9aJyt/WUz5sKZE9woCn5dPB7nLARVFqJXDv5trA==" - } } }, - "tarr": { + "node_modules/surge-stream/node_modules/surge-ignore": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", + "integrity": "sha512-tFq03FSTC2w6iVyJkzgFzwa2+lW4DZheIvStTO4Vn82Mk1x9aJyt/WUz5sKZE9woCn5dPB7nLARVFqJXDv5trA==" + }, + "node_modules/tarr": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", "integrity": "sha512-tENbQ43IQckay71stp1p1lljRhoEZpZk10FzEZKW2tJcMcnLwV3CfZdxBAERlH6nwnFvnHMS9eJOJl6IzSsG0g==", - "requires": { + "dependencies": { "block-stream": "*", "fstream": ">=1.0.12", "inherits": "2" } }, - "through": { + "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "tough-cookie": { + "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { + "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "tunnel-agent": { + "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { + "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tweetnacl": { + "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "url-parse-as-address": { + "node_modules/url-parse-as-address": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", "integrity": "sha1-+4CQGIPzOLPL7TU49fqiatr38uc=" }, - "uuid": { + "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } }, - "verror": { + "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, - "window-size": { + "node_modules/window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true + "dev": true, + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } }, - "workerpool": { + "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "xbytes": { + "node_modules/xbytes": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/xbytes/-/xbytes-1.7.0.tgz", - "integrity": "sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ==" + "integrity": "sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ==", + "engines": { + "node": ">=1" + } }, - "y18n": { + "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yargs": { + "node_modules/yargs": { "version": "3.30.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.30.0.tgz", "integrity": "sha1-Xsgu+Mcpb+AvoO43hj9tnZ4krO8=", "dev": true, - "requires": { + "dependencies": { "camelcase": "^1.2.1", "cliui": "^3.0.3", "decamelize": "^1.1.1", "os-locale": "^1.4.0", "window-size": "^0.1.2", "y18n": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - } } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yargs-unparser": { + "node_modules/yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/yargs/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "yocto-queue": { + "node_modules/yargs/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "zlib": { + "node_modules/zlib": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", - "integrity": "sha512-40fpE2II+Cd3k8HWTWONfeKE2jL+P42iWJ1zzps5W51qcTsOUKM5Q5m2PFb0CLxlmFAaUuUdJGc3OfZy947v0w==" + "integrity": "sha512-40fpE2II+Cd3k8HWTWONfeKE2jL+P42iWJ1zzps5W51qcTsOUKM5Q5m2PFb0CLxlmFAaUuUdJGc3OfZy947v0w==", + "hasInstallScript": true, + "engines": { + "node": ">=0.2.0" + } } } } From 7032004b577b19796c1f818d9c35c1e173a33cf7 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 15:50:00 -0700 Subject: [PATCH 190/214] updates mocha --- package-lock.json | 159 ++++++++++++++++++++-------------------------- package.json | 2 +- 2 files changed, 70 insertions(+), 91 deletions(-) diff --git a/package-lock.json b/package-lock.json index a051abd..d32d6d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,17 +32,12 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "10.0.0", + "mocha": "10.7.3", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "dev": true, - "license": "ISC" - }, "node_modules/ajv": { "version": "6.12.6", "license": "MIT", @@ -58,9 +53,10 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -382,9 +378,10 @@ } }, "node_modules/debug": { - "version": "4.3.4", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -399,8 +396,9 @@ }, "node_modules/debug/node_modules/ms": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/decamelize": { "version": "4.0.0", @@ -421,9 +419,10 @@ } }, "node_modules/diff": { - "version": "5.0.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -921,32 +920,31 @@ "license": "MIT" }, "node_modules/mocha": { - "version": "10.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -954,46 +952,42 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1001,14 +995,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", "dev": true, @@ -1038,17 +1024,6 @@ "version": "0.0.8", "license": "ISC" }, - "node_modules/nanoid": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/netrc": { "version": "0.1.4", "license": "MIT" @@ -1200,8 +1175,9 @@ }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -1297,9 +1273,10 @@ "license": "MIT" }, "node_modules/serialize-javascript": { - "version": "6.0.0", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -1552,9 +1529,10 @@ } }, "node_modules/workerpool": { - "version": "6.2.1", - "dev": true, - "license": "Apache-2.0" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -1605,9 +1583,10 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } diff --git a/package.json b/package.json index 593165a..0156b14 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "devDependencies": { "commander": "2.9.0", - "mocha": "10.0.0", + "mocha": "10.7.3", "nixt": "^0.5.1", "should": "7.1.0", "yargs": "3.30.0" From 12089f26c321753817ba458cc8ad4c07b2cc1c95 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 15:51:59 -0700 Subject: [PATCH 191/214] npm audit fix --- package-lock.json | 47 ++++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index d32d6d8..0ba39f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -194,11 +194,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -478,9 +479,10 @@ "license": "MIT" }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -512,14 +514,15 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.1", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -621,16 +624,6 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/graceful-fs": { "version": "4.2.10", "license": "ISC" @@ -754,8 +747,9 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -892,8 +886,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "license": "ISC", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -915,10 +910,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mkdirp/node_modules/minimist": { - "version": "1.2.6", - "license": "MIT" - }, "node_modules/mocha": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", @@ -1167,8 +1158,9 @@ } }, "node_modules/qs": { - "version": "6.5.2", - "license": "BSD-3-Clause", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "engines": { "node": ">=0.6" } @@ -1453,8 +1445,9 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, From e6e553667e0b7eb342d64d42681e5d72d1f180e1 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 15:52:26 -0700 Subject: [PATCH 192/214] 0.24.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ba39f0..8591de6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.24.0", + "version": "0.24.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "0.24.0", + "version": "0.24.1", "license": "ISC", "dependencies": { "babar": "^0.2.0", diff --git a/package.json b/package.json index 0156b14..f3e4a5f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.0", + "version": "0.24.1", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 1634386814057689b892a57dda4a91010a7c3566 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 15:56:37 -0700 Subject: [PATCH 193/214] adds preversion, version, postversion hooks --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index f3e4a5f..1510794 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,9 @@ "version": "0.24.1", "description": "Static Web Publishing", "author": "Brock Whitten ", + "preversion": "npm test", + "version": "npm publish", + "postversion": "git push --no-verify && git push --tags --no-verify && git push --no-verify", "bin": "./bin/surge", "dependencies": { "babar": "^0.2.0", From f925e9c17c43b16aac0dde99868a2290a3798594 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 16:03:53 -0700 Subject: [PATCH 194/214] updates package-lock --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8591de6..4960a1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.24.1", + "version": "npm publish", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "0.24.1", + "version": "npm publish", "license": "ISC", "dependencies": { "babar": "^0.2.0", From 0ed03d929d8b0aab0e683dd54099c38c97009c3b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 16:07:06 -0700 Subject: [PATCH 195/214] moves scripts to the correct location --- package-lock.json | 4 ++-- package.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4960a1c..8591de6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "npm publish", + "version": "0.24.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "npm publish", + "version": "0.24.1", "license": "ISC", "dependencies": { "babar": "^0.2.0", diff --git a/package.json b/package.json index 1510794..03d6311 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,6 @@ "version": "0.24.1", "description": "Static Web Publishing", "author": "Brock Whitten ", - "preversion": "npm test", - "version": "npm publish", - "postversion": "git push --no-verify && git push --tags --no-verify && git push --no-verify", "bin": "./bin/surge", "dependencies": { "babar": "^0.2.0", @@ -39,6 +36,9 @@ "test" ], "scripts": { + "preversion": "npm test", + "version": "npm publish", + "postversion": "git push --no-verify && git push --tags --no-verify && git push --no-verify", "test": "mocha ./test/basic.js -t 5000", "test:local": "ENDPOINT='surge.lvh.me' mocha ./test/basic -t 4000" }, From 6bd59948c0d8c0773dd6b60fb32b2dd3425653ff Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 16:11:07 -0700 Subject: [PATCH 196/214] 0.24.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8591de6..b8e5bec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.24.1", + "version": "0.24.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "0.24.1", + "version": "0.24.2", "license": "ISC", "dependencies": { "babar": "^0.2.0", diff --git a/package.json b/package.json index 03d6311..2dd831e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.1", + "version": "0.24.2", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 7886d8345437edbf5364a3086a5564249ced9286 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 16:48:44 -0700 Subject: [PATCH 197/214] adds .npmignore --- .npmignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..30d74d2 --- /dev/null +++ b/.npmignore @@ -0,0 +1 @@ +test \ No newline at end of file From 8863376f3fd3d67b0c6883598e2a3e7019c38be1 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 16:49:22 -0700 Subject: [PATCH 198/214] 0.24.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b8e5bec..7fb33f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.24.2", + "version": "0.24.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "0.24.2", + "version": "0.24.3", "license": "ISC", "dependencies": { "babar": "^0.2.0", diff --git a/package.json b/package.json index 2dd831e..b3f0f50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.2", + "version": "0.24.3", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 87c57b641a7358f98a53aba828a6e965279802df Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 23:14:53 -0700 Subject: [PATCH 199/214] removes old deployment script --- lib/middleware/deploy-old.js | 349 ----------------------------------- 1 file changed, 349 deletions(-) delete mode 100644 lib/middleware/deploy-old.js diff --git a/lib/middleware/deploy-old.js b/lib/middleware/deploy-old.js deleted file mode 100644 index 01afb86..0000000 --- a/lib/middleware/deploy-old.js +++ /dev/null @@ -1,349 +0,0 @@ -var fs = require("fs") -var request = require("request") -var helpers = require('../util/helpers') -var localCreds = require("../util/creds.js") -var tar = require('tarr') -var zlib = require('zlib') -var fsReader = require('surge-fstream-ignore') -var surge = require('../surge') -var ProgressBar = require("progress") -var split = require("split") -var url = require("url") -var ignore = require("surge-ignore") - - -module.exports = function(req, next){ - req.success = false; - - /** - * Some useful metadata - */ - - var headers = { - "version" : req.pkg.version, - "file-count": req.fileCount, - "cmd": req.configuration.cmd, - "project-size": req.projectSize, - "timestamp": new Date().toJSON() - } - - - /** - * Collaborators to add - */ - - if (req.argv.a) - headers["add"] = req.argv.a; - - - /** - * Collaborators to remove - */ - - if (req.argv.r) - headers["rem"] = req.argv.r; - - - /** - * Perform build on server - */ - - if (req.argv.build) - headers["build"] = req.argv.build; - - - /** - * Force Protocol? - */ - - if (req.ssl !== null) - headers["ssl"] = req.ssl - - req.headers = headers - - /** - * Progress Bars - */ - - var progress = {} - - - /** - * Our upload "data" handle - */ - - var tick = function(tick){ - //console.log("tick", tick.toString()) - - if (Object.keys(progress).length > 1) global.ponr = true - - //try { - - try { - var payload = JSON.parse(tick.toString()) - } catch(e) { - //console.log(e) - return; - } - - - if (payload.hasOwnProperty("type") && payload.type === "error") { - console.log() - console.log() - helpers.log(" Processing Error:".yellow, payload.error.filename).log() - - console.log(helpers.stacktrace(payload.error.stack, { lineno: payload.error.lineno })) - helpers.log() - console.log(" ", payload.error.message) - - console.log() - process.exit(1) - req.status = req.status || "Compile Error" - } else - - if (payload.hasOwnProperty("type") && payload.type === "users") { - helpers.log(helpers.smart("users:").grey, payload.users.join(", ")) - } else - - if (payload.hasOwnProperty("type") && payload.type === "collect") { - //console.log("payload:collect", payload) - var msg = (" " + payload.plan.name.underline + " plan requred. ").grey + ("$" + (payload.plan.amount / 100) + "/mo with a " + payload.plan.trial_period_days + " day trial").underline.grey - - helpers.log() - if (payload.hasOwnProperty("perks")) { - helpers.log(msg += "\n\n Includes...".blue) - payload.perks.forEach(function(perk){ - helpers.log((" - " + perk).blue) - }) - helpers.log() - } else { - helpers.log(msg) - } - - req.plan = payload.plan.name - - helpers.payment(req, payload["stripe_pk"], payload.card)(function(token){ - - // can this be passed in? - var uri = url.resolve(req.endpoint, "subscription") - request({ - uri: uri, - method: "PUT", - auth: { - 'user': 'token', - 'pass': req.creds.token, - 'sendImmediately': true - }, - form: { - plan: payload.plan.id, - token: token, - timestamp: req.headers.timestamp - } - }, function(e,r,b){ - if (r.statusCode == 201 || r.statusCode == 200) { - //console.log("here") - if (token === null) console.log() - // var sub = JSON.parse(b) - // console.log(" plan:".grey, sub.plan.name) - } else { - console.log("ERROR") - } - }) - }) - - // prompt for user - } else - if (payload.hasOwnProperty("type") && payload.type === "cert") { - try{ - helpers.log(helpers.smart("encryption:").grey + " " + (payload.data.altnames || []).join(", ") + ( " (" + payload.data.expiresInWords + ")").grey) - } catch(e){ - console.log("ERROR (please report error to support@surge.sh") - console.log(e) - } - } else - - if (payload.hasOwnProperty("type") && payload.type === "ip") { - // req.success = true - // if (payload.data) { - // helpers.log(helpers.smart("IP:").grey + " " + payload.data.ip) - // } - } else - - if (payload.hasOwnProperty("type") && payload.type === "regionInfo") { - req.success = true - //helpers.log(helpers.smart("regions:").grey + " " + Object.keys(payload.regions).join(", ")) - helpers.displayRegions(payload) - - } else - - - if (payload.hasOwnProperty("type") && payload.type === "event_registration") { - if (payload.data) { - console.log() - console.log((" " + payload.data.event.name + " is set!").bold) - - if (payload.data.event.start) - console.log(" start:".grey, payload.data.event.start) - - if (payload.data.event.end) - console.log(" end:".grey, payload.data.event.end) - - if (payload.data.event.website) - console.log(" website:".grey, payload.data.event.website) - - if (payload.data.event.email) - console.log(" email:".grey, payload.data.event.email) - - if (payload.data.event.twitter) - console.log(" twitter:".grey, payload.data.event.twitter) - } - } else - - if (payload.hasOwnProperty("type") && payload.type === "event_participant") { - - if (payload.data) { - console.log() - - // end time - var out = [" You are in ".grey + payload.data.event.name.bold + "!".grey] - if (payload.data.event.endTime) - out.push("Competition ends in ".grey + payload.data.event.endTime.toString().green) - - // output - console.log(out.join(" ")) - - // help bar - out = [" w: ".grey + payload.data.event.website + " e: ".grey + payload.data.event.email] - - // if (payload.data.event.website) - // console.log(" website:".grey, payload.data.event.website) - - // if (payload.data.event.email) - // console.log(" email:".grey, payload.data.event.email) - - if (payload.data.event.twitter) - out.push(" t: ".grey, payload.data.event.twitter) - - console.log(out.join("")) - } - } else - - - - if (payload.hasOwnProperty("type") && payload.type === "subscription") { - if (payload.data) { - //console.log(" plan:".grey, payload.data.plan.name) - } else { - //console.log(" plan:".grey, "Free") - } - } else { - try { - // we have two different display for the progress bars - var displays = { - "upload": helpers.smart('upload:').grey + ' [:bar] :percent eta: :etas'+ ( " (" + req.fileCount +' files, ' + req.projectSize + ' bytes)').grey, - "cdn": helpers.smart('CDN:').grey + ' [:bar] :percent' - } - - // create progress bar (if one doesnt exist) - progress[payload.id] = progress[payload.id] || new ProgressBar(displays[payload.id], { - complete: '=', - incomplete: ' ', - width: 20, - total: payload.total - }) - - // clear file name on last update - var file = payload.written >= payload.total - ? "" - : payload.file - - // refresh view - progress[payload.id].update(payload.written / payload.total, { file: file }) - } catch(e){ - //console.log(e) - } - - } - // } catch(e) { - // console.log("CATCH", e) - // } - } - - var verbose = function(line){ - console.log("N", line.toString()) - } - - - /** - * Upload - */ - - // create upload - var uri = url.resolve(req.endpoint, req.domain) - var handshake = request.put(uri, { headers: headers }) - - // apply basic auth - handshake.auth("token", req.creds.token, true) - - // catch errors - handshake.on('error', console.log) - - // split replies on new line - handshake.pipe(split()) - - // output result - handshake.on("data", tick) - - // done - handshake.on("end", function(){ - if (req.success === true){ - return next() - } else { - helpers.log() - helpers.log() - helpers.log(" Error".red + " - Deployment did not succeed.".grey) - helpers.log() - process.exit(1) - } - - }) - - - handshake.on("response", function(rsp){ - - if (rsp.statusCode == 403) { - helpers.log() - if(rsp.headers.hasOwnProperty("reason")){ - helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) - } else { - helpers.trunc("Aborted".yellow + (" - you do not have permission to publish to " + req.domain.underline).grey) - } - helpers.log() - process.exit(1) - } else if (rsp.statusCode == 401) { - localCreds(req.argv.endpoint).set(null) - helpers.log() - if(rsp.headers.hasOwnProperty("reason")){ - helpers.trunc("Aborted".yellow + " - " + rsp.headers["reason"]) - } else { - helpers.trunc("Aborted".yellow + " - local token has expired and cleared. please try again.") - } - helpers.log() - process.exit(1) - // console.log(rsp.statusCode) - } - }) - - // Read Project - var project = fsReader({ 'path': req.project, ignoreFiles: [".surgeignore"] }) - - // we always ignore .git directory - project.addIgnoreRules(ignore) - - // chain all this together... - project - .pipe(tar.Pack()) - .pipe(zlib.Gzip()) - .pipe(handshake) - -} From 26772c711b49393ecf99a39d80ea1facb21b1d00 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 23:53:04 -0700 Subject: [PATCH 200/214] updates surge-sdk, surge-stream --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b3f0f50..74bba5b 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,8 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.5.2", - "surge-stream": "0.5.2", + "surge-sdk": "0.6.0", + "surge-stream": "0.6.0", "url-parse-as-address": "1.0.0", "xbytes": "^1.7.0" }, From 80337cd85a5fdde947b8e09a6fb8af4d8369db75 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 10 Aug 2024 23:53:57 -0700 Subject: [PATCH 201/214] 0.24.4 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7fb33f4..fd38ed3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.24.3", + "version": "0.24.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "0.24.3", + "version": "0.24.4", "license": "ISC", "dependencies": { "babar": "^0.2.0", diff --git a/package.json b/package.json index 74bba5b..8b36ec2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.3", + "version": "0.24.4", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 3ab9fe6c38585c853023d9f44c1e4bccec70dd49 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 11 Aug 2024 00:45:34 -0700 Subject: [PATCH 202/214] bumps surge-sdk, surge-stream v0.6.2 --- package-lock.json | 80 +++++++++++++++++++++++++++++++++++++---------- package.json | 4 +-- 2 files changed, 65 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd38ed3..c5d32d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,8 +22,8 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.5.2", - "surge-stream": "0.5.2", + "surge-sdk": "0.6.2", + "surge-stream": "0.6.2", "url-parse-as-address": "1.0.0", "xbytes": "^1.7.0" }, @@ -137,10 +137,26 @@ "license": "MIT" }, "node_modules/axios": { - "version": "0.21.4", - "license": "MIT", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", + "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "follow-redirects": "^1.14.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, "node_modules/babar": { @@ -1146,6 +1162,11 @@ "node": ">= 6" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.8.0", "license": "MIT" @@ -1394,12 +1415,35 @@ } }, "node_modules/surge-fstream-ignore": { - "version": "1.0.6", - "license": "ISC", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/surge-fstream-ignore/-/surge-fstream-ignore-1.1.0.tgz", + "integrity": "sha512-A3PZYu/d1/gCQtfI0k8uWQN5/WTKKsIAC1wGtCREbctXjE9cxgORZxJm6TCq/Wy6L1jl6PFQIpf4NidcWSkKMQ==", "dependencies": { - "fstream": ">=1.0.12", - "inherits": "2", - "minimatch": "^3.0.0" + "fstream": "1.0.12", + "inherits": "2.0.4", + "minimatch": "7.4.6" + } + }, + "node_modules/surge-fstream-ignore/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/surge-fstream-ignore/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/surge-ignore": { @@ -1407,20 +1451,22 @@ "license": "MIT" }, "node_modules/surge-sdk": { - "version": "0.5.2", - "license": "ISC", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.6.2.tgz", + "integrity": "sha512-DKX/u6fug0roRRKDga4L4a5UQRxzXeLuD0Mhgj3N/Wo5n8YHllrvlxp3pB7DI7JGm6b/u1Pwd2eF3GDdneluDg==", "dependencies": { - "axios": "^0.21.1" + "axios": "1.7.3" } }, "node_modules/surge-stream": { - "version": "0.5.2", - "license": "ISC", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/surge-stream/-/surge-stream-0.6.2.tgz", + "integrity": "sha512-Y9Y0uDp//Pbnq1zplqo8cq3lVVBE++sVTlkKJwqI3pkfKqlys1EFhWZNLZkK/UDCSfV9azrPI0IaGbwjp4npRw==", "dependencies": { - "axios": "^0.21.1", + "axios": "1.7.3", "request": "^2.88.0", "split": "^1.0.1", - "surge-fstream-ignore": "^1.0.6", + "surge-fstream-ignore": "^1.1.0", "surge-ignore": "^0.3.0", "tarr": "^1.1.0", "zlib": "^1.0.5" diff --git a/package.json b/package.json index 8b36ec2..87cfd7d 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,8 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.6.0", - "surge-stream": "0.6.0", + "surge-sdk": "0.6.2", + "surge-stream": "0.6.2", "url-parse-as-address": "1.0.0", "xbytes": "^1.7.0" }, From 0166210efe6f20bfde0cc0b293932394ee9e7cb1 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 11 Aug 2024 00:46:16 -0700 Subject: [PATCH 203/214] 0.24.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c5d32d0..9ee01ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.24.4", + "version": "0.24.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "0.24.4", + "version": "0.24.5", "license": "ISC", "dependencies": { "babar": "^0.2.0", diff --git a/package.json b/package.json index 87cfd7d..9cbe33e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.4", + "version": "0.24.5", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 8d3dab91fbb2260c501e862cd154dbe9aa211a40 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 11 Aug 2024 18:20:00 -0700 Subject: [PATCH 204/214] updates surge-sdk, surge-stream --- package-lock.json | 896 ++++++++++++++++++++++++++++------------------ package.json | 4 +- 2 files changed, 549 insertions(+), 351 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ee01ea..9ab720b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,8 +22,8 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.6.2", - "surge-stream": "0.6.2", + "surge-sdk": "0.6.4", + "surge-stream": "0.6.4", "url-parse-as-address": "1.0.0", "xbytes": "^1.7.0" }, @@ -40,7 +40,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -63,15 +64,17 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -83,9 +86,10 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -96,45 +100,52 @@ }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/asn1": { "version": "0.2.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/assert-plus": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "engines": { "node": ">=0.8" } }, "node_modules/assertion-error": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha512-wzQs0MF+xNG9ji/rooK2bLg8XVqP+dn/IYX6qgejMtmDNB8JRLL+BoBrd4furQNgPaWhJaQRXyMXGa48lzsGtQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/asynckit": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/aws-sign2": { "version": "0.7.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.11.0", - "license": "MIT" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz", + "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==" }, "node_modules/axios": { "version": "1.7.3", @@ -160,40 +171,42 @@ } }, "node_modules/babar": { - "version": "0.2.0", - "license": "MIT", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babar/-/babar-0.2.3.tgz", + "integrity": "sha512-1hmYKLj+7m5qHsJ3hosOlO7Z5BYe3E8u9u/W2BEqB4kytysuHYuGe5OIrEr7q4Zyg3y3EytFb4YrPZokYSix8g==", "dependencies": { - "colors": "~0.6.2" - } - }, - "node_modules/babar/node_modules/colors": { - "version": "0.6.2", - "engines": { - "node": ">=0.1.90" + "colors": "~1.4.0" } }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/block-stream": { "version": "0.0.9", - "license": "ISC", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", "dependencies": { "inherits": "~2.0.0" }, @@ -202,11 +215,11 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -223,28 +236,29 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, "node_modules/camelcase": { - "version": "6.3.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", "dev": true, - "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/caseless": { "version": "0.12.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -258,8 +272,9 @@ }, "node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -268,15 +283,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -289,13 +299,17 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "node_modules/cli-table3": { "version": "0.6.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "dependencies": { "string-width": "^4.2.0" }, @@ -307,35 +321,86 @@ } }, "node_modules/cliui": { - "version": "7.0.4", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, - "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/code-point-at": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -345,19 +410,22 @@ }, "node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "engines": { "node": ">=0.1.90" } }, "node_modules/combined-stream": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -367,8 +435,9 @@ }, "node_modules/commander": { "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", "dev": true, - "license": "MIT", "dependencies": { "graceful-readlink": ">= 1.0.0" }, @@ -378,15 +447,18 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/core-util-is": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/dashdash": { "version": "1.14.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dependencies": { "assert-plus": "^1.0.0" }, @@ -418,19 +490,18 @@ "dev": true }, "node_modules/decamelize": { - "version": "4.0.0", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/delayed-stream": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } @@ -446,7 +517,8 @@ }, "node_modules/ecc-jsbn": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -454,20 +526,23 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -477,22 +552,26 @@ }, "node_modules/extend": { "version": "3.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" - ], - "license": "MIT" + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fill-range": { "version": "7.1.1", @@ -508,8 +587,9 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -523,8 +603,9 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -550,14 +631,16 @@ }, "node_modules/forever-agent": { "version": "0.6.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "engines": { "node": "*" } }, "node_modules/form-data": { "version": "2.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -569,12 +652,15 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { - "version": "2.3.2", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -585,7 +671,9 @@ }, "node_modules/fstream": { "version": "1.0.12", - "license": "ISC", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", "dependencies": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -598,32 +686,36 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/getpass": { "version": "0.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { - "version": "7.2.3", - "license": "ISC", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -631,8 +723,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -641,24 +734,29 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graceful-readlink": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true }, "node_modules/har-schema": { "version": "2.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "engines": { "node": ">=4" } }, "node_modules/har-validator": { "version": "5.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -669,23 +767,26 @@ }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/http-signature": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -698,11 +799,14 @@ }, "node_modules/human-readable-numbers": { "version": "0.9.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/human-readable-numbers/-/human-readable-numbers-0.9.5.tgz", + "integrity": "sha512-VC1uYLm7FR+4UkLaQdXPLodz7xTVLBte3X6iMCYK/uPJywoHyEZfR40+kCN4YqYd+FNCPJAJNYv2CSMvAprgsQ==" }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -710,20 +814,23 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/invert-kv": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -733,27 +840,31 @@ }, "node_modules/is-domain": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-domain/-/is-domain-0.0.1.tgz", + "integrity": "sha512-hLm9uZUDm/sk0+xZgxyJluSf4B37sg3ivzv4ndTxNCAMnWFUUsHh1u4eh2maEcEvQl3mc65a9pJ/KURGItbLIg==" }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -772,20 +883,23 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-typedarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -795,12 +909,14 @@ }, "node_modules/isstream": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -810,23 +926,28 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "node_modules/json-schema": { "version": "0.4.0", - "license": "(AFL-2.1 OR BSD-3-Clause)" + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/jsprim": { "version": "1.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -839,15 +960,17 @@ }, "node_modules/kleur": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "engines": { "node": ">=6" } }, "node_modules/lcid": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, - "license": "MIT", "dependencies": { "invert-kv": "^1.0.0" }, @@ -857,8 +980,9 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -871,8 +995,9 @@ }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -885,40 +1010,45 @@ } }, "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=10" } }, "node_modules/minimist": { "version": "1.2.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/mkdirp": { "version": "0.5.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { "minimist": "^1.2.6" }, @@ -961,51 +1091,48 @@ "node": ">= 14.0.0" } }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/mocha/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { "node": ">=10" } }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -1020,25 +1147,34 @@ } }, "node_modules/moniker": { - "version": "0.1.2" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/moniker/-/moniker-0.1.2.tgz", + "integrity": "sha512-Uj9iV0QYr6281G+o0TvqhKwHHWB2Q/qUTT4LPQ3qDGc0r8cbMuqQjRXPZuVZ+gcL7APx+iQgE8lcfWPrj1LsLA==", + "engines": { + "node": "*" + } }, "node_modules/ms": { "version": "2.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/mute-stream": { "version": "0.0.8", - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/netrc": { "version": "0.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha512-ye8AIYWQcP9MvoM1i0Z2jV0qed31Z8EWXYnyGNkiUAd+Fo8J+7uy90xTV8g/oAbhtjkY7iZbNTizQaXdKUuwpQ==" }, "node_modules/nixt": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/nixt/-/nixt-0.5.1.tgz", + "integrity": "sha512-FlRpYm9sopR+aN05WSTZUA68nolYbH1MRB8JnQfDquToyo1YJCTJvhKnQzNZV3XLHKcLVURWWtMgAJr5IZ2wUg==", "dev": true, - "license": "MIT", "dependencies": { "assertion-error": "~1.0.0", "clone": "^1.0.2", @@ -1047,38 +1183,43 @@ }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/number-is-nan": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/oauth-sign": { "version": "0.9.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "engines": { "node": "*" } }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/os-locale": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, - "license": "MIT", "dependencies": { "lcid": "^1.0.0" }, @@ -1088,8 +1229,9 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -1102,8 +1244,9 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -1116,27 +1259,31 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/performance-now": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1146,14 +1293,16 @@ }, "node_modules/progress": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "engines": { "node": ">=0.4.0" } }, "node_modules/prompts": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -1168,12 +1317,14 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/psl": { - "version": "1.8.0", - "license": "MIT" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/punycode": { - "version": "2.1.1", - "license": "MIT", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -1197,7 +1348,8 @@ }, "node_modules/read": { "version": "1.0.5", - "license": "BSD", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz", + "integrity": "sha512-hDLATrzYLoMu23c/69pMC6u3fO3Y0qLTIygJkEZHLOn+AO2gSapu6QgrgwX9ehyVtaRoZVZbF4IuiZPPRdGgdg==", "dependencies": { "mute-stream": "~0.0.4" }, @@ -1207,8 +1359,9 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -1218,7 +1371,9 @@ }, "node_modules/request": { "version": "2.88.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1247,15 +1402,18 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/rimraf": { "version": "2.7.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -1263,8 +1421,50 @@ "rimraf": "bin.js" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -1278,12 +1478,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safer-buffer": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/serialize-javascript": { "version": "6.0.2", @@ -1295,14 +1495,19 @@ } }, "node_modules/shell-quote": { - "version": "1.7.3", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, - "license": "MIT" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/should": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/should/-/should-7.1.0.tgz", + "integrity": "sha512-k97DHrbm00+o4e8+y2Lsfyhg3uRj6T/oojDgc9FJ7cRXBRAZg4Ti2ulRu+LD4R0T2iFzoz5ueA+fr/HRflhWYw==", "dev": true, - "license": "MIT", "dependencies": { "should-equal": "0.5.0", "should-format": "0.3.0", @@ -1311,32 +1516,37 @@ }, "node_modules/should-equal": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", + "integrity": "sha512-y+N0u99fC0EjLbWovcpwSziVnzhEEmJo7//4DKM5Ioc0FfqDKnDNNnDXjWCU2G9SoGLnJnfdq0NiOoZFoDBEqA==", "dev": true, - "license": "MIT", "dependencies": { "should-type": "0.2.0" } }, "node_modules/should-format": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.0.tgz", + "integrity": "sha512-lQyKoOZs71IeA+fMEa67ZZSr+g6okF9H6MlVrNb9oI0WR3LFor9IJXj5Dkcydj1GqC7K83osGaqK8PQkEXGg5g==", "dev": true, - "license": "MIT", "dependencies": { "should-type": "0.2.0" } }, "node_modules/should-type": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", + "integrity": "sha512-ixbc1p6gw4W29fp4MifFynWVQvuqfuZjib+y1tWezbjinoXu0eab/rXxLDP6drfZXlz6lZBwuzHJrs/BjLCLuQ==", + "dev": true }, "node_modules/sisteransi": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "node_modules/split": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dependencies": { "through": "2" }, @@ -1345,8 +1555,9 @@ } }, "node_modules/sshpk": { - "version": "1.17.0", - "license": "MIT", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1369,7 +1580,8 @@ }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1381,7 +1593,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1391,8 +1604,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -1402,8 +1616,9 @@ }, "node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1424,14 +1639,6 @@ "minimatch": "7.4.6" } }, - "node_modules/surge-fstream-ignore/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/surge-fstream-ignore/node_modules/minimatch": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", @@ -1448,37 +1655,39 @@ }, "node_modules/surge-ignore": { "version": "0.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.2.0.tgz", + "integrity": "sha512-ay4MPFjfiQzDsyTidljJLXQi22l2AwjcuamYnJWj/LdhaHdKmDJxRox52WXimdcLpMuLDtkQvv4+jEu+wu9eSw==" }, "node_modules/surge-sdk": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.6.2.tgz", - "integrity": "sha512-DKX/u6fug0roRRKDga4L4a5UQRxzXeLuD0Mhgj3N/Wo5n8YHllrvlxp3pB7DI7JGm6b/u1Pwd2eF3GDdneluDg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/surge-sdk/-/surge-sdk-0.6.4.tgz", + "integrity": "sha512-v22+Kz8oyO/SL9EULWj2d+WuZFEL07UWfOaCBMDrcwSi1gf1GNmadhlJRSlvZ/IVUW1/PoyVlckKNkYXqiuxTw==", "dependencies": { "axios": "1.7.3" } }, "node_modules/surge-stream": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/surge-stream/-/surge-stream-0.6.2.tgz", - "integrity": "sha512-Y9Y0uDp//Pbnq1zplqo8cq3lVVBE++sVTlkKJwqI3pkfKqlys1EFhWZNLZkK/UDCSfV9azrPI0IaGbwjp4npRw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/surge-stream/-/surge-stream-0.6.4.tgz", + "integrity": "sha512-wf2Pl/R5vPMFNQkEajzNggRWhWHeeeW7XtTbfUWhjndId651yk3eLbns5B3t56L2Z5SzWEec7SIeKgoTph2A6g==", "dependencies": { "axios": "1.7.3", "request": "^2.88.0", "split": "^1.0.1", "surge-fstream-ignore": "^1.1.0", "surge-ignore": "^0.3.0", - "tarr": "^1.1.0", - "zlib": "^1.0.5" + "tarr": "^1.1.0" } }, "node_modules/surge-stream/node_modules/surge-ignore": { "version": "0.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/surge-ignore/-/surge-ignore-0.3.0.tgz", + "integrity": "sha512-tFq03FSTC2w6iVyJkzgFzwa2+lW4DZheIvStTO4Vn82Mk1x9aJyt/WUz5sKZE9woCn5dPB7nLARVFqJXDv5trA==" }, "node_modules/tarr": { "version": "1.1.0", - "license": "BSD", + "resolved": "https://registry.npmjs.org/tarr/-/tarr-1.1.0.tgz", + "integrity": "sha512-tENbQ43IQckay71stp1p1lljRhoEZpZk10FzEZKW2tJcMcnLwV3CfZdxBAERlH6nwnFvnHMS9eJOJl6IzSsG0g==", "dependencies": { "block-stream": "*", "fstream": ">=1.0.12", @@ -1487,7 +1696,8 @@ }, "node_modules/through": { "version": "2.3.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -1503,7 +1713,8 @@ }, "node_modules/tough-cookie": { "version": "2.5.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -1514,7 +1725,8 @@ }, "node_modules/tunnel-agent": { "version": "0.6.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -1524,32 +1736,38 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url-parse-as-address": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz", + "integrity": "sha512-1WJ8YX1Kcec9wgxy8d/ATzGP1ayO6BRnd3iB6NlM+7cOnn6U8p5PKppRTCPLobh3CSdJ4d0TdPjopzyU2KcVFw==" }, "node_modules/uuid": { "version": "3.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { "uuid": "bin/uuid" } }, "node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1558,8 +1776,9 @@ }, "node_modules/window-size": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", "dev": true, - "license": "MIT", "bin": { "window-size": "cli.js" }, @@ -1574,44 +1793,89 @@ "dev": true }, "node_modules/wrap-ansi": { - "version": "7.0.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/xbytes": { - "version": "1.7.0", - "license": "Apache-2.0", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/xbytes/-/xbytes-1.9.1.tgz", + "integrity": "sha512-29E0ygMFWrM5JW2W1ypmezjyR2FOS5aCszdLe620ymSJBoZzL0/RCLJKCoUFu3DfQGhZ/FWykEBp5dfEy6+hjA==", "engines": { "node": ">=1" } }, "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true }, "node_modules/yargs": { "version": "3.30.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.30.0.tgz", + "integrity": "sha512-wlUQkQyArCeRmUWkQylAPho6Qm9hhxZutrbcbY6QR6RJpw54hWGVFrVArqBKIXR3qsXCFXZzzuNVHzvCWJA0nw==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^1.2.1", "cliui": "^3.0.3", @@ -1632,8 +1896,9 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -1644,108 +1909,41 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/camelcase": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/cliui": { - "version": "3.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/yargs/node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/wrap-ansi": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs/node_modules/y18n": { - "version": "3.2.2", - "dev": true, - "license": "ISC" - }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zlib": { - "version": "1.0.5", - "engines": { - "node": ">=0.2.0" - } } } } diff --git a/package.json b/package.json index 9cbe33e..29b7e36 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,8 @@ "read": "1.0.5", "request": "^2.88.0", "surge-ignore": "0.2.0", - "surge-sdk": "0.6.2", - "surge-stream": "0.6.2", + "surge-sdk": "0.6.4", + "surge-stream": "0.6.4", "url-parse-as-address": "1.0.0", "xbytes": "^1.7.0" }, From cf77cea28b3e59622cb785b1f15dd2685ac3908b Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sun, 11 Aug 2024 18:20:42 -0700 Subject: [PATCH 205/214] 0.24.6 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ab720b..6176e78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "surge", - "version": "0.24.5", + "version": "0.24.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "surge", - "version": "0.24.5", + "version": "0.24.6", "license": "ISC", "dependencies": { "babar": "^0.2.0", diff --git a/package.json b/package.json index 29b7e36..763e0f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "surge", - "version": "0.24.5", + "version": "0.24.6", "description": "Static Web Publishing", "author": "Brock Whitten ", "bin": "./bin/surge", From 18415a0511afe0d46d1e9306131c11308b983190 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:04:28 -0700 Subject: [PATCH 206/214] updates readme --- README.md | 59 ++++++++----------------------------------------------- 1 file changed, 8 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 86d57df..7c49f03 100644 --- a/README.md +++ b/README.md @@ -1,63 +1,20 @@ # surge(.sh) -> Publish web apps to a CDN with a single command and no setup required. +> Single command static CDN publishing. -[![NPM](https://nodei.co/npm/surge.png?global=true)](https://nodei.co/npm/surge/) +![surge-help](https://github.com/user-attachments/assets/5b3e7e92-008e-48b6-9c61-dc4cbf1bf22c) -This is the CLI client for the surge.sh hosted service. It’s what gets installed when you run `npm install -g surge`. +## Install -This CLI library manages access tokens locally and handles the upload and subsequent reporting when you publish a project using surge. +``` +npm install -g surge +``` ## Usage -It’s easier to show than tell so let’s get to it! The following command will deploy the current working directory to the surge servers where the application will be available at sintaxi.com. - - $ surge ./ sintaxi.com - -Run `surge --help` to see the following overview of the `surge` command... +To deploy current directory... ``` - - Surge – Single-command web publishing. (v0.20.3) - - Usage: - surge - - Options: - -a, --add adds user to list of collaborators (email address) - -r, --remove removes user from list of collaborators (email address) - -V, --version show the version number - -h, --help show this help message - - Additional commands: - surge whoami show who you are logged in as - surge logout expire local token - surge login only performs authentication step - surge list list all domains you have access to - surge teardown tear down a published project - surge plan set account plan - - Guides: - Getting started surge.sh/help/getting-started-with-surge - Custom domains surge.sh/help/adding-a-custom-domain - Additional help surge.sh/help - - When in doubt, run surge from within your project directory. - +surge . example.com ``` -## CDN Features - -- Custom CNAME & custom SSL -- Fallback 404.html pages -- HTML5 mode 200.html pages -- Stays out of `git`s way -- Supports clean URLs && trailing slashes `/` -- Implicit signup -- Supports CNAME files - -If you’re using tools like Grunt, Gulp, or a static site generator like Jekyll, your files are output into a compile directory like `_site/`, `build/`, or `www/`. From the root of your project, pass Surge the path to this directory to upload your compiled assets. - - surge www - -You may also add this directory to your `.gitignore` to keep your compiled assets out of your Git history. From 5fa3d97e9bac8c864cb0daf12e06b25dd6548686 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:20:07 -0700 Subject: [PATCH 207/214] updates readme --- README.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7c49f03..64f32b1 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,22 @@ > Single command static CDN publishing. -![surge-help](https://github.com/user-attachments/assets/5b3e7e92-008e-48b6-9c61-dc4cbf1bf22c) - ## Install -``` -npm install -g surge -``` + npm install -g surge + +### Help + + surge --help + +![surge-help](https://github.com/user-attachments/assets/5b3e7e92-008e-48b6-9c61-dc4cbf1bf22c) + +### Publish -## Usage + surge . hello.surge.sh -To deploy current directory... +![surge-publish-output](https://github.com/user-attachments/assets/9ef28a0b-9491-4994-8800-8ea8f97975d8) -``` -surge . example.com -``` +Your site is now live at `https://hello.surge.sh`... +![surge-publish-results](https://github.com/user-attachments/assets/9bf53934-de53-4307-98b3-b90ab07c167e) \ No newline at end of file From 5796c38f5326d374d90c782c4be0e8fb02dc7b41 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:38:15 -0700 Subject: [PATCH 208/214] updates readme --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 64f32b1..96f3a57 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,14 @@ -# surge(.sh) + +

surge

> Single command static CDN publishing. +** on the Surge.sh Platform** + +

+ Over 12 Million publishings LIVE! +

+ ## Install npm install -g surge @@ -18,6 +25,6 @@ ![surge-publish-output](https://github.com/user-attachments/assets/9ef28a0b-9491-4994-8800-8ea8f97975d8) -Your site is now live at `https://hello.surge.sh`... +Your site is now live in `8` regions globally! View it at `https://hello.surge.sh`... ![surge-publish-results](https://github.com/user-attachments/assets/9bf53934-de53-4307-98b3-b90ab07c167e) \ No newline at end of file From 89e26c573e1a7e32bfb1f67e24a218f3686ea096 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:41:14 -0700 Subject: [PATCH 209/214] updates readme --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 96f3a57..988d2df 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,5 @@ -

surge

- -> Single command static CDN publishing. - -** on the Surge.sh Platform** +

⚡ Surge(.sh) - Static Web Publishing ⚡

Over 12 Million publishings LIVE! From 5a2d722b0f66981075f4c3dbc7c89ecf9201cf72 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:43:18 -0700 Subject: [PATCH 210/214] updates readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 988d2df..86974d3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -

⚡ Surge(.sh) - Static Web Publishing ⚡

+

surge ⚡ static web publishing

- Over 12 Million publishings LIVE! + 🎉 Over 12 Million publishings LIVE! 🎉

## Install From da26d5eab641c29402bbab350992f25c83ad1bf2 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:44:01 -0700 Subject: [PATCH 211/214] updates readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 86974d3..47dc7d7 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,6 @@ npm install -g surge -### Help - - surge --help - ![surge-help](https://github.com/user-attachments/assets/5b3e7e92-008e-48b6-9c61-dc4cbf1bf22c) ### Publish From 2934ee489f709b62e6a1c0631272250956c176d3 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:51:38 -0700 Subject: [PATCH 212/214] updates readme --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 47dc7d7..280b85b 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,18 @@ -

surge ⚡ static web publishing

+

surge

- 🎉 Over 12 Million publishings LIVE! 🎉 + ⚡ static web publishing ⚡

+With over 12 Million deployments available accross 8 regions globally surge is one of the preferred tools for publishing static content to the web. Surge's generous free plan of unlimited custom domains and unlimited deployments makes it a valuable tool for both staging and production builds. + +![surge-help](https://github.com/user-attachments/assets/5b3e7e92-008e-48b6-9c61-dc4cbf1bf22c) + ## Install npm install -g surge -![surge-help](https://github.com/user-attachments/assets/5b3e7e92-008e-48b6-9c61-dc4cbf1bf22c) - ### Publish surge . hello.surge.sh From baa024bcb4efa72034cdb0cdbbbc15dd15d0f6ed Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:52:26 -0700 Subject: [PATCH 213/214] updates readme --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 280b85b..212130a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ -

surge

+

surge - static web publishing

-

- ⚡ static web publishing ⚡ -

+## Introduction With over 12 Million deployments available accross 8 regions globally surge is one of the preferred tools for publishing static content to the web. Surge's generous free plan of unlimited custom domains and unlimited deployments makes it a valuable tool for both staging and production builds. From eef6ac4c59c90692af97fe6cbd2b090f185048e6 Mon Sep 17 00:00:00 2001 From: Brock Whitten Date: Sat, 7 Sep 2024 01:53:48 -0700 Subject: [PATCH 214/214] updates readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 212130a..c540b3f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -

surge - static web publishing

+

surge - static web publishing

-## Introduction +### Introduction With over 12 Million deployments available accross 8 regions globally surge is one of the preferred tools for publishing static content to the web. Surge's generous free plan of unlimited custom domains and unlimited deployments makes it a valuable tool for both staging and production builds. ![surge-help](https://github.com/user-attachments/assets/5b3e7e92-008e-48b6-9c61-dc4cbf1bf22c) -## Install +### Install npm install -g surge