From e88d2e95c8fc7bbbc1ac76d0980f47b50e856c3b Mon Sep 17 00:00:00 2001 From: Ed Moore Date: Fri, 6 Jul 2018 21:40:03 +1000 Subject: [PATCH 1/4] Add prettier --- .prettierignore | 3 + .prettierrc | 6 + .travis.yml | 2 + index.js | 4 +- lib/codecov.js | 691 +++++++++++++++++++++---------------- lib/detect.js | 52 +-- lib/git.js | 20 +- lib/offline.js | 4 +- lib/services/appveyor.js | 33 +- lib/services/buildkite.js | 28 +- lib/services/circle.js | 43 ++- lib/services/codeship.js | 26 +- lib/services/drone.js | 30 +- lib/services/gitlab.js | 35 +- lib/services/jenkins.js | 36 +- lib/services/localGit.js | 22 +- lib/services/semaphore.js | 30 +- lib/services/shippable.js | 29 +- lib/services/snap.js | 24 +- lib/services/travis.js | 30 +- lib/services/wercker.js | 31 +- package-lock.json | 6 + package.json | 3 +- test/detect.js | 28 +- test/git.js | 30 +- test/index.js | 8 +- test/services/appveyor.js | 52 ++- test/services/buildkite.js | 44 ++- test/services/circle.js | 115 +++--- test/services/codeship.js | 40 +-- test/services/drone.js | 44 ++- test/services/gitlab.js | 43 ++- test/services/jenkins.js | 113 +++--- test/services/localGit.js | 28 +- test/services/semaphore.js | 42 ++- test/services/shippable.js | 52 ++- test/services/snap.js | 71 ++-- test/services/travis.js | 54 ++- test/services/wercker.js | 46 ++- test/upload.js | 220 ++++++------ testinit.js | 2 +- 41 files changed, 1172 insertions(+), 1048 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..0dc34974 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +node_modules/ +.git/ +coverage/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..7604e15a --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "semi": false, + "trailingComma": "es5", + "singleQuote": true, + "useTabs": false +} diff --git a/.travis.yml b/.travis.yml index 8371d546..cf3765af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,8 @@ language: node_js sudo: false node_js: + - "10" + - "9" - "8" - "7" - "6" diff --git a/index.js b/index.js index dd3baca5..7ed7b10d 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,3 @@ -var handleInput = require('./lib/codecov'); +var handleInput = require('./lib/codecov') -exports.handleInput = handleInput; +exports.handleInput = handleInput diff --git a/lib/codecov.js b/lib/codecov.js index 2ff0aed9..dbe7da68 100644 --- a/lib/codecov.js +++ b/lib/codecov.js @@ -1,418 +1,522 @@ -var fs = require('fs'); -var path = require('path'); -var request = require('request'); -var urlgrey = require('urlgrey'); -var walk = require('ignore-walk'); -var execSync = require('child_process').execSync; - -var detectProvider = require('./detect'); - -var version = 'v' + require('../package.json').version; - -var patterns, more_patterns = ''; - -var isWindows = process.platform.match(/win32/) || process.platform.match(/win64/) - -if(!isWindows) { - patterns - = "-type f \\( -name '*coverage.*' " + - "-or -name 'nosetests.xml' " + - "-or -name 'jacoco*.xml' " + - "-or -name 'clover.xml' " + - "-or -name 'report.xml' " + - "-or -name 'cobertura.xml' " + - "-or -name 'luacov.report.out' " + - "-or -name 'lcov.info' " + - "-or -name '*.lcov' " + - "-or -name 'gcov.info' " + - "-or -name '*.gcov' " + - "-or -name '*.lst' \\) " + - "-not -name '*.sh' " + - "-not -name '*.data' " + - "-not -name '*.py' " + - "-not -name '*.class' " + - "-not -name '*.xcconfig' " + - "-not -name 'Coverage.profdata' " + - "-not -name 'phpunit-code-coverage.xml' " + - "-not -name 'coverage.serialized' " + - "-not -name '*.pyc' " + - "-not -name '*.cfg' " + - "-not -name '*.egg' " + - "-not -name '*.whl' " + - "-not -name '*.html' " + - "-not -name '*.js' " + - "-not -name '*.cpp' " + - "-not -name 'coverage.jade' " + - "-not -name 'include.lst' " + - "-not -name 'inputFiles.lst' " + - "-not -name 'createdFiles.lst' " + - "-not -name 'coverage.html' " + - "-not -name 'scoverage.measurements.*' " + - "-not -name 'test_*_coverage.txt' " + - "-not -path '*/vendor/*' " + - "-not -path '*/htmlcov/*' " + - "-not -path '*/home/cainus/*' " + - "-not -path '*/virtualenv/*' " + - "-not -path '*/js/generated/coverage/*' " + - "-not -path '*/.virtualenv/*' " + - "-not -path '*/virtualenvs/*' " + - "-not -path '*/.virtualenvs/*' " + - "-not -path '*/.env/*' " + - "-not -path '*/.envs/*' " + - "-not -path '*/env/*' " + - "-not -path '*/envs/*' " + - "-not -path '*/.venv/*' " + - "-not -path '*/.venvs/*' " + - "-not -path '*/venv/*' " + - "-not -path '*/venvs/*' " + - "-not -path '*/.git/*' " + - "-not -path '*/.hg/*' " + - "-not -path '*/.tox/*' " + - "-not -path '*/__pycache__/*' " + - "-not -path '*/.egg-info*' " + - "-not -path '*/$bower_components/*' " + - "-not -path '*/node_modules/*' " + - "-not -path '*/conftest_*.c.gcov'"; -} -else { - patterns - = '/a-d /b /s *coverage.* ' + - '/s nosetests.xml ' + - '/s jacoco*.xml ' + - '/s clover.xml ' + - '/s report.xml ' + - '/s cobertura.xml ' + - '/s luacov.report.out ' + - '/s lcov.info ' + - '/s *.lcov ' + - '/s gcov.info ' + - '/s *.gcov ' + - '/s *.lst' + - '| findstr /i /v \\.sh$ ' + - '| findstr /i /v \\.data$ ' + - '| findstr /i /v \\.py$ ' + - '| findstr /i /v \\.class$ ' + - '| findstr /i /v \\.xcconfig$ ' + - '| findstr /i /v Coverage\\.profdata$ ' + - '| findstr /i /v phpunit-code-coverage\\.xml$ ' + - '| findstr /i /v coverage\\.serialized$ ' + - '| findstr /i /v \\.pyc$ ' + - '| findstr /i /v \\.cfg$ ' + - '| findstr /i /v \\.egg$ ' + - '| findstr /i /v \\.whl$ ' + - '| findstr /i /v \\.html$ ' + - '| findstr /i /v \\.js$ ' + - '| findstr /i /v \\.cpp$ ' + - '| findstr /i /v coverage\\.jade$ ' + - '| findstr /i /v include\\.lst$ ' + - '| findstr /i /v inputFiles\\.lst$ ' + - '| findstr /i /v createdFiles\\.lst$ ' + - '| findstr /i /v coverage\\.html$ ' + - '| findstr /i /v scoverage\\.measurements\\..* ' + - '| findstr /i /v test_.*_coverage\\.txt ' + - '| findstr /i /v \\vendor\\ ' + - '| findstr /i /v \\htmlcov\\ ' + - '| findstr /i /v \\home\\cainus\\ ' + - '| findstr /i /v \\js\\generated\\coverage\\ ' + - '| findstr /i /v \\virtualenv\\ ' + - '| findstr /i /v \\virtualenvs\\ ' + - '| findstr /i /v \\\\.virtualenv\\ ' + - '| findstr /i /v \\\\.virtualenvs\\ ' + - '| findstr /i /v \\\\.env\\ ' + - '| findstr /i /v \\\\.envs\\ ' + - '| findstr /i /v \\env\\ ' + - '| findstr /i /v \\envs\\ ' + - '| findstr /i /v \\\\.venv\\ ' + - '| findstr /i /v \\\\.venvs\\ ' + - '| findstr /i /v \\venv\\ ' + - '| findstr /i /v \\venvs\\ ' + - '| findstr /i /v \\\\.git\\ ' + - '| findstr /i /v \\\\.hg\\ ' + - '| findstr /i /v \\\\.tox\\ ' + - '| findstr /i /v \\__pycache__\\ ' + - '| findstr /i /v \\\\.egg-info* ' + - '| findstr /i /v \\\\$bower_components\\ ' + - '| findstr /i /v \\node_modules\\ ' + - '| findstr /i /v \\conftest_.*\\.c\\.gcov '; +var fs = require('fs') +var path = require('path') +var request = require('request') +var urlgrey = require('urlgrey') +var walk = require('ignore-walk') +var execSync = require('child_process').execSync + +var detectProvider = require('./detect') + +var version = 'v' + require('../package.json').version + +var patterns, + more_patterns = '' + +var isWindows = + process.platform.match(/win32/) || process.platform.match(/win64/) + +if (!isWindows) { + patterns = + "-type f \\( -name '*coverage.*' " + + "-or -name 'nosetests.xml' " + + "-or -name 'jacoco*.xml' " + + "-or -name 'clover.xml' " + + "-or -name 'report.xml' " + + "-or -name 'cobertura.xml' " + + "-or -name 'luacov.report.out' " + + "-or -name 'lcov.info' " + + "-or -name '*.lcov' " + + "-or -name 'gcov.info' " + + "-or -name '*.gcov' " + + "-or -name '*.lst' \\) " + + "-not -name '*.sh' " + + "-not -name '*.data' " + + "-not -name '*.py' " + + "-not -name '*.class' " + + "-not -name '*.xcconfig' " + + "-not -name 'Coverage.profdata' " + + "-not -name 'phpunit-code-coverage.xml' " + + "-not -name 'coverage.serialized' " + + "-not -name '*.pyc' " + + "-not -name '*.cfg' " + + "-not -name '*.egg' " + + "-not -name '*.whl' " + + "-not -name '*.html' " + + "-not -name '*.js' " + + "-not -name '*.cpp' " + + "-not -name 'coverage.jade' " + + "-not -name 'include.lst' " + + "-not -name 'inputFiles.lst' " + + "-not -name 'createdFiles.lst' " + + "-not -name 'coverage.html' " + + "-not -name 'scoverage.measurements.*' " + + "-not -name 'test_*_coverage.txt' " + + "-not -path '*/vendor/*' " + + "-not -path '*/htmlcov/*' " + + "-not -path '*/home/cainus/*' " + + "-not -path '*/virtualenv/*' " + + "-not -path '*/js/generated/coverage/*' " + + "-not -path '*/.virtualenv/*' " + + "-not -path '*/virtualenvs/*' " + + "-not -path '*/.virtualenvs/*' " + + "-not -path '*/.env/*' " + + "-not -path '*/.envs/*' " + + "-not -path '*/env/*' " + + "-not -path '*/envs/*' " + + "-not -path '*/.venv/*' " + + "-not -path '*/.venvs/*' " + + "-not -path '*/venv/*' " + + "-not -path '*/venvs/*' " + + "-not -path '*/.git/*' " + + "-not -path '*/.hg/*' " + + "-not -path '*/.tox/*' " + + "-not -path '*/__pycache__/*' " + + "-not -path '*/.egg-info*' " + + "-not -path '*/$bower_components/*' " + + "-not -path '*/node_modules/*' " + + "-not -path '*/conftest_*.c.gcov'" +} else { + patterns = + '/a-d /b /s *coverage.* ' + + '/s nosetests.xml ' + + '/s jacoco*.xml ' + + '/s clover.xml ' + + '/s report.xml ' + + '/s cobertura.xml ' + + '/s luacov.report.out ' + + '/s lcov.info ' + + '/s *.lcov ' + + '/s gcov.info ' + + '/s *.gcov ' + + '/s *.lst' + + '| findstr /i /v \\.sh$ ' + + '| findstr /i /v \\.data$ ' + + '| findstr /i /v \\.py$ ' + + '| findstr /i /v \\.class$ ' + + '| findstr /i /v \\.xcconfig$ ' + + '| findstr /i /v Coverage\\.profdata$ ' + + '| findstr /i /v phpunit-code-coverage\\.xml$ ' + + '| findstr /i /v coverage\\.serialized$ ' + + '| findstr /i /v \\.pyc$ ' + + '| findstr /i /v \\.cfg$ ' + + '| findstr /i /v \\.egg$ ' + + '| findstr /i /v \\.whl$ ' + + '| findstr /i /v \\.html$ ' + + '| findstr /i /v \\.js$ ' + + '| findstr /i /v \\.cpp$ ' + + '| findstr /i /v coverage\\.jade$ ' + + '| findstr /i /v include\\.lst$ ' + + '| findstr /i /v inputFiles\\.lst$ ' + + '| findstr /i /v createdFiles\\.lst$ ' + + '| findstr /i /v coverage\\.html$ ' + + '| findstr /i /v scoverage\\.measurements\\..* ' + + '| findstr /i /v test_.*_coverage\\.txt ' + + '| findstr /i /v \\vendor\\ ' + + '| findstr /i /v \\htmlcov\\ ' + + '| findstr /i /v \\home\\cainus\\ ' + + '| findstr /i /v \\js\\generated\\coverage\\ ' + + '| findstr /i /v \\virtualenv\\ ' + + '| findstr /i /v \\virtualenvs\\ ' + + '| findstr /i /v \\\\.virtualenv\\ ' + + '| findstr /i /v \\\\.virtualenvs\\ ' + + '| findstr /i /v \\\\.env\\ ' + + '| findstr /i /v \\\\.envs\\ ' + + '| findstr /i /v \\env\\ ' + + '| findstr /i /v \\envs\\ ' + + '| findstr /i /v \\\\.venv\\ ' + + '| findstr /i /v \\\\.venvs\\ ' + + '| findstr /i /v \\venv\\ ' + + '| findstr /i /v \\venvs\\ ' + + '| findstr /i /v \\\\.git\\ ' + + '| findstr /i /v \\\\.hg\\ ' + + '| findstr /i /v \\\\.tox\\ ' + + '| findstr /i /v \\__pycache__\\ ' + + '| findstr /i /v \\\\.egg-info* ' + + '| findstr /i /v \\\\$bower_components\\ ' + + '| findstr /i /v \\node_modules\\ ' + + '| findstr /i /v \\conftest_.*\\.c\\.gcov ' } - -var sendToCodecovV2 = function(codecov_endpoint, query, upload_body, on_success, on_failure){ +var sendToCodecovV2 = function( + codecov_endpoint, + query, + upload_body, + on_success, + on_failure +) { // Direct to Codecov request.post( { - url : urlgrey(codecov_endpoint + '/upload/v2').query(query).toString(), - body : upload_body, - headers : { + url: urlgrey(codecov_endpoint + '/upload/v2') + .query(query) + .toString(), + body: upload_body, + headers: { 'Content-Type': 'text/plain', - 'Accept': 'text/plain' - } - }, function(err, response, result){ + Accept: 'text/plain', + }, + }, + function(err, response, result) { if (err || response.statusCode !== 200) { - console.log(' ' + (err || response.body)); - return response ? on_failure(response.statusCode, response.body) : on_failure(err.code, err.message); - + console.log(' ' + (err || response.body)) + return response + ? on_failure(response.statusCode, response.body) + : on_failure(err.code, err.message) } else { - console.log(' Success!'); - console.log(' View report at: ' + response.body); - return on_success(response.body); - + console.log(' Success!') + console.log(' View report at: ' + response.body) + return on_success(response.body) } } - ); - -}; - + ) +} -var sendToCodecovV3 = function(codecov_endpoint, query, upload_body, on_success, on_failure){ +var sendToCodecovV3 = function( + codecov_endpoint, + query, + upload_body, + on_success, + on_failure +) { // Direct to S3 request.post( { - url : urlgrey(codecov_endpoint + '/upload/v4').query(query).toString(), - body : '', - headers : { + url: urlgrey(codecov_endpoint + '/upload/v4') + .query(query) + .toString(), + body: '', + headers: { 'Content-Type': 'text/plain', - 'Accept': 'text/plain' - } - }, function(err, response, result){ + Accept: 'text/plain', + }, + }, + function(err, response, result) { if (err) { - sendToCodecovV2(codecov_endpoint, query, upload_body, on_success, on_failure); - + sendToCodecovV2( + codecov_endpoint, + query, + upload_body, + on_success, + on_failure + ) } else { - var codecov_report_url = result.split('\n')[0]; + var codecov_report_url = result.split('\n')[0] request.put( { - url : result.split('\n')[1], - body : upload_body, - headers : { + url: result.split('\n')[1], + body: upload_body, + headers: { 'Content-Type': 'text/plain', - 'x-amz-acl': 'public-read' - } - }, function(err, response, result){ + 'x-amz-acl': 'public-read', + }, + }, + function(err, response, result) { if (err) { - sendToCodecovV2(codecov_endpoint, query, upload_body, on_success, on_failure); - + sendToCodecovV2( + codecov_endpoint, + query, + upload_body, + on_success, + on_failure + ) } else { - console.log(' Success!'); - console.log(' View report at: ' + codecov_report_url); - on_success(codecov_report_url); + console.log(' Success!') + console.log(' View report at: ' + codecov_report_url) + on_success(codecov_report_url) } } - ); + ) } } - ); - -}; - + ) +} -var upload = function(args, on_success, on_failure){ +var upload = function(args, on_success, on_failure) { // Build query - var codecov_endpoint = (args.options.url || process.env.codecov_url || process.env.CODECOV_URL || 'https://codecov.io'); - var query = {}; - var debug = []; - - console.log(''+ -' _____ _ \n' + -' / ____| | | \n' + -'| | ___ __| | ___ ___ _____ __ \n' + -'| | / _ \\ / _` |/ _ \\/ __/ _ \\ \\ / / \n' + -'| |___| (_) | (_| | __/ (_| (_) \\ V / \n' + -' \\_____\\___/ \\__,_|\\___|\\___\\___/ \\_/ \n' + -' ' + version); - - query.yaml = ['codecov.yml', '.codecov.yml'].reduce(function (result, file) { - return result || (fs.existsSync(path.resolve(process.cwd(), file)) ? file : undefined) + var codecov_endpoint = + args.options.url || + process.env.codecov_url || + process.env.CODECOV_URL || + 'https://codecov.io' + var query = {} + var debug = [] + + console.log( + '' + + ' _____ _ \n' + + ' / ____| | | \n' + + '| | ___ __| | ___ ___ _____ __ \n' + + '| | / _ \\ / _` |/ _ \\/ __/ _ \\ \\ / / \n' + + '| |___| (_) | (_| | __/ (_| (_) \\ V / \n' + + ' \\_____\\___/ \\__,_|\\___|\\___\\___/ \\_/ \n' + + ' ' + + version + ) + + query.yaml = ['codecov.yml', '.codecov.yml'].reduce(function(result, file) { + return ( + result || + (fs.existsSync(path.resolve(process.cwd(), file)) ? file : undefined) + ) }, undefined) if ((args.options.disable || '').split(',').indexOf('detect') === -1) { - console.log('==> Detecting CI Provider'); - query = detectProvider(); + console.log('==> Detecting CI Provider') + query = detectProvider() } else { - debug.push('disabled detect'); + debug.push('disabled detect') } if (args.options.build) { - query.build = args.options.build; + query.build = args.options.build } if (args.options.commit) { - query.commit = args.options.commit; + query.commit = args.options.commit } if (args.options.branch) { - query.branch = args.options.branch; + query.branch = args.options.branch } if (args.options.slug) { - query.slug = args.options.slug; + query.slug = args.options.slug } - var flags = (args.options.flags || process.env.codecov_flags || process.env.CODECOV_FLAGS); + var flags = + args.options.flags || process.env.codecov_flags || process.env.CODECOV_FLAGS if (flags) { - query.flags = flags; + query.flags = flags } - var token = (args.options.token || process.env.codecov_token || process.env.CODECOV_TOKEN); - if (token){ - query.token = token; + var token = + args.options.token || process.env.codecov_token || process.env.CODECOV_TOKEN + if (token) { + query.token = token } - query.package = 'node-' + version; + query.package = 'node-' + version - console.log("==> Configuration: "); - console.log(" Endpoint: " + codecov_endpoint); + console.log('==> Configuration: ') + console.log(' Endpoint: ' + codecov_endpoint) // Don't output `query` directly as it contains the upload token console.log({ commit: query.commit, branch: query.branch, - package: query.package - }); + package: query.package, + }) - var upload = ""; + var upload = '' // Add specified env vars - var env_found = false; + var env_found = false if (args.options.env || process.env.CODECOV_ENV || process.env.codecov_env) { - var env = (args.options.env + ',' + (process.env.CODECOV_ENV || '') + ',' + (process.env.codecov_env || '')).split(','); + var env = ( + args.options.env + + ',' + + (process.env.CODECOV_ENV || '') + + ',' + + (process.env.codecov_env || '') + ).split(',') for (var i = env.length - 1; i >= 0; i--) { if (env[i]) { - upload += env[i] + '=' + (process.env[env[i]] || '').toString() + '\n'; - env_found = true; + upload += env[i] + '=' + (process.env[env[i]] || '').toString() + '\n' + env_found = true } } if (env_found) { - upload += '<<<<<< ENV\n'; + upload += '<<<<<< ENV\n' } } // List git files - var root = path.resolve(args.options.root || query.root || '.'); - console.log('==> Building file structure'); + var root = path.resolve(args.options.root || query.root || '.') + console.log('==> Building file structure') try { - upload += execSync('git ls-files || hg locate', { cwd: root }).toString().trim() + '\n<<<<<< network\n'; + upload += + execSync('git ls-files || hg locate', { cwd: root }) + .toString() + .trim() + '\n<<<<<< network\n' } catch (err) { // not a git/hg dir, emulating git/hg ignore behavior - upload += walk.sync({path: root, ignoreFiles: ['.gitignore', '.hgignore']}).join('\n').trim() + '\n<<<<<< network\n'; + upload += + walk + .sync({ path: root, ignoreFiles: ['.gitignore', '.hgignore'] }) + .join('\n') + .trim() + '\n<<<<<< network\n' } // Make gcov reports if ((args.options.disable || '').split(',').indexOf('gcov') === -1) { try { - console.log('==> Generating gcov reports (skip via --disable=gcov)'); - var gcg = args.options['gcov-glob'] || ''; + console.log('==> Generating gcov reports (skip via --disable=gcov)') + var gcg = args.options['gcov-glob'] || '' if (gcg) { - if(!isWindows) { - gcg = gcg.split(' ').map(function(p){return "-not -path '"+p+"'";}).join(' '); + if (!isWindows) { + gcg = gcg + .split(' ') + .map(function(p) { + return "-not -path '" + p + "'" + }) + .join(' ') } else { - gcg = gcg.split(' ').map(function(p){return "^| findstr /i /v "+p;}).join(' '); + gcg = gcg + .split(' ') + .map(function(p) { + return '^| findstr /i /v ' + p + }) + .join(' ') } } - var gcov; - if(!isWindows) { - gcov = "find "+(args.options['gcov-root'] || root)+" -type f -name '*.gcno' "+gcg+" -exec "+(args.options['gcov-exec'] || 'gcov')+" "+(args.options['gcov-args'] || '')+" {} +"; + var gcov + if (!isWindows) { + gcov = + 'find ' + + (args.options['gcov-root'] || root) + + " -type f -name '*.gcno' " + + gcg + + ' -exec ' + + (args.options['gcov-exec'] || 'gcov') + + ' ' + + (args.options['gcov-args'] || '') + + ' {} +' } else { // @TODO support for root // not straight forward due to nature of windows command dir - gcov = "for /f \"delims=\" %g in ('dir /a-d /b /s *.gcno "+gcg+"') do "+(args.options['gcov-exec'] || 'gcov')+" "+(args.options['gcov-args'] || '')+" %g"; + gcov = + 'for /f "delims=" %g in (\'dir /a-d /b /s *.gcno ' + + gcg + + "') do " + + (args.options['gcov-exec'] || 'gcov') + + ' ' + + (args.options['gcov-args'] || '') + + ' %g' } - debug.push(gcov); - console.log(' $ '+gcov); - execSync(gcov); + debug.push(gcov) + console.log(' $ ' + gcov) + execSync(gcov) } catch (e) { - console.log(' Failed to run gcov command.'); + console.log(' Failed to run gcov command.') } } else { - debug.push('disabled gcov'); + debug.push('disabled gcov') } // Detect .bowerrc - var bowerrc; - if(!isWindows) { - bowerrc = execSync('test -f .bowerrc && cat .bowerrc || echo ""', { cwd: root }).toString().trim(); + var bowerrc + if (!isWindows) { + bowerrc = execSync('test -f .bowerrc && cat .bowerrc || echo ""', { + cwd: root, + }) + .toString() + .trim() } else { - bowerrc = execSync('if exist .bowerrc type .bowerrc', { cwd: root }).toString().trim(); + bowerrc = execSync('if exist .bowerrc type .bowerrc', { cwd: root }) + .toString() + .trim() } if (bowerrc) { - bowerrc = JSON.parse(bowerrc).directory; + bowerrc = JSON.parse(bowerrc).directory if (bowerrc) { - if(!isWindows) { - more_patterns = " -not -path '*/" + bowerrc.toString().replace(/\/$/, '') + "/*'"; + if (!isWindows) { + more_patterns = + " -not -path '*/" + bowerrc.toString().replace(/\/$/, '') + "/*'" } else { - more_patterns = '| findstr /i /v \\' + bowerrc.toString().replace(/\/$/, '') + '\\'; + more_patterns = + '| findstr /i /v \\' + bowerrc.toString().replace(/\/$/, '') + '\\' } } } - var files = [], file = null; + var files = [], + file = null // Append manually entered reports if (args.options.file) { - file = args.options.file; - console.log('==> Targeting specific file'); + file = args.options.file + console.log('==> Targeting specific file') try { - upload += '# path=' + file + '\n' + fs.readFileSync(file, 'utf8').toString() + '\n<<<<<< EOF\n'; - console.log(' + ' + file); - files.push(file); + upload += + '# path=' + + file + + '\n' + + fs.readFileSync(file, 'utf8').toString() + + '\n<<<<<< EOF\n' + console.log(' + ' + file) + files.push(file) } catch (e) { - debug.push('failed: ' + file.split('/').pop()); - console.log(' X Failed to read file at ' + file); + debug.push('failed: ' + file.split('/').pop()) + console.log(' X Failed to read file at ' + file) } } else if ((args.options.disable || '').split(',').indexOf('search') === -1) { - console.log('==> Scanning for reports'); + console.log('==> Scanning for reports') var _files - if(!isWindows) { - _files = execSync('find ' + root + ' ' + patterns + more_patterns).toString().trim().split('\n'); + if (!isWindows) { + _files = execSync('find ' + root + ' ' + patterns + more_patterns) + .toString() + .trim() + .split('\n') } else { // @TODO support for a root directory // It's not straightforward due to the nature of the dir command - _files = execSync('dir ' + patterns + more_patterns).toString().trim().split('\r\n'); + _files = execSync('dir ' + patterns + more_patterns) + .toString() + .trim() + .split('\r\n') } if (_files) { for (var i2 = _files.length - 1; i2 >= 0; i2--) { - file = _files[i2]; + file = _files[i2] try { - upload += '# path=' + file + '\n' + fs.readFileSync(file, 'utf8').toString() + '\n<<<<<< EOF\n'; - console.log(' + ' + file); - files.push(file); + upload += + '# path=' + + file + + '\n' + + fs.readFileSync(file, 'utf8').toString() + + '\n<<<<<< EOF\n' + console.log(' + ' + file) + files.push(file) } catch (e) { - debug.push('failed: ' + file.split('/').pop()); - console.log(' X Failed to read file at ' + file); + debug.push('failed: ' + file.split('/').pop()) + console.log(' X Failed to read file at ' + file) } } } } else { - debug.push('disabled search'); + debug.push('disabled search') } if (files) { // Upload to Codecov if (args.options.dump) { - console.log('-------- DEBUG START --------'); - console.log(upload); - console.log('-------- DEBUG END --------'); - + console.log('-------- DEBUG START --------') + console.log(upload) + console.log('-------- DEBUG END --------') } else { - console.log('==> Uploading reports'); - var _upload; + console.log('==> Uploading reports') + var _upload if ((args.options.disable || '').split(',').indexOf('s3') === -1) { - _upload = sendToCodecovV3; + _upload = sendToCodecovV3 } else { - _upload = sendToCodecovV2; + _upload = sendToCodecovV2 } - _upload(codecov_endpoint, query, upload, - function(){ - // remove files after Uploading - if (args.options.clear) { - for (var i = files.length - 1; i >= 0; i--) { - try { - fs.unlinkSync(files[i]); - } catch (e) {} - } - } - if (on_success) { - on_success.apply(this, arguments); - } - }, - on_failure || function(){}); + _upload( + codecov_endpoint, + query, + upload, + function() { + // remove files after Uploading + if (args.options.clear) { + for (var i = files.length - 1; i >= 0; i--) { + try { + fs.unlinkSync(files[i]) + } catch (e) {} + } + } + if (on_success) { + on_success.apply(this, arguments) + } + }, + on_failure || function() {} + ) } } @@ -421,14 +525,13 @@ var upload = function(args, on_success, on_failure){ files: files, query: query, debug: debug, - url: codecov_endpoint - }; - -}; + url: codecov_endpoint, + } +} module.exports = { upload: upload, version: version, sendToCodecovV2: sendToCodecovV2, - sendToCodecovV3: sendToCodecovV3 -}; + sendToCodecovV3: sendToCodecovV3, +} diff --git a/lib/detect.js b/lib/detect.js index c040ace8..645aac9d 100644 --- a/lib/detect.js +++ b/lib/detect.js @@ -1,33 +1,33 @@ var services = { - 'travis' : require('./services/travis'), - 'circle' : require('./services/circle'), - 'buildkite' : require('./services/buildkite'), - 'codeship' : require('./services/codeship'), - 'drone' : require('./services/drone'), - 'appveyor' : require('./services/appveyor'), - 'wercker' : require('./services/wercker'), - 'jenkins' : require('./services/jenkins'), - 'semaphore' : require('./services/semaphore'), - 'snap' : require('./services/snap'), - 'gitlab' : require('./services/gitlab') -}; + travis: require('./services/travis'), + circle: require('./services/circle'), + buildkite: require('./services/buildkite'), + codeship: require('./services/codeship'), + drone: require('./services/drone'), + appveyor: require('./services/appveyor'), + wercker: require('./services/wercker'), + jenkins: require('./services/jenkins'), + semaphore: require('./services/semaphore'), + snap: require('./services/snap'), + gitlab: require('./services/gitlab'), +} -var detectProvider = function(){ - var config; - for (var name in services){ - if (services[name].detect()){ - config = services[name].configuration(); - break; +var detectProvider = function() { + var config + for (var name in services) { + if (services[name].detect()) { + config = services[name].configuration() + break } } - if (!config){ - var local = require('./services/localGit'); - config = local.configuration(); - if (!config){ - throw new Error("Unknown CI service provider. Unable to upload coverage."); + if (!config) { + var local = require('./services/localGit') + config = local.configuration() + if (!config) { + throw new Error('Unknown CI service provider. Unable to upload coverage.') } } - return config; -}; + return config +} -module.exports = detectProvider; +module.exports = detectProvider diff --git a/lib/git.js b/lib/git.js index 8d9309a9..1280a802 100644 --- a/lib/git.js +++ b/lib/git.js @@ -1,13 +1,15 @@ -var execSync = require("child_process").execSync; +var execSync = require('child_process').execSync module.exports = { - - branch: function(){ - return execSync("git rev-parse --abbrev-ref HEAD || hg branch").toString().trim(); + branch: function() { + return execSync('git rev-parse --abbrev-ref HEAD || hg branch') + .toString() + .trim() }, - head: function(){ - return execSync("git log -1 --pretty=%H || hg id -i --debug | tr -d '+'").toString().trim(); - } - -}; + head: function() { + return execSync("git log -1 --pretty=%H || hg id -i --debug | tr -d '+'") + .toString() + .trim() + }, +} diff --git a/lib/offline.js b/lib/offline.js index f2b4b31d..81a5c3ce 100644 --- a/lib/offline.js +++ b/lib/offline.js @@ -8,7 +8,7 @@ var offlineErrorCodes = [ 'ENONET', 'EHOSTUNREACH', 'EOPNOTSUPP', - 'ENETUNREACH' + 'ENETUNREACH', ] -module.exports = offlineErrorCodes; \ No newline at end of file +module.exports = offlineErrorCodes diff --git a/lib/services/appveyor.js b/lib/services/appveyor.js index 0a880903..aae605eb 100644 --- a/lib/services/appveyor.js +++ b/lib/services/appveyor.js @@ -1,20 +1,23 @@ module.exports = { - - detect : function(){ - return !!process.env.APPVEYOR; + detect: function() { + return !!process.env.APPVEYOR }, - configuration : function(){ - console.log(' AppVeyor CI Detected'); + configuration: function() { + console.log(' AppVeyor CI Detected') return { - service : 'appveyor', - commit : process.env.APPVEYOR_REPO_COMMIT, - branch : process.env.APPVEYOR_REPO_BRANCH, - pr : process.env.APPVEYOR_PULL_REQUEST_NUMBER, - job: process.env.APPVEYOR_ACCOUNT_NAME + '/' + process.env.APPVEYOR_PROJECT_SLUG + '/' + process.env.APPVEYOR_BUILD_VERSION, + service: 'appveyor', + commit: process.env.APPVEYOR_REPO_COMMIT, + branch: process.env.APPVEYOR_REPO_BRANCH, + pr: process.env.APPVEYOR_PULL_REQUEST_NUMBER, + job: + process.env.APPVEYOR_ACCOUNT_NAME + + '/' + + process.env.APPVEYOR_PROJECT_SLUG + + '/' + + process.env.APPVEYOR_BUILD_VERSION, build: process.env.APPVEYOR_JOB_ID, - slug : process.env.APPVEYOR_REPO_NAME - }; - } - -}; + slug: process.env.APPVEYOR_REPO_NAME, + } + }, +} diff --git a/lib/services/buildkite.js b/lib/services/buildkite.js index 949dc86e..0caa9716 100644 --- a/lib/services/buildkite.js +++ b/lib/services/buildkite.js @@ -1,20 +1,18 @@ module.exports = { - - detect : function(){ - return !!process.env.BUILDKITE; + detect: function() { + return !!process.env.BUILDKITE }, - configuration : function(){ + configuration: function() { // https://buildkite.com/docs/guides/environment-variables - console.log(' Buildkite CI Detected'); + console.log(' Buildkite CI Detected') return { - service : 'buildkite', - build : process.env.BUILDKITE_BUILD_NUMBER, - build_url : process.env.BUILDKITE_BUILD_URL, - commit : process.env.BUILDKITE_COMMIT, - branch : process.env.BUILDKITE_BRANCH, - slug : process.env.BUILDKITE_PROJECT_SLUG - }; - } - -}; + service: 'buildkite', + build: process.env.BUILDKITE_BUILD_NUMBER, + build_url: process.env.BUILDKITE_BUILD_URL, + commit: process.env.BUILDKITE_COMMIT, + branch: process.env.BUILDKITE_BRANCH, + slug: process.env.BUILDKITE_PROJECT_SLUG, + } + }, +} diff --git a/lib/services/circle.js b/lib/services/circle.js index e9093688..0a6616ff 100644 --- a/lib/services/circle.js +++ b/lib/services/circle.js @@ -1,35 +1,40 @@ module.exports = { - - detect : function(){ - return !!process.env.CIRCLECI; + detect: function() { + return !!process.env.CIRCLECI }, - configuration : function(){ - console.log(' Circle CI Detected'); + configuration: function() { + console.log(' Circle CI Detected') return { - service : 'circleci', - build : process.env.CIRCLE_BUILD_NUM + '.' + process.env.CIRCLE_NODE_INDEX, - job : process.env.CIRCLE_BUILD_NUM + '.' + process.env.CIRCLE_NODE_INDEX, - commit : process.env.CIRCLE_SHA1, - branch : process.env.CIRCLE_BRANCH, + service: 'circleci', + build: process.env.CIRCLE_BUILD_NUM + '.' + process.env.CIRCLE_NODE_INDEX, + job: process.env.CIRCLE_BUILD_NUM + '.' + process.env.CIRCLE_NODE_INDEX, + commit: process.env.CIRCLE_SHA1, + branch: process.env.CIRCLE_BRANCH, pr: process.env.CIRCLE_PR_NUMBER, - slug : detectRepoSlug(), - }; - function detectRepoSlug(){ + slug: detectRepoSlug(), + } + function detectRepoSlug() { if (process.env.CIRCLE_PROJECT_REPONAME) { // CircleCI 1.0 // CIRCLE_PROJECT_REPONAME=codecov // CIRCLE_PROJECT_USERNAME=codecov-node // CIRCLE_REPOSITORY_URL=https://github.com/codecov/codecov-node (note: GitHub Web URL) - return process.env.CIRCLE_PROJECT_USERNAME + '/' + process.env.CIRCLE_PROJECT_REPONAME; + return ( + process.env.CIRCLE_PROJECT_USERNAME + + '/' + + process.env.CIRCLE_PROJECT_REPONAME + ) } if (process.env.CIRCLE_REPOSITORY_URL) { // CircleCI 2.0 // CIRCLE_REPOSITORY_URL=git@github.com:codecov/codecov-node.git (note: Git/SSH URL) - return process.env.CIRCLE_REPOSITORY_URL.replace(/^.*:/, '').replace(/\.git$/, ''); + return process.env.CIRCLE_REPOSITORY_URL.replace(/^.*:/, '').replace( + /\.git$/, + '' + ) } - throw new Error('Cannot detect repository slug.'); + throw new Error('Cannot detect repository slug.') } - } - -}; + }, +} diff --git a/lib/services/codeship.js b/lib/services/codeship.js index 5e61f2d6..b0001bce 100644 --- a/lib/services/codeship.js +++ b/lib/services/codeship.js @@ -1,18 +1,16 @@ module.exports = { - - detect : function(){ - return (process.env.CI_NAME && process.env.CI_NAME === 'codeship'); + detect: function() { + return process.env.CI_NAME && process.env.CI_NAME === 'codeship' }, - configuration : function(){ - console.log(' Codeship CI Detected'); + configuration: function() { + console.log(' Codeship CI Detected') return { - service : 'codeship', - build : process.env.CI_BUILD_NUMBER, - build_url : process.env.CI_BUILD_URL, - commit : process.env.CI_COMMIT_ID, - branch : process.env.CI_BRANCH - }; - } - -}; + service: 'codeship', + build: process.env.CI_BUILD_NUMBER, + build_url: process.env.CI_BUILD_URL, + commit: process.env.CI_COMMIT_ID, + branch: process.env.CI_BRANCH, + } + }, +} diff --git a/lib/services/drone.js b/lib/services/drone.js index 38ab4681..3566b558 100644 --- a/lib/services/drone.js +++ b/lib/services/drone.js @@ -1,21 +1,19 @@ -var git = require('../git'); +var git = require('../git') module.exports = { - - detect : function(){ - return !!process.env.DRONE; + detect: function() { + return !!process.env.DRONE }, - configuration : function(){ - console.log(' Drone.io CI Detected'); + configuration: function() { + console.log(' Drone.io CI Detected') return { - service : 'drone.io', - build : process.env.DRONE_BUILD_NUMBER, - commit : git.head(), - build_url : process.env.DRONE_BUILD_URL, - branch : process.env.DRONE_BRANCH, - root : process.env.DRONE_BUILD_DIR - }; - } - -}; + service: 'drone.io', + build: process.env.DRONE_BUILD_NUMBER, + commit: git.head(), + build_url: process.env.DRONE_BUILD_URL, + branch: process.env.DRONE_BRANCH, + root: process.env.DRONE_BUILD_DIR, + } + }, +} diff --git a/lib/services/gitlab.js b/lib/services/gitlab.js index 2fbd1c6b..033b50af 100644 --- a/lib/services/gitlab.js +++ b/lib/services/gitlab.js @@ -1,22 +1,25 @@ // https://docs.gitlab.com/ce/ci/variables/README.html module.exports = { - - detect : function(){ - return !!process.env.GITLAB_CI; + detect: function() { + return !!process.env.GITLAB_CI }, - configuration : function(){ - console.log(' Gitlab CI Detected'); - var remote = process.env.CI_BUILD_REPO || process.env.CI_REPOSITORY_URL || ''; + configuration: function() { + console.log(' Gitlab CI Detected') + var remote = + process.env.CI_BUILD_REPO || process.env.CI_REPOSITORY_URL || '' return { - service : 'gitlab', - build : process.env.CI_BUILD_ID, - commit : process.env.CI_BUILD_REF, - branch : process.env.CI_BUILD_REF_NAME, - root : process.env.CI_PROJECT_DIR, - slug : remote.split('/').slice(3, 5).join('/').replace('.git', '') - }; - } - -}; + service: 'gitlab', + build: process.env.CI_BUILD_ID, + commit: process.env.CI_BUILD_REF, + branch: process.env.CI_BUILD_REF_NAME, + root: process.env.CI_PROJECT_DIR, + slug: remote + .split('/') + .slice(3, 5) + .join('/') + .replace('.git', ''), + } + }, +} diff --git a/lib/services/jenkins.js b/lib/services/jenkins.js index 527b8cf2..09707222 100644 --- a/lib/services/jenkins.js +++ b/lib/services/jenkins.js @@ -1,22 +1,24 @@ -var git = require('../git'); +var git = require('../git') module.exports = { - - detect : function(){ - return !!process.env.JENKINS_URL; + detect: function() { + return !!process.env.JENKINS_URL }, - configuration : function(){ - console.log(' Jenkins CI Detected'); + configuration: function() { + console.log(' Jenkins CI Detected') return { - service : 'jenkins', - commit : process.env.ghprbActualCommit || process.env.GIT_COMMIT || git.head(), - branch : process.env.ghprbSourceBranch || process.env.GIT_BRANCH || process.env.BRANCH_NAME, - build : process.env.BUILD_NUMBER, - build_url : process.env.BUILD_URL, - root : process.env.WORKSPACE, - pr : process.env.ghprbPullId || process.env.CHANGE_ID - }; - } - -}; + service: 'jenkins', + commit: + process.env.ghprbActualCommit || process.env.GIT_COMMIT || git.head(), + branch: + process.env.ghprbSourceBranch || + process.env.GIT_BRANCH || + process.env.BRANCH_NAME, + build: process.env.BUILD_NUMBER, + build_url: process.env.BUILD_URL, + root: process.env.WORKSPACE, + pr: process.env.ghprbPullId || process.env.CHANGE_ID, + } + }, +} diff --git a/lib/services/localGit.js b/lib/services/localGit.js index 479df577..7b123191 100644 --- a/lib/services/localGit.js +++ b/lib/services/localGit.js @@ -1,18 +1,16 @@ var git = require('../git') module.exports = { - - configuration : function(){ - console.log(' No CI Detected. Using git/mercurial'); - var branch = git.branch(); + configuration: function() { + console.log(' No CI Detected. Using git/mercurial') + var branch = git.branch() if (branch === 'HEAD') { - branch = 'master'; + branch = 'master' } - var head = git.head(); + var head = git.head() return { - commit : head, - branch : branch - }; - } - -}; + commit: head, + branch: branch, + } + }, +} diff --git a/lib/services/semaphore.js b/lib/services/semaphore.js index aa7179eb..7ab48a05 100644 --- a/lib/services/semaphore.js +++ b/lib/services/semaphore.js @@ -1,19 +1,19 @@ - module.exports = { - - detect : function(){ - return !!process.env.SEMAPHORE; + detect: function() { + return !!process.env.SEMAPHORE }, - configuration : function(){ - console.log(' Semaphore CI Detected'); + configuration: function() { + console.log(' Semaphore CI Detected') return { - service : 'semaphore', - build : process.env.SEMAPHORE_BUILD_NUMBER + '.' + process.env.SEMAPHORE_CURRENT_THREAD, - commit : process.env.REVISION, - branch : process.env.BRANCH_NAME, - slug : process.env.SEMAPHORE_REPO_SLUG - }; - } - -}; + service: 'semaphore', + build: + process.env.SEMAPHORE_BUILD_NUMBER + + '.' + + process.env.SEMAPHORE_CURRENT_THREAD, + commit: process.env.REVISION, + branch: process.env.BRANCH_NAME, + slug: process.env.SEMAPHORE_REPO_SLUG, + } + }, +} diff --git a/lib/services/shippable.js b/lib/services/shippable.js index 5a0ff585..c1c95a41 100644 --- a/lib/services/shippable.js +++ b/lib/services/shippable.js @@ -1,22 +1,19 @@ - module.exports = { - - detect : function(){ - return !!process.env.SHIPPABLE; + detect: function() { + return !!process.env.SHIPPABLE }, - configuration : function(){ + configuration: function() { // http://docs.shippable.com/en/latest/config.html#common-environment-variables - console.log(' Shippable CI Detected'); + console.log(' Shippable CI Detected') return { - service : 'shippable', - build : process.env.BUILD_NUMBER, - build_url : process.env.BUILD_URL, + service: 'shippable', + build: process.env.BUILD_NUMBER, + build_url: process.env.BUILD_URL, pr: process.env.PULL_REQUEST, - commit : process.env.COMMIT, - branch : process.env.BRANCH, - slug : process.env.REPO_NAME - }; - } - -}; + commit: process.env.COMMIT, + branch: process.env.BRANCH, + slug: process.env.REPO_NAME, + } + }, +} diff --git a/lib/services/snap.js b/lib/services/snap.js index 0c44316b..d3e88722 100644 --- a/lib/services/snap.js +++ b/lib/services/snap.js @@ -1,18 +1,16 @@ module.exports = { - - detect : function(){ - return !!process.env.SNAP_CI; + detect: function() { + return !!process.env.SNAP_CI }, - configuration : function(){ - console.log(' Snap CI Detected'); + configuration: function() { + console.log(' Snap CI Detected') return { - service : 'snap', - build : process.env.SNAP_PIPELINE_COUNTER, - commit : process.env.SNAP_COMMIT || process.env.SNAP_UPSTREAM_COMMIT, - branch : process.env.SNAP_BRANCH || process.env.SNAP_UPSTREAM_BRANCH, + service: 'snap', + build: process.env.SNAP_PIPELINE_COUNTER, + commit: process.env.SNAP_COMMIT || process.env.SNAP_UPSTREAM_COMMIT, + branch: process.env.SNAP_BRANCH || process.env.SNAP_UPSTREAM_BRANCH, pr: process.env.SNAP_PULL_REQUEST_NUMBER, - }; - } - -}; + } + }, +} diff --git a/lib/services/travis.js b/lib/services/travis.js index 04d1fab7..50eca00c 100644 --- a/lib/services/travis.js +++ b/lib/services/travis.js @@ -1,21 +1,19 @@ module.exports = { - - detect : function(){ - return !!process.env.TRAVIS; + detect: function() { + return !!process.env.TRAVIS }, - configuration : function(){ - console.log(' Travis CI Detected'); + configuration: function() { + console.log(' Travis CI Detected') return { - service : 'travis', - commit : process.env.TRAVIS_COMMIT, - build : process.env.TRAVIS_JOB_NUMBER, - branch : process.env.TRAVIS_BRANCH, - job : process.env.TRAVIS_JOB_ID, + service: 'travis', + commit: process.env.TRAVIS_COMMIT, + build: process.env.TRAVIS_JOB_NUMBER, + branch: process.env.TRAVIS_BRANCH, + job: process.env.TRAVIS_JOB_ID, pr: process.env.TRAVIS_PULL_REQUEST, - slug : process.env.TRAVIS_REPO_SLUG, - root : process.env.TRAVIS_BUILD_DIR - }; - } - -}; + slug: process.env.TRAVIS_REPO_SLUG, + root: process.env.TRAVIS_BUILD_DIR, + } + }, +} diff --git a/lib/services/wercker.js b/lib/services/wercker.js index 3340aa59..e21d480c 100644 --- a/lib/services/wercker.js +++ b/lib/services/wercker.js @@ -1,21 +1,22 @@ // http://devcenter.wercker.com/articles/steps/variables.html module.exports = { - - detect : function(){ - return !!process.env.WERCKER_MAIN_PIPELINE_STARTED; + detect: function() { + return !!process.env.WERCKER_MAIN_PIPELINE_STARTED }, - configuration : function(){ - console.log(' Wercker CI Detected'); + configuration: function() { + console.log(' Wercker CI Detected') return { - service : 'wercker', - build : process.env.WERCKER_MAIN_PIPELINE_STARTED, - commit : process.env.WERCKER_GIT_COMMIT, - build_url : process.env.WERCKER_BUILD_URL, - branch : process.env.WERCKER_GIT_BRANCH, - slug : process.env.WERCKER_GIT_OWNER + '/' + process.env.WERCKER_GIT_REPOSITORY - }; - } - -}; + service: 'wercker', + build: process.env.WERCKER_MAIN_PIPELINE_STARTED, + commit: process.env.WERCKER_GIT_COMMIT, + build_url: process.env.WERCKER_BUILD_URL, + branch: process.env.WERCKER_GIT_BRANCH, + slug: + process.env.WERCKER_GIT_OWNER + + '/' + + process.env.WERCKER_GIT_REPOSITORY, + } + }, +} diff --git a/package-lock.json b/package-lock.json index 8f5c8779..a58c25c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1003,6 +1003,12 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prettier": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", + "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", + "dev": true + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", diff --git a/package.json b/package.json index 85d48187..94ee920e 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "expect.js": "^0.3.1", "istanbul": "^0.4.5", "jshint": "^2.9.3", - "mocha": "^3.0.2" + "mocha": "^3.0.2", + "prettier": "1.13.7" } } diff --git a/test/detect.js b/test/detect.js index 305e2f34..6566bbcd 100644 --- a/test/detect.js +++ b/test/detect.js @@ -1,19 +1,17 @@ -var detect = require("../lib/detect"); -var git = require("../lib/git"); +var detect = require('../lib/detect') +var git = require('../lib/git') -describe("Codecov", function(){ +describe('Codecov', function() { + it('can detect existing appveyor service', function() { + process.env.TRAVIS = 'true' - it("can detect existing appveyor service", function(){ - process.env.TRAVIS = "true"; + expect(detect().service).to.eql('travis') - expect(detect().service).to.eql("travis"); + process.env.TRAVIS = '' + }) - process.env.TRAVIS = ""; - }); - - it("can select local git service if no service is found", function(){ - expect(detect().commit).to.match(/^\w{40}$/); - expect(detect().commit).to.eql(git.head()); - }); - -}); + it('can select local git service if no service is found', function() { + expect(detect().commit).to.match(/^\w{40}$/) + expect(detect().commit).to.eql(git.head()) + }) +}) diff --git a/test/git.js b/test/git.js index f31684e9..7ae8dd48 100644 --- a/test/git.js +++ b/test/git.js @@ -1,14 +1,20 @@ -var git = require("../lib/git"); -var execSync = require("child_process").execSync; +var git = require('../lib/git') +var execSync = require('child_process').execSync -describe("Git", function(){ +describe('Git', function() { + it('can get the branch', function() { + expect(git.branch()).to.eql( + execSync('git rev-parse --abbrev-ref HEAD || hg branch') + .toString() + .trim() + ) + }) - it("can get the branch", function(){ - expect(git.branch()).to.eql(execSync("git rev-parse --abbrev-ref HEAD || hg branch").toString().trim()); - }); - - it("can get the head", function(){ - expect(git.head()).to.eql(execSync("git log -1 --pretty=%H || hg id -i --debug | tr -d '+'").toString().trim()); - }); - -}); + it('can get the head', function() { + expect(git.head()).to.eql( + execSync("git log -1 --pretty=%H || hg id -i --debug | tr -d '+'") + .toString() + .trim() + ) + }) +}) diff --git a/test/index.js b/test/index.js index 577f587e..c1352069 100644 --- a/test/index.js +++ b/test/index.js @@ -50,8 +50,8 @@ describe('Codecov', function() { var res = codecov.upload({ options: { dump: true, - file: 'test' + pathSeparator + 'example.coverage.txt' - } + file: 'test' + pathSeparator + 'example.coverage.txt', + }, }) expect(res.files[0].split(pathSeparator).pop()).to.eql( 'example.coverage.txt' @@ -144,8 +144,8 @@ describe('Codecov', function() { 'gcov-root': 'folder/path', 'gcov-glob': 'ignore/this/folder', 'gcov-exec': 'llvm-gcov', - 'gcov-args': '-o' - } + 'gcov-args': '-o', + }, }) if (!isWindows) { expect(res.debug).to.contain( diff --git a/test/services/appveyor.js b/test/services/appveyor.js index ef332567..36c82133 100644 --- a/test/services/appveyor.js +++ b/test/services/appveyor.js @@ -1,31 +1,29 @@ -var appveyor = require("../../lib/services/appveyor"); +var appveyor = require('../../lib/services/appveyor') -describe("AppVeyor CI Provider", function(){ +describe('AppVeyor CI Provider', function() { + it('can detect appveyor', function() { + process.env.APPVEYOR = 'true' + expect(appveyor.detect()).to.be(true) + }) - it ("can detect appveyor", function(){ - process.env.APPVEYOR = "true"; - expect(appveyor.detect()).to.be(true); - }); - - it ("can get appveyor env info", function(){ - process.env.APPVEYOR_ACCOUNT_NAME = "a"; - process.env.APPVEYOR_PROJECT_SLUG = "b"; - process.env.APPVEYOR_REPO_COMMIT = "5678"; - process.env.APPVEYOR_REPO_BRANCH = "master"; - process.env.APPVEYOR_PULL_REQUEST_NUMBER = "1"; - process.env.APPVEYOR_BUILD_VERSION = "job"; - process.env.APPVEYOR_JOB_ID = "build"; - process.env.APPVEYOR_REPO_NAME = 'owner/repo'; + it('can get appveyor env info', function() { + process.env.APPVEYOR_ACCOUNT_NAME = 'a' + process.env.APPVEYOR_PROJECT_SLUG = 'b' + process.env.APPVEYOR_REPO_COMMIT = '5678' + process.env.APPVEYOR_REPO_BRANCH = 'master' + process.env.APPVEYOR_PULL_REQUEST_NUMBER = '1' + process.env.APPVEYOR_BUILD_VERSION = 'job' + process.env.APPVEYOR_JOB_ID = 'build' + process.env.APPVEYOR_REPO_NAME = 'owner/repo' expect(appveyor.configuration()).to.eql({ - service : 'appveyor', - commit : '5678', - build : 'build', - job : 'a/b/job', - pr : '1', - branch : 'master', - slug : 'owner/repo' - }); - }); - -}); + service: 'appveyor', + commit: '5678', + build: 'build', + job: 'a/b/job', + pr: '1', + branch: 'master', + slug: 'owner/repo', + }) + }) +}) diff --git a/test/services/buildkite.js b/test/services/buildkite.js index 578bd9c9..250512ce 100644 --- a/test/services/buildkite.js +++ b/test/services/buildkite.js @@ -1,27 +1,25 @@ -var buildkite = require("../../lib/services/buildkite"); +var buildkite = require('../../lib/services/buildkite') -describe("Buildkite CI Provider", function(){ +describe('Buildkite CI Provider', function() { + it('can detect buildkite', function() { + process.env.BUILDKITE = 'true' + expect(buildkite.detect()).to.be(true) + }) - it ("can detect buildkite", function(){ - process.env.BUILDKITE = "true"; - expect(buildkite.detect()).to.be(true); - }); - - it ("can get buildkite env info", function(){ - process.env.BUILDKITE_BUILD_NUMBER = "1"; - process.env.BUILDKITE_BUILD_URL = "url"; - process.env.BUILDKITE_COMMIT = "commit"; - process.env.BUILDKITE_BRANCH = "branch"; - process.env.BUILDKITE_PROJECT_SLUG = "slug"; + it('can get buildkite env info', function() { + process.env.BUILDKITE_BUILD_NUMBER = '1' + process.env.BUILDKITE_BUILD_URL = 'url' + process.env.BUILDKITE_COMMIT = 'commit' + process.env.BUILDKITE_BRANCH = 'branch' + process.env.BUILDKITE_PROJECT_SLUG = 'slug' expect(buildkite.configuration()).to.eql({ - service : 'buildkite', - build : "1", - build_url : "url", - commit : "commit", - branch : "branch", - slug : "slug" - }); - }); - -}); + service: 'buildkite', + build: '1', + build_url: 'url', + commit: 'commit', + branch: 'branch', + slug: 'slug', + }) + }) +}) diff --git a/test/services/circle.js b/test/services/circle.js index 67d778e9..d6333e0d 100644 --- a/test/services/circle.js +++ b/test/services/circle.js @@ -1,64 +1,63 @@ -var circle = require("../../lib/services/circle"); +var circle = require('../../lib/services/circle') -describe("Circle CI Provider", function(){ +describe('Circle CI Provider', function() { + it('can detect circle', function() { + process.env.CIRCLECI = 'true' + expect(circle.detect()).to.be(true) + }) - it ("can detect circle", function(){ - process.env.CIRCLECI = "true"; - expect(circle.detect()).to.be(true); - }); - - it ("can get circle env info (CircleCI 1.0)", function(){ - process.env.CIRCLECI = 'true'; - process.env.CIRCLE_BUILD_NUM = '1234'; - process.env.CIRCLE_SHA1 = '5678'; - process.env.CIRCLE_BRANCH = 'master'; - process.env.CIRCLE_NODE_INDEX = '1'; - process.env.CIRCLE_PR_NUMBER = 'blah'; - process.env.CIRCLE_PROJECT_USERNAME = 'owner'; - process.env.CIRCLE_PROJECT_REPONAME = 'repo'; + it('can get circle env info (CircleCI 1.0)', function() { + process.env.CIRCLECI = 'true' + process.env.CIRCLE_BUILD_NUM = '1234' + process.env.CIRCLE_SHA1 = '5678' + process.env.CIRCLE_BRANCH = 'master' + process.env.CIRCLE_NODE_INDEX = '1' + process.env.CIRCLE_PR_NUMBER = 'blah' + process.env.CIRCLE_PROJECT_USERNAME = 'owner' + process.env.CIRCLE_PROJECT_REPONAME = 'repo' expect(circle.configuration()).to.eql({ - service : 'circleci', - commit : '5678', - build : '1234.1', - job : '1234.1', - branch : 'master', - pr : 'blah', - slug : 'owner/repo' - }); - }); + service: 'circleci', + commit: '5678', + build: '1234.1', + job: '1234.1', + branch: 'master', + pr: 'blah', + slug: 'owner/repo', + }) + }) - it ("can get circle env info (CircleCI 2.0)", function(){ - process.env.CIRCLECI = 'true'; - process.env.CIRCLE_BRANCH = 'master'; - process.env.CIRCLE_BUILD_NUM = '1234'; - process.env.CIRCLE_SHA1 = 'abcd'; - process.env.CIRCLE_NODE_INDEX = '1'; - process.env.CIRCLE_BUILD_URL = 'https://circleci.com/gh/owner/repo/1234'; - process.env.CIRCLE_COMPARE_URL = 'https://github.com/owner/repo/2408ca9...3c36cfa'; - process.env.CIRCLE_NODE_INDEX = '1'; - process.env.CIRCLE_REPOSITORY_URL = 'git@github.com:owner/repo.git'; - delete process.env.CIRCLE_PR_NUMBER; - delete process.env.CIRCLE_PROJECT_USERNAME; - delete process.env.CIRCLE_PROJECT_REPONAME; + it('can get circle env info (CircleCI 2.0)', function() { + process.env.CIRCLECI = 'true' + process.env.CIRCLE_BRANCH = 'master' + process.env.CIRCLE_BUILD_NUM = '1234' + process.env.CIRCLE_SHA1 = 'abcd' + process.env.CIRCLE_NODE_INDEX = '1' + process.env.CIRCLE_BUILD_URL = 'https://circleci.com/gh/owner/repo/1234' + process.env.CIRCLE_COMPARE_URL = + 'https://github.com/owner/repo/2408ca9...3c36cfa' + process.env.CIRCLE_NODE_INDEX = '1' + process.env.CIRCLE_REPOSITORY_URL = 'git@github.com:owner/repo.git' + delete process.env.CIRCLE_PR_NUMBER + delete process.env.CIRCLE_PROJECT_USERNAME + delete process.env.CIRCLE_PROJECT_REPONAME expect(circle.configuration()).to.eql({ - service : 'circleci', - commit : 'abcd', - build : '1234.1', - job : '1234.1', - branch : 'master', - pr : undefined, - slug : 'owner/repo' - }); - }); - - it ("throws if repo slug cannot be detected", function(){ - delete process.env.CIRCLE_PR_NUMBER; - delete process.env.CIRCLE_PROJECT_USERNAME; - delete process.env.CIRCLE_PROJECT_REPONAME; - delete process.env.CIRCLE_REPOSITORY_URL; - expect(function(){ - circle.configuration(); - }).to.throwError(); - }); + service: 'circleci', + commit: 'abcd', + build: '1234.1', + job: '1234.1', + branch: 'master', + pr: undefined, + slug: 'owner/repo', + }) + }) -}); + it('throws if repo slug cannot be detected', function() { + delete process.env.CIRCLE_PR_NUMBER + delete process.env.CIRCLE_PROJECT_USERNAME + delete process.env.CIRCLE_PROJECT_REPONAME + delete process.env.CIRCLE_REPOSITORY_URL + expect(function() { + circle.configuration() + }).to.throwError() + }) +}) diff --git a/test/services/codeship.js b/test/services/codeship.js index 8a6a098c..16e41785 100644 --- a/test/services/codeship.js +++ b/test/services/codeship.js @@ -1,25 +1,23 @@ -var codeship = require("../../lib/services/codeship"); +var codeship = require('../../lib/services/codeship') -describe("Codeship CI Provider", function(){ +describe('Codeship CI Provider', function() { + it('can detect codeship', function() { + process.env.CI_NAME = 'codeship' + expect(codeship.detect()).to.be(true) + }) - it ("can detect codeship", function(){ - process.env.CI_NAME = "codeship"; - expect(codeship.detect()).to.be(true); - }); - - it ("can get codeship env info", function(){ - process.env.CI_BUILD_NUMBER = "1234"; - process.env.CI_COMMIT_ID = "5678"; - process.env.CI_BRANCH = "master"; - process.env.CI_BUILD_URL = 'https://...'; + it('can get codeship env info', function() { + process.env.CI_BUILD_NUMBER = '1234' + process.env.CI_COMMIT_ID = '5678' + process.env.CI_BRANCH = 'master' + process.env.CI_BUILD_URL = 'https://...' expect(codeship.configuration()).to.eql({ - service : 'codeship', - commit : '5678', - build : '1234', - branch : 'master', - build_url : 'https://...' - }); - }); - -}); + service: 'codeship', + commit: '5678', + build: '1234', + branch: 'master', + build_url: 'https://...', + }) + }) +}) diff --git a/test/services/drone.js b/test/services/drone.js index 47c062e4..50932c63 100644 --- a/test/services/drone.js +++ b/test/services/drone.js @@ -1,26 +1,24 @@ -var drone = require("../../lib/services/drone"); -var git = require("../../lib/git"); +var drone = require('../../lib/services/drone') +var git = require('../../lib/git') -describe("Drone.io CI Provider", function(){ +describe('Drone.io CI Provider', function() { + it('can detect drone', function() { + process.env.DRONE = 'true' + expect(drone.detect()).to.be(true) + }) - it ("can detect drone", function(){ - process.env.DRONE = "true"; - expect(drone.detect()).to.be(true); - }); - - it ("can get drone env info", function(){ - process.env.DRONE_BUILD_NUMBER = "1234"; - process.env.DRONE_BRANCH = "master"; - process.env.DRONE_BUILD_URL = 'https://...'; - process.env.DRONE_BUILD_DIR = '/'; + it('can get drone env info', function() { + process.env.DRONE_BUILD_NUMBER = '1234' + process.env.DRONE_BRANCH = 'master' + process.env.DRONE_BUILD_URL = 'https://...' + process.env.DRONE_BUILD_DIR = '/' expect(drone.configuration()).to.eql({ - service : 'drone.io', - commit : git.head(), - build : '1234', - root : '/', - branch : 'master', - build_url : 'https://...' - }); - }); - -}); + service: 'drone.io', + commit: git.head(), + build: '1234', + root: '/', + branch: 'master', + build_url: 'https://...', + }) + }) +}) diff --git a/test/services/gitlab.js b/test/services/gitlab.js index 5b1808c2..ff3b767f 100644 --- a/test/services/gitlab.js +++ b/test/services/gitlab.js @@ -1,25 +1,24 @@ -var gitlab = require("../../lib/services/gitlab"); +var gitlab = require('../../lib/services/gitlab') -describe("Gitlab CI Provider", function(){ +describe('Gitlab CI Provider', function() { + it('can detect gitlab', function() { + process.env.GITLAB_CI = 'true' + expect(gitlab.detect()).to.be(true) + }) - it ("can detect gitlab", function(){ - process.env.GITLAB_CI = "true"; - expect(gitlab.detect()).to.be(true); - }); - - it ("can get service env info", function(){ - process.env.CI_BUILD_ID = '1234'; - process.env.CI_BUILD_REPO = 'https://gitlab.com/owner/repo.git'; - process.env.CI_BUILD_REF = '5678'; - process.env.CI_BUILD_REF_NAME = 'master'; - process.env.CI_PROJECT_DIR = '/'; + it('can get service env info', function() { + process.env.CI_BUILD_ID = '1234' + process.env.CI_BUILD_REPO = 'https://gitlab.com/owner/repo.git' + process.env.CI_BUILD_REF = '5678' + process.env.CI_BUILD_REF_NAME = 'master' + process.env.CI_PROJECT_DIR = '/' expect(gitlab.configuration()).to.eql({ - service : 'gitlab', - build : '1234', - root : '/', - commit : '5678', - slug : 'owner/repo', - branch : 'master' - }); - }); -}); + service: 'gitlab', + build: '1234', + root: '/', + commit: '5678', + slug: 'owner/repo', + branch: 'master', + }) + }) +}) diff --git a/test/services/jenkins.js b/test/services/jenkins.js index b2600a89..23a9d95e 100644 --- a/test/services/jenkins.js +++ b/test/services/jenkins.js @@ -1,65 +1,64 @@ -var jenkins = require("../../lib/services/jenkins"); -var git = require("../../lib/git"); +var jenkins = require('../../lib/services/jenkins') +var git = require('../../lib/git') -describe("Jenkins CI Provider", function(){ - - it ("can detect jenkins", function(){ - process.env.JENKINS_URL = "http://jenkins.jenkins.example/"; - expect(jenkins.detect()).to.be(true); - }); +describe('Jenkins CI Provider', function() { + it('can detect jenkins', function() { + process.env.JENKINS_URL = 'http://jenkins.jenkins.example/' + expect(jenkins.detect()).to.be(true) + }) - it ("can get service env info", function(){ - process.env.BUILD_NUMBER = '1234'; - process.env.BUILD_URL = 'http://asdf/'; - process.env.GIT_COMMIT = '5678'; - process.env.GIT_BRANCH = 'master'; - process.env.WORKSPACE = '/'; + it('can get service env info', function() { + process.env.BUILD_NUMBER = '1234' + process.env.BUILD_URL = 'http://asdf/' + process.env.GIT_COMMIT = '5678' + process.env.GIT_BRANCH = 'master' + process.env.WORKSPACE = '/' expect(jenkins.configuration()).to.eql({ - service : 'jenkins', - build_url : 'http://asdf/', - build : '1234', - root : '/', - commit : '5678', - pr : undefined, - branch : 'master' - }); - }); + service: 'jenkins', + build_url: 'http://asdf/', + build: '1234', + root: '/', + commit: '5678', + pr: undefined, + branch: 'master', + }) + }) - it ("can get service env info when using Blue Ocean", function(){ - delete process.env.GIT_COMMIT; - delete process.env.GIT_BRANCH; - process.env.BUILD_NUMBER = '1234'; - process.env.BUILD_URL = 'http://asdf/'; - process.env.BRANCH_NAME = 'master'; - process.env.WORKSPACE = '/'; + it('can get service env info when using Blue Ocean', function() { + delete process.env.GIT_COMMIT + delete process.env.GIT_BRANCH + process.env.BUILD_NUMBER = '1234' + process.env.BUILD_URL = 'http://asdf/' + process.env.BRANCH_NAME = 'master' + process.env.WORKSPACE = '/' expect(jenkins.configuration()).to.eql({ - service : 'jenkins', - build_url : 'http://asdf/', - build : '1234', - root : '/', - commit : git.head(), - pr : undefined, - branch : 'master' - }); + service: 'jenkins', + build_url: 'http://asdf/', + build: '1234', + root: '/', + commit: git.head(), + pr: undefined, + branch: 'master', + }) }) - it ("github pull request env variables win out over jenkins variables", function(){ - process.env.BUILD_NUMBER = '1234'; - process.env.BUILD_URL = 'http://asdf/'; - process.env.GIT_COMMIT = '5678'; - process.env.ghprbActualCommit = '8765'; - process.env.GIT_BRANCH = 'master'; - process.env.ghprbSourceBranch = 'retsam'; - process.env.ghprbPullId = '1111'; - process.env.WORKSPACE = '/'; + it('github pull request env variables win out over jenkins variables', function() { + process.env.BUILD_NUMBER = '1234' + process.env.BUILD_URL = 'http://asdf/' + process.env.GIT_COMMIT = '5678' + process.env.ghprbActualCommit = '8765' + process.env.GIT_BRANCH = 'master' + process.env.ghprbSourceBranch = 'retsam' + process.env.ghprbPullId = '1111' + process.env.WORKSPACE = '/' expect(jenkins.configuration()).to.eql({ - service : 'jenkins', - build_url : 'http://asdf/', - build : '1234', - root : '/', - commit : '8765', - pr : '1111', - branch : 'retsam' - }); - }); -}); + service: 'jenkins', + build_url: 'http://asdf/', + build: '1234', + root: '/', + commit: '8765', + pr: '1111', + branch: 'retsam', + }) + }) +}) diff --git a/test/services/localGit.js b/test/services/localGit.js index 7c414595..0626c48c 100644 --- a/test/services/localGit.js +++ b/test/services/localGit.js @@ -1,15 +1,17 @@ -var local = require("../../lib/services/localGit"); -var execSync = require('child_process').execSync; +var local = require('../../lib/services/localGit') +var execSync = require('child_process').execSync -describe("Local git/mercurial CI Provider", function(){ +describe('Local git/mercurial CI Provider', function() { + it('can get commit', function() { + expect(local.configuration().commit).to.match(/^\w{40}$/) + expect(local.configuration().commit).to.eql( + execSync("git rev-parse HEAD || hg id -i --debug | tr -d '+'") + .toString() + .trim() + ) + }) - it ("can get commit", function(){ - expect(local.configuration().commit).to.match(/^\w{40}$/); - expect(local.configuration().commit).to.eql(execSync("git rev-parse HEAD || hg id -i --debug | tr -d '+'").toString().trim()); - }); - - it ("can get branch", function(){ - expect(local.configuration().branch).to.not.eql(null); - }); - -}); + it('can get branch', function() { + expect(local.configuration().branch).to.not.eql(null) + }) +}) diff --git a/test/services/semaphore.js b/test/services/semaphore.js index 1981e773..a9f2fd92 100644 --- a/test/services/semaphore.js +++ b/test/services/semaphore.js @@ -1,25 +1,23 @@ -var semaphore = require("../../lib/services/semaphore"); +var semaphore = require('../../lib/services/semaphore') -describe("Semaphore CI Provider", function(){ +describe('Semaphore CI Provider', function() { + it('can detect semaphore', function() { + process.env.SEMAPHORE = 'true' + expect(semaphore.detect()).to.be(true) + }) - it ("can detect semaphore", function(){ - process.env.SEMAPHORE = "true"; - expect(semaphore.detect()).to.be(true); - }); - - it ("can get semaphore env info", function(){ - process.env.SEMAPHORE_BUILD_NUMBER = "1234"; - process.env.REVISION = "5678"; - process.env.SEMAPHORE_CURRENT_THREAD = "1"; - process.env.BRANCH_NAME = "master"; - process.env.SEMAPHORE_REPO_SLUG = "owner/repo"; + it('can get semaphore env info', function() { + process.env.SEMAPHORE_BUILD_NUMBER = '1234' + process.env.REVISION = '5678' + process.env.SEMAPHORE_CURRENT_THREAD = '1' + process.env.BRANCH_NAME = 'master' + process.env.SEMAPHORE_REPO_SLUG = 'owner/repo' expect(semaphore.configuration()).to.eql({ - service : 'semaphore', - commit : '5678', - build : '1234.1', - branch : 'master', - slug : 'owner/repo' - }); - }); - -}); + service: 'semaphore', + commit: '5678', + build: '1234.1', + branch: 'master', + slug: 'owner/repo', + }) + }) +}) diff --git a/test/services/shippable.js b/test/services/shippable.js index 62186abc..eba9d0bd 100644 --- a/test/services/shippable.js +++ b/test/services/shippable.js @@ -1,29 +1,27 @@ -var shippable = require("../../lib/services/shippable"); +var shippable = require('../../lib/services/shippable') -describe("Shippable CI Provider", function(){ - - it ("can detect shippable", function(){ - process.env.SHIPPABLE = "true"; - expect(shippable.detect()).to.be(true); - }); - it ("can get shippable env info get_commit_status", function(){ - process.env.SHIPPABLE = "true"; - process.env.BUILD_URL = 'http://...'; - process.env.COMMIT = '5678'; - process.env.BUILD_NUMBER = '91011'; - process.env.BUILD_URL = 'http://...'; - process.env.BRANCH = 'master'; - process.env.PULL_REQUEST = '2'; - process.env.REPO_NAME = 'owner/repo'; +describe('Shippable CI Provider', function() { + it('can detect shippable', function() { + process.env.SHIPPABLE = 'true' + expect(shippable.detect()).to.be(true) + }) + it('can get shippable env info get_commit_status', function() { + process.env.SHIPPABLE = 'true' + process.env.BUILD_URL = 'http://...' + process.env.COMMIT = '5678' + process.env.BUILD_NUMBER = '91011' + process.env.BUILD_URL = 'http://...' + process.env.BRANCH = 'master' + process.env.PULL_REQUEST = '2' + process.env.REPO_NAME = 'owner/repo' expect(shippable.configuration()).to.eql({ - service : 'shippable', - commit : '5678', - build : '91011', - build_url : 'http://...', - branch : 'master', - pr : '2', - slug : 'owner/repo' - }); - }); - -}); + service: 'shippable', + commit: '5678', + build: '91011', + build_url: 'http://...', + branch: 'master', + pr: '2', + slug: 'owner/repo', + }) + }) +}) diff --git a/test/services/snap.js b/test/services/snap.js index bc3b5005..63437af9 100644 --- a/test/services/snap.js +++ b/test/services/snap.js @@ -1,41 +1,40 @@ -var snap = require("../../lib/services/snap"); +var snap = require('../../lib/services/snap') -describe("Snap CI Provider", function(){ +describe('Snap CI Provider', function() { + it('can detect snap', function() { + process.env.SNAP_CI = 'true' + expect(snap.detect()).to.be(true) + }) - it ("can detect snap", function(){ - process.env.SNAP_CI = "true"; - expect(snap.detect()).to.be(true); - }); - - it ("can get snap env info get_commit_status", function(){ - process.env.SNAP_CI = "true"; - process.env.SNAP_PIPELINE_COUNTER = '1234'; - process.env.SNAP_COMMIT = '5678'; - process.env.SNAP_BRANCH = 'master'; - process.env.SNAP_PULL_REQUEST_NUMBER = 'blah'; + it('can get snap env info get_commit_status', function() { + process.env.SNAP_CI = 'true' + process.env.SNAP_PIPELINE_COUNTER = '1234' + process.env.SNAP_COMMIT = '5678' + process.env.SNAP_BRANCH = 'master' + process.env.SNAP_PULL_REQUEST_NUMBER = 'blah' expect(snap.configuration()).to.eql({ - service : 'snap', - commit : '5678', - build : '1234', - branch : 'master', - pr : 'blah' - }); - }); + service: 'snap', + commit: '5678', + build: '1234', + branch: 'master', + pr: 'blah', + }) + }) - it ("can get snap env info get_commit_status for pull requests", function(){ - process.env.SNAP_COMMIT = ''; - process.env.SNAP_BRANCH = ''; - process.env.SNAP_CI = "true"; - process.env.SNAP_PIPELINE_COUNTER = '1234'; - process.env.SNAP_UPSTREAM_COMMIT = '5678'; - process.env.SNAP_UPSTREAM_BRANCH = 'upstream-branch'; - process.env.SNAP_PULL_REQUEST_NUMBER = 'blah'; + it('can get snap env info get_commit_status for pull requests', function() { + process.env.SNAP_COMMIT = '' + process.env.SNAP_BRANCH = '' + process.env.SNAP_CI = 'true' + process.env.SNAP_PIPELINE_COUNTER = '1234' + process.env.SNAP_UPSTREAM_COMMIT = '5678' + process.env.SNAP_UPSTREAM_BRANCH = 'upstream-branch' + process.env.SNAP_PULL_REQUEST_NUMBER = 'blah' expect(snap.configuration()).to.eql({ - service : 'snap', - commit : '5678', - build : '1234', - branch : 'upstream-branch', - pr : 'blah' - }); - }); -}); + service: 'snap', + commit: '5678', + build: '1234', + branch: 'upstream-branch', + pr: 'blah', + }) + }) +}) diff --git a/test/services/travis.js b/test/services/travis.js index e310c886..085c63b5 100644 --- a/test/services/travis.js +++ b/test/services/travis.js @@ -1,30 +1,28 @@ -var travis = require("../../lib/services/travis"); +var travis = require('../../lib/services/travis') -describe("Travis CI Provider", function(){ - - it ("can detect travis", function(){ - process.env.TRAVIS = "true"; - expect(travis.detect()).to.be(true); - }); - it ("can get travis env info get_commit_status", function(){ - process.env.TRAVIS = "true"; - process.env.TRAVIS_JOB_ID = '1234'; - process.env.TRAVIS_COMMIT = '5678'; - process.env.TRAVIS_JOB_NUMBER = '91011'; - process.env.TRAVIS_BRANCH = 'master'; - process.env.TRAVIS_PULL_REQUEST = 'blah'; - process.env.TRAVIS_BUILD_DIR = '/'; - process.env.TRAVIS_REPO_SLUG = 'owner/repo'; +describe('Travis CI Provider', function() { + it('can detect travis', function() { + process.env.TRAVIS = 'true' + expect(travis.detect()).to.be(true) + }) + it('can get travis env info get_commit_status', function() { + process.env.TRAVIS = 'true' + process.env.TRAVIS_JOB_ID = '1234' + process.env.TRAVIS_COMMIT = '5678' + process.env.TRAVIS_JOB_NUMBER = '91011' + process.env.TRAVIS_BRANCH = 'master' + process.env.TRAVIS_PULL_REQUEST = 'blah' + process.env.TRAVIS_BUILD_DIR = '/' + process.env.TRAVIS_REPO_SLUG = 'owner/repo' expect(travis.configuration()).to.eql({ - service : 'travis', - commit : '5678', - build : '91011', - branch : 'master', - root : '/', - job : '1234', - pr : 'blah', - slug : 'owner/repo' - }); - }); - -}); + service: 'travis', + commit: '5678', + build: '91011', + branch: 'master', + root: '/', + job: '1234', + pr: 'blah', + slug: 'owner/repo', + }) + }) +}) diff --git a/test/services/wercker.js b/test/services/wercker.js index 62d73c47..cff67829 100644 --- a/test/services/wercker.js +++ b/test/services/wercker.js @@ -1,27 +1,25 @@ -var wercker = require("../../lib/services/wercker"); +var wercker = require('../../lib/services/wercker') -describe("Wercker CI Provider", function(){ +describe('Wercker CI Provider', function() { + it('can detect wercker', function() { + process.env.WERCKER_MAIN_PIPELINE_STARTED = '1399372237' + expect(wercker.detect()).to.be(true) + }) - it ("can detect wercker", function(){ - process.env.WERCKER_MAIN_PIPELINE_STARTED = "1399372237"; - expect(wercker.detect()).to.be(true); - }); - - it ("can get wercker env info", function(){ - process.env.WERCKER_MAIN_PIPELINE_STARTED = "1399372237"; - process.env.WERCKER_GIT_COMMIT = "5678"; - process.env.WERCKER_GIT_BRANCH = "master"; - process.env.WERCKER_BUILD_URL = 'https://...'; - process.env.WERCKER_GIT_OWNER = 'owner'; - process.env.WERCKER_GIT_REPOSITORY = 'repo'; + it('can get wercker env info', function() { + process.env.WERCKER_MAIN_PIPELINE_STARTED = '1399372237' + process.env.WERCKER_GIT_COMMIT = '5678' + process.env.WERCKER_GIT_BRANCH = 'master' + process.env.WERCKER_BUILD_URL = 'https://...' + process.env.WERCKER_GIT_OWNER = 'owner' + process.env.WERCKER_GIT_REPOSITORY = 'repo' expect(wercker.configuration()).to.eql({ - service : 'wercker', - commit : '5678', - build : '1399372237', - branch : 'master', - build_url : 'https://...', - slug : 'owner/repo' - }); - }); - -}); + service: 'wercker', + commit: '5678', + build: '1399372237', + branch: 'master', + build_url: 'https://...', + slug: 'owner/repo', + }) + }) +}) diff --git a/test/upload.js b/test/upload.js index 97f792da..000811c8 100644 --- a/test/upload.js +++ b/test/upload.js @@ -1,113 +1,129 @@ -var fs = require('fs'); -var codecov = require('../lib/codecov'); -var offlineErrors = require('../lib/offline'); +var fs = require('fs') +var codecov = require('../lib/codecov') +var offlineErrors = require('../lib/offline') -describe("Codecov", function(){ - beforeEach(function(){ +describe('Codecov', function() { + beforeEach(function() { try { - fs.unlinkSync('report.tmp'); + fs.unlinkSync('report.tmp') } catch (e) {} - }); + }) - after(function(){ + after(function() { try { - fs.unlinkSync('report.tmp'); + fs.unlinkSync('report.tmp') } catch (e) {} - }); + }) - it("can get upload to v2", function(done){ - var self = this; - codecov.sendToCodecovV2('https://codecov.io', - { - token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', - commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', - branch: 'master' - }, - 'testing node-'+codecov.version, - function(body){ - expect(body).to.contain('https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a'); - done(); - }, - function(errCode, errMsg){ - if(offlineErrors.indexOf(errCode) !== -1){ - self.skip(); // offline - we can not test upload - return; - } - throw new Error(errMsg); - }); - }); + it('can get upload to v2', function(done) { + var self = this + codecov.sendToCodecovV2( + 'https://codecov.io', + { + token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', + commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', + branch: 'master', + }, + 'testing node-' + codecov.version, + function(body) { + expect(body).to.contain( + 'https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a' + ) + done() + }, + function(errCode, errMsg) { + if (offlineErrors.indexOf(errCode) !== -1) { + self.skip() // offline - we can not test upload + return + } + throw new Error(errMsg) + } + ) + }) - it("can remove files after uploading", function(done){ - fs.writeFileSync('report.tmp', ''); - expect(fs.exists('report.tmp')).to.be.true; + it('can remove files after uploading', function(done) { + fs.writeFileSync('report.tmp', '') + expect(fs.exists('report.tmp')).to.be.true - var self = this; - codecov.sendToCodecovV2('https://codecov.io', - { - token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', - commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', - file: 'report.tmp', - clear: true, - branch: 'master' - }, - 'testing node-'+codecov.version, - function(body){ - expect(body).to.contain('https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a'); - expect(fs.exists('report.tmp')).to.be.false; - done(); - }, - function(errCode, errMsg){ - if(offlineErrors.indexOf(errCode) !== -1){ - self.skip(); // offline - we can not test upload - return; - } - throw new Error(errMsg); - }); - }); + var self = this + codecov.sendToCodecovV2( + 'https://codecov.io', + { + token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', + commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', + file: 'report.tmp', + clear: true, + branch: 'master', + }, + 'testing node-' + codecov.version, + function(body) { + expect(body).to.contain( + 'https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a' + ) + expect(fs.exists('report.tmp')).to.be.false + done() + }, + function(errCode, errMsg) { + if (offlineErrors.indexOf(errCode) !== -1) { + self.skip() // offline - we can not test upload + return + } + throw new Error(errMsg) + } + ) + }) - it("can get upload to v3", function(done){ - var self = this; - this.timeout(3000); // give this test extra time to run (default is 2000ms) - codecov.sendToCodecovV3('https://codecov.io', - { - token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', - commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', - branch: 'master' - }, - 'testing node-'+codecov.version, - function(body){ - expect(body).to.contain('https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a'); - done(); - }, - function(errCode, errMsg){ - if(offlineErrors.indexOf(errCode) !== -1){ - self.skip(); // offline - we can not test upload - return; - } - throw new Error(errMsg); - }); - }); + it('can get upload to v3', function(done) { + var self = this + this.timeout(3000) // give this test extra time to run (default is 2000ms) + codecov.sendToCodecovV3( + 'https://codecov.io', + { + token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', + commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', + branch: 'master', + }, + 'testing node-' + codecov.version, + function(body) { + expect(body).to.contain( + 'https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a' + ) + done() + }, + function(errCode, errMsg) { + if (offlineErrors.indexOf(errCode) !== -1) { + self.skip() // offline - we can not test upload + return + } + throw new Error(errMsg) + } + ) + }) - it("upload v2 doesn't throw runtime error", function(done){ - expect(codecov.sendToCodecovV2.bind(null, - 'https://codecov.io', - { - token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', - commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', - branch: 'master' - }, - 'testing node-'+codecov.version, - function(body){ - expect(body).to.contain('https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a'); - done(); - }, - function(errCode, errMsg){ - if(offlineErrors.indexOf(errCode) !== -1){ - done(); - } - throw new Error(errMsg); - } - )).to.not.throwException(); - }); - -}); + it("upload v2 doesn't throw runtime error", function(done) { + expect( + codecov.sendToCodecovV2.bind( + null, + 'https://codecov.io', + { + token: 'f881216b-b5c0-4eb1-8f21-b51887d1d506', + commit: 'c739768fcac68144a3a6d82305b9c4106934d31a', + branch: 'master', + }, + 'testing node-' + codecov.version, + function(body) { + expect(body).to.contain( + 'https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a' + ) + done() + }, + function(errCode, errMsg) { + if (offlineErrors.indexOf(errCode) !== -1) { + done() + } + throw new Error(errMsg) + } + ) + ).to.not.throwException() + }) +}) diff --git a/testinit.js b/testinit.js index 19f5921e..970e1637 100644 --- a/testinit.js +++ b/testinit.js @@ -1 +1 @@ -expect = require('expect.js'); +expect = require('expect.js') From 05ccc1d934a8335ec99f1346e20a1972b8603f09 Mon Sep 17 00:00:00 2001 From: Ed Moore Date: Fri, 6 Jul 2018 21:46:21 +1000 Subject: [PATCH 2/4] Add husky and lint-staged for precommit prettier --- package-lock.json | 2450 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 17 +- 2 files changed, 2358 insertions(+), 109 deletions(-) diff --git a/package-lock.json b/package-lock.json index a58c25c4..30591733 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,17 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": + "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": + "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "dev": true, + "requires": { + "any-observable": "0.3.0" + } + }, "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", @@ -21,7 +32,8 @@ }, "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "resolved": + "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { @@ -36,6 +48,46 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": + "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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==", + "dev": true, + "requires": { + "color-convert": "1.9.2" + } + }, + "any-observable": { + "version": "0.3.0", + "resolved": + "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": + "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "app-root-path": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", + "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "dev": true + }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", @@ -50,6 +102,33 @@ "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=" }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": + "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": + "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -57,9 +136,17 @@ }, "assert-plus": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -71,6 +158,12 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", @@ -79,16 +172,89 @@ "aws4": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "integrity": + "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": + "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": + "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": + "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": + "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "resolved": + "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { @@ -105,19 +271,71 @@ }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "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" } }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": + "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, "browser-stdout": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "resolved": + "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", "dev": true }, + "cache-base": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": + "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -132,7 +350,8 @@ }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "resolved": + "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, @@ -141,6 +360,71 @@ "lazy-cache": "1.0.4" } }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": + "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": + "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": + "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": + "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, "cli": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", @@ -154,7 +438,8 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "integrity": + "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -167,6 +452,34 @@ } } }, + "cli-cursor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": + "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" + } + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -181,7 +494,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "resolved": + "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true @@ -193,9 +507,46 @@ "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=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.2", + "resolved": + "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": + "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": + "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, "combined-stream": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "resolved": + "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "1.0.0" @@ -210,25 +561,67 @@ "graceful-readlink": "1.0.1" } }, + "component-emitter": { + "version": "1.2.1", + "resolved": + "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": + "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-browserify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "resolved": + "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { "date-now": "0.1.4" } }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": + "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cosmiconfig": { + "version": "5.0.5", + "resolved": + "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.5.tgz", + "integrity": + "sha512-94j37OtvxS5w7qr7Ta6dt67tWdnOxigBVN4VnSxNXFez9o18PGQ0D33SchKP17r9LAcWVTYV72G6vDayAUBFIg==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.10.0", + "parse-json": "4.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": + "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", @@ -247,11 +640,19 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": + "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true + }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -269,20 +670,91 @@ }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "resolved": + "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true, "optional": true }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": + "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "define-property": { + "version": "2.0.2", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": + "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": + "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": + "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": + "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "diff": { @@ -293,7 +765,8 @@ }, "dom-serializer": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "resolved": + "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { @@ -303,13 +776,15 @@ "dependencies": { "domelementtype": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "resolved": + "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", "dev": true }, "entities": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "resolved": + "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", "dev": true } @@ -317,13 +792,15 @@ }, "domelementtype": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "resolved": + "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", "dev": true }, "domhandler": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "resolved": + "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", "dev": true, "requires": { @@ -349,15 +826,33 @@ "jsbn": "0.1.1" } }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, "entities": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", "dev": true }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": + "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "resolved": + "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, @@ -382,7 +877,8 @@ }, "estraverse": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "resolved": + "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", "dev": true }, @@ -392,12 +888,72 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "execa": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", + "integrity": + "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": + "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.8", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, "expect.js": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", @@ -409,25 +965,181 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, + "extend-shallow": { + "version": "3.0.2", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": + "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": + "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": + "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": + "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": + "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "extsprintf": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "resolved": + "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "resolved": + "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "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.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": + "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "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.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { "asynckit": "0.4.0", @@ -435,12 +1147,44 @@ "mime-types": "2.1.18" } }, + "fragment-cache": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "get-own-enumerable-property-symbols": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", + "integrity": + "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": + "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -451,7 +1195,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } @@ -471,7 +1216,8 @@ }, "graceful-readlink": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "resolved": + "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, @@ -483,7 +1229,8 @@ }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "resolved": + "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { @@ -495,7 +1242,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { @@ -506,24 +1254,77 @@ }, "har-schema": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "resolved": + "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" }, "har-validator": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "resolved": + "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "requires": { "ajv": "4.11.8", "har-schema": "1.0.5" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.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 + } + } + }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", @@ -548,7 +1349,8 @@ }, "htmlparser2": { "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "resolved": + "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "dev": true, "requires": { @@ -561,7 +1363,8 @@ }, "http-signature": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "resolved": + "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { "assert-plus": "0.2.0", @@ -569,14 +1372,38 @@ "sshpk": "1.14.2" } }, + "husky": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", + "integrity": + "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", + "dev": true, + "requires": { + "is-ci": "1.1.0", + "normalize-path": "1.0.0", + "strip-indent": "2.0.0" + } + }, "ignore-walk": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.0.tgz", - "integrity": "sha512-tKHrQ70YReq6IFyAs/XAQy91mgLVpLExNh3HrjExr6vqg8FLq/vd27D4eAN0K2PodhLjiQu5Xc2Q+AkW/T7hKQ==", + "resolved": + "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.0.tgz", + "integrity": + "sha512-tKHrQ70YReq6IFyAs/XAQy91mgLVpLExNh3HrjExr6vqg8FLq/vd27D4eAN0K2PodhLjiQu5Xc2Q+AkW/T7hKQ==", "requires": { "minimatch": "3.0.4" } }, + "indent-string": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -593,17 +1420,190 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": + "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "1.1.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": + "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": + "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": + "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "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-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "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.1" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": + "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "1.2.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": + "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": + "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.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=", + "dev": true + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-windows": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": + "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -616,6 +1616,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -643,6 +1649,27 @@ "wordwrap": "1.0.0" } }, + "jest-get-type": { + "version": "22.4.3", + "resolved": + "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": + "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-validate": { + "version": "23.3.0", + "resolved": + "https://registry.npmjs.org/jest-validate/-/jest-validate-23.3.0.tgz", + "integrity": "sha1-1Jvqaq2YwwrNLLtUJDR5igzBP3Y=", + "dev": true, + "requires": { + "chalk": "2.4.1", + "jest-get-type": "22.4.3", + "leven": "2.1.0", + "pretty-format": "23.2.0" + } + }, "js-yaml": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", @@ -683,14 +1710,24 @@ "strip-json-comments": "1.0.4" } }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": + "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "resolved": + "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-stable-stringify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "resolved": + "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { "jsonify": "0.0.0" @@ -698,7 +1735,8 @@ }, "json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "resolved": + "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json3": { @@ -725,7 +1763,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } @@ -741,11 +1780,18 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "resolved": + "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -756,6 +1802,242 @@ "type-check": "0.3.2" } }, + "lint-staged": { + "version": "7.2.0", + "resolved": + "https://registry.npmjs.org/lint-staged/-/lint-staged-7.2.0.tgz", + "integrity": + "sha512-jPoIMbmgtWMUrz/l0rhBVa1j6H71zr0rEoxDWBA333PZcaqBvELdg0Sf4tdGHlwrBM0GXaXMVgTRkLTm2vA7Jg==", + "dev": true, + "requires": { + "app-root-path": "2.1.0", + "chalk": "2.4.1", + "commander": "2.16.0", + "cosmiconfig": "5.0.5", + "debug": "3.1.0", + "dedent": "0.7.0", + "execa": "0.9.0", + "find-parent-dir": "0.3.0", + "is-glob": "4.0.0", + "is-windows": "1.0.2", + "jest-validate": "23.3.0", + "listr": "0.14.1", + "lodash": "4.17.10", + "log-symbols": "2.2.0", + "micromatch": "3.1.10", + "npm-which": "3.0.1", + "p-map": "1.2.0", + "path-is-inside": "1.0.2", + "pify": "3.0.0", + "please-upgrade-node": "3.1.1", + "staged-git-files": "1.1.1", + "string-argv": "0.0.2", + "stringify-object": "3.2.2" + }, + "dependencies": { + "commander": { + "version": "2.16.0", + "resolved": + "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", + "integrity": + "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", + "dev": true + }, + "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" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": + "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "listr": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.1.tgz", + "integrity": + "sha512-MSMUUVN1f8aRnPi4034RkOqdiUlpYW+FqwFE3aL0uYNPRavkt2S2SsSpDDofn8BDpqv2RNnsdOcCHWsChcq77A==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "0.3.0", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "6.2.1", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": + "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": + "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": + "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": + "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "lodash": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", @@ -764,7 +2046,8 @@ }, "lodash._baseassign": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "resolved": + "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { @@ -774,31 +2057,36 @@ }, "lodash._basecopy": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "resolved": + "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, "lodash._basecreate": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "resolved": + "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", "dev": true }, "lodash._getnative": { "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "resolved": + "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", "dev": true }, "lodash._isiterateecall": { "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "resolved": + "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", "dev": true }, "lodash.create": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "resolved": + "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { @@ -809,19 +2097,22 @@ }, "lodash.isarguments": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "resolved": + "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", "dev": true }, "lodash.isarray": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "resolved": + "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, "lodash.keys": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "resolved": + "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { @@ -830,21 +2121,104 @@ "lodash.isarray": "3.0.4" } }, + "log-symbols": { + "version": "2.2.0", + "resolved": + "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": + "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "2.4.1" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + } + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" - }, - "mime-types": { + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": + "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": + "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": + "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": + "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "resolved": + "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": + "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { "mime-db": "1.33.0" } @@ -863,6 +2237,31 @@ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "resolved": + "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": + "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": + "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -874,7 +2273,8 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": + "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -883,7 +2283,8 @@ "mocha": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "integrity": + "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -916,7 +2317,8 @@ }, "supports-color": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { @@ -931,6 +2333,35 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": + "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -940,11 +2371,108 @@ "abbrev": "1.0.9" } }, + "normalize-path": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": + "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "1.3.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": + "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, + "requires": { + "commander": "2.9.0", + "npm-path": "2.0.4", + "which": "1.3.0" + } + }, + "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 + }, "oauth-sign": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "resolved": + "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" }, + "object-assign": { + "version": "4.1.1", + "resolved": + "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": + "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": + "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -954,6 +2482,12 @@ "wrappy": "1.0.2" } }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -966,7 +2500,8 @@ "dependencies": { "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": + "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true } @@ -974,7 +2509,8 @@ }, "optionator": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "resolved": + "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { @@ -986,27 +2522,157 @@ "wordwrap": "1.0.0" } }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": + "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": + "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": + "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": + "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "performance-now": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "resolved": + "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "please-upgrade-node": { + "version": "3.1.1", + "resolved": + "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", + "integrity": + "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", + "dev": true, + "requires": { + "semver-compare": "1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": + "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "prelude-ls": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "resolved": + "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, "prettier": { "version": "1.13.7", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", - "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", + "integrity": + "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", + "dev": true + }, + "pretty-format": { + "version": "23.2.0", + "resolved": + "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz", + "integrity": "sha1-OwqqY8AYpTWDNzwcs6XZbMXoMBc=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "punycode": { @@ -1021,7 +2687,8 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": + "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { @@ -1031,12 +2698,40 @@ "string_decoder": "0.10.31" } }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": + "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": + "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "resolved": + "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, "request": { "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", @@ -1072,9 +2767,35 @@ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": + "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": + "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "resolved": + "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, @@ -1082,15 +2803,88 @@ "align-text": "0.1.4" } }, + "rxjs": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.1.tgz", + "integrity": + "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==", + "dev": true, + "requires": { + "tslib": "1.9.3" + } + }, "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==" + "resolved": + "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": + "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": + "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved": + "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": + "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": + "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "shelljs": { "version": "0.3.0", @@ -1098,6 +2892,145 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", "dev": true }, + "signal-exit": { + "version": "3.0.2", + "resolved": + "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": + "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": + "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": + "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.8", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": + "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": + "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": + "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": + "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": + "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": + "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": + "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", @@ -1108,7 +3041,8 @@ }, "source-map": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "dev": true, "optional": true, @@ -1116,9 +3050,43 @@ "amdefine": "1.0.1" } }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": + "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": + "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "2.1.1", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": + "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": + "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": + "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, "sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": + "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, @@ -1140,48 +3108,201 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } }, + "staged-git-files": { + "version": "1.1.1", + "resolved": + "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", + "integrity": + "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": + "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": + "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "string-argv": { + "version": "0.0.2", + "resolved": + "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true + }, + "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.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, "string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": + "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, + "stringify-object": { + "version": "3.2.2", + "resolved": + "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", + "integrity": + "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "2.0.1", + "is-obj": "1.0.1", + "is-regexp": "1.0.0" + } + }, "stringstream": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" + "resolved": + "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": + "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" + }, + "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" + }, + "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 + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": + "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true }, "strip-json-comments": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "resolved": + "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", "dev": true }, "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "resolved": + "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": + "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": + "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": + "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": + "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": + "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, "tough-cookie": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "resolved": + "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": + "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "1.4.1" } }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": + "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "resolved": + "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { "safe-buffer": "5.1.2" @@ -1195,7 +3316,8 @@ }, "type-check": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "resolved": + "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { @@ -1216,7 +3338,8 @@ "dependencies": { "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "resolved": + "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, "optional": true @@ -1225,20 +3348,135 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "resolved": + "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, + "union-value": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": + "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": + "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": + "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": + "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "urlgrey": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=" }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": + "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": + "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": + "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "verror": { "version": "1.10.0", @@ -1252,7 +3490,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": + "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } @@ -1268,7 +3507,8 @@ }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "resolved": + "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true @@ -1285,6 +3525,12 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", diff --git a/package.json b/package.json index 94ee920e..9ddcad70 100644 --- a/package.json +++ b/package.json @@ -4,18 +4,15 @@ "description": "Uploading report to Codecov: https://codecov.io", "main": "index.js", "scripts": { - "test": "./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha -- -R spec" + "precommit": "lint-staged", + "test": + "./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha -- -R spec" }, "repository": { "type": "git", "url": "https://github.com/codecov/codecov-node" }, - "keywords": [ - "coverage", - "code-coverage", - "codecov.io", - "codecov" - ], + "keywords": ["coverage", "code-coverage", "codecov.io", "codecov"], "bin": { "codecov": "./bin/codecov" }, @@ -36,9 +33,15 @@ }, "devDependencies": { "expect.js": "^0.3.1", + "husky": "0.14.3", "istanbul": "^0.4.5", "jshint": "^2.9.3", + "lint-staged": "7.2.0", "mocha": "^3.0.2", "prettier": "1.13.7" + }, + "lint-staged": { + "**/*.js": ["prettier --write --parser=babylon", "git add"], + "**/*.json": ["prettier --write --parser=json", "git add"] } } From abc5cfabbf06c9ea223238beff77fb426fd33c12 Mon Sep 17 00:00:00 2001 From: Ed Moore Date: Fri, 6 Jul 2018 22:11:23 +1000 Subject: [PATCH 3/4] Update test --- test/upload.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/upload.js b/test/upload.js index 000811c8..ca7b9ae9 100644 --- a/test/upload.js +++ b/test/upload.js @@ -43,7 +43,9 @@ describe('Codecov', function() { it('can remove files after uploading', function(done) { fs.writeFileSync('report.tmp', '') - expect(fs.exists('report.tmp')).to.be.true + fs.exists('report.tmp', function(exists) { + expect(exists).to.be.true + }) var self = this codecov.sendToCodecovV2( From 4ac7442863ae81ccacca5c5f047f3d7193305f1a Mon Sep 17 00:00:00 2001 From: Ed Moore Date: Fri, 6 Jul 2018 22:15:34 +1000 Subject: [PATCH 4/4] Fix test --- test/upload.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/upload.js b/test/upload.js index ca7b9ae9..37a2b113 100644 --- a/test/upload.js +++ b/test/upload.js @@ -62,7 +62,9 @@ describe('Codecov', function() { expect(body).to.contain( 'https://codecov.io/github/codecov/ci-repo/commit/c739768fcac68144a3a6d82305b9c4106934d31a' ) - expect(fs.exists('report.tmp')).to.be.false + fs.exists('report.tmp', function(exists) { + expect(exists).to.be.false + }) done() }, function(errCode, errMsg) {