From 632c3ff0af06c524a91164d7467cfcc441d0c688 Mon Sep 17 00:00:00 2001 From: Fabian Wiles Date: Sat, 14 Sep 2019 08:15:59 +1200 Subject: [PATCH] feat(builtin): enable coverage on nodejs_test --- internal/node/BUILD.bazel | 1 + internal/node/node.bzl | 8 + internal/node/process_coverage.js | 105 + internal/node/test/coverage/BUILD.bazel | 10 + .../node/test/coverage/produces-coverage.js | 3 + .../test/coverage/produces-coverage.spec.js | 13 + package.json | 1 - packages/jasmine/src/index.from_src.bzl | 2 +- packages/jasmine/src/jasmine_node_test.bzl | 5 - packages/jasmine/src/jasmine_runner.js | 64 +- scripts/vendor_npm.sh | 16 + .../npm/node_modules/v8-coverage/BUILD.bazel | 2757 +++++++++++++ .../npm/node_modules/v8-coverage/index.js | 3573 +++++++++++++++++ .../v8-coverage/lib/clover/index.js | 164 + .../v8-coverage/lib/cobertura/index.js | 142 + .../v8-coverage/lib/html/annotator.js | 227 ++ .../v8-coverage/lib/html/assets/base.css | 212 + .../lib/html/assets/sort-arrow-sprite.png | Bin 0 -> 209 bytes .../v8-coverage/lib/html/assets/sorter.js | 158 + .../lib/html/assets/vendor/prettify.css | 1 + .../lib/html/assets/vendor/prettify.js | 1 + .../v8-coverage/lib/html/helpers.js | 79 + .../v8-coverage/lib/html/index.js | 224 ++ .../v8-coverage/lib/html/insertion-text.js | 108 + .../v8-coverage/lib/html/templates/foot.txt | 20 + .../v8-coverage/lib/html/templates/head.txt | 60 + .../v8-coverage/lib/json-summary/index.js | 48 + .../v8-coverage/lib/json/index.js | 39 + .../v8-coverage/lib/lcov/index.js | 29 + .../v8-coverage/lib/lcovonly/index.js | 69 + .../v8-coverage/lib/none/index.js | 9 + .../v8-coverage/lib/teamcity/index.js | 45 + .../v8-coverage/lib/text-lcov/index.js | 14 + .../v8-coverage/lib/text-summary/index.js | 49 + .../v8-coverage/lib/text/index.js | 197 + third_party/package.json | 25 +- third_party/yarn.lock | 652 ++- yarn.lock | 257 +- 38 files changed, 9052 insertions(+), 335 deletions(-) create mode 100644 internal/node/process_coverage.js create mode 100644 internal/node/test/coverage/BUILD.bazel create mode 100644 internal/node/test/coverage/produces-coverage.js create mode 100644 internal/node/test/coverage/produces-coverage.spec.js create mode 100644 third_party/npm/node_modules/v8-coverage/BUILD.bazel create mode 100644 third_party/npm/node_modules/v8-coverage/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/clover/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/cobertura/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/annotator.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/assets/base.css create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/assets/sort-arrow-sprite.png create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/assets/sorter.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.css create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/helpers.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/insertion-text.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/templates/foot.txt create mode 100644 third_party/npm/node_modules/v8-coverage/lib/html/templates/head.txt create mode 100644 third_party/npm/node_modules/v8-coverage/lib/json-summary/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/json/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/lcov/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/lcovonly/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/none/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/teamcity/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/text-lcov/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/text-summary/index.js create mode 100644 third_party/npm/node_modules/v8-coverage/lib/text/index.js diff --git a/internal/node/BUILD.bazel b/internal/node/BUILD.bazel index 997c88b658..a71dc96f2f 100644 --- a/internal/node/BUILD.bazel +++ b/internal/node/BUILD.bazel @@ -31,6 +31,7 @@ exports_files([ "node_repositories.bzl", # Exported to be consumed for generating skydoc. "node_launcher.sh", "node_loader.js", + "process_coverage.js", "BUILD.nodejs_host_os_alias.tpl", ]) diff --git a/internal/node/node.bzl b/internal/node/node.bzl index 3cb0dd3cd7..416a8b355b 100644 --- a/internal/node/node.bzl +++ b/internal/node/node.bzl @@ -155,6 +155,14 @@ def _nodejs_binary_impl(ctx): if k in ctx.var.keys(): env_vars += "export %s=\"%s\"\n" % (k, ctx.var[k]) + # indicates that this was run with `bazel coverage` + # and that we should collect and store coverage + # TODO: store coverage in the location bazel tells us + if ctx.configuration.coverage_enabled: + # TODO: not sure if $RANDOM is the best var here + # but we need a new dir between runs + env_vars += "export NODE_V8_COVERAGE=$TEST_TMPDIR/$RANDOM\n" + expected_exit_code = 0 if hasattr(ctx.attr, "expected_exit_code"): expected_exit_code = ctx.attr.expected_exit_code diff --git a/internal/node/process_coverage.js b/internal/node/process_coverage.js new file mode 100644 index 0000000000..9baa49de1f --- /dev/null +++ b/internal/node/process_coverage.js @@ -0,0 +1,105 @@ + +const path = require('path') +const fs = require('fs'); + +const sep = path.sep; + +const FILE_PROTOCOL = 'file://'; +const IS_TEST_FILE = /[^a-zA-Z0-9](spec|test)\.js$/i; +// TODO: needs proper test +const IS_EXTERNAL = new RegExp(`${sep}external${sep}`); +const IS_THIRD_PARTY = new RegExp(`${sep}build_bazel_rules_nodejs${sep}third_party${sep}`); +const IS_LINKER_SCRIPT = + new RegExp(`${sep}build_bazel_rules_nodejs${sep}internal${sep}linker${sep}index.js`); +const NODE_LOADER_SCRIPT = process.argv[2]; + +// Run Bazel with --define=VERBOSE_LOGS=1 to enable this logging +const VERBOSE_LOGS = !!process.env['VERBOSE_LOGS']; + +function log_verbose(...m) { + if (VERBOSE_LOGS) console.error('[process_coverage.js]', ...m); +} + +function panic(m) { + throw new Error(`Internal error! Please run again with + --define=VERBOSE_LOG=1 +and file an issue: https://github.com/bazelbuild/rules_nodejs/issues/new?template=bug_report.md +Include as much of the build output as you can without disclosing anything confidential. + Error: + ${m} + `); +} + +function shouldCoverFile(filePath) { + // some coverage collected is from internal nodejs modules + // these modules don't prefix with a file protocol + // so we can filter them out here + if (!filePath.startsWith(FILE_PROTOCOL)) { + return false; + } + const trimmedPath = filePath.replace(FILE_PROTOCOL, ''); + + // filter out all in third_party + // such as /third_party/github.com/source-map-support + if (IS_THIRD_PARTY.test(trimmedPath)) { + return false; + } + // fitler out all "external" - this should include node_modules + if (IS_EXTERNAL.test(trimmedPath)) { + return false; + } + // don't show coverage for the spec files themselves + if (IS_TEST_FILE.test(trimmedPath)) { + return false; + } + // filter out scripts added by rules_nodejs + if (IS_LINKER_SCRIPT.test(trimmedPath)) { + return false; + } + + // filter out the node_launcher.sh script + if (trimmedPath.includes(NODE_LOADER_SCRIPT)) { + return false; + } + + return true; +} + +function main() { + const v8_coverage_package = path.resolve(process.cwd(), '../build_bazel_rules_nodejs/third_party/npm/node_modules/v8-coverage'); + const Report = require(v8_coverage_package); + + const covDir = process.env.NODE_V8_COVERAGE; + const reportReadDir = path.join(covDir, 'tmp') + + if(!fs.existsSync(reportReadDir)) { + fs.mkdirSync(reportReadDir) + } + + // TODO: allow report type to be configurable + const report = new Report(covDir, ['text-summary']); + + const rawV8CoverageFiles = fs.readdirSync(covDir); + // Only store the files we actually want coverage for + // This also converts them to instanbul format + // when we hit report.store() + for (const filePath of rawV8CoverageFiles) { + const fullPath = path.join(covDir, filePath); + if (fs.statSync(fullPath).isFile()) { + const file = fs.readFileSync(fullPath); + const v8Cov = JSON.parse(file); + + const filteredResult = v8Cov.result.filter(s => { + return shouldCoverFile(s.url); + }); + log_verbose('code covered files', filteredResult.map(a => a.url)) + + // when we store them like this it also converts them to istanbul format + report.store(filteredResult) + } + } + + report.generateReport(); +} + +main(); \ No newline at end of file diff --git a/internal/node/test/coverage/BUILD.bazel b/internal/node/test/coverage/BUILD.bazel new file mode 100644 index 0000000000..52201cc8bc --- /dev/null +++ b/internal/node/test/coverage/BUILD.bazel @@ -0,0 +1,10 @@ +load("//:defs.bzl", "nodejs_test") + +nodejs_test( + name = "coverage", + data = [ + "produces-coverage.js", + "produces-coverage.spec.js", + ], + entry_point = ":produces-coverage.spec.js", +) diff --git a/internal/node/test/coverage/produces-coverage.js b/internal/node/test/coverage/produces-coverage.js new file mode 100644 index 0000000000..2355590a57 --- /dev/null +++ b/internal/node/test/coverage/produces-coverage.js @@ -0,0 +1,3 @@ +exports.greaterThan5 = function(input) { + return input > 5; +} \ No newline at end of file diff --git a/internal/node/test/coverage/produces-coverage.spec.js b/internal/node/test/coverage/produces-coverage.spec.js new file mode 100644 index 0000000000..94ddde1856 --- /dev/null +++ b/internal/node/test/coverage/produces-coverage.spec.js @@ -0,0 +1,13 @@ +const lib = require('./produces-coverage'); +const assert = require('assert'); + +if (!process.env['NODE_V8_COVERAGE']) { + console.log( + `expected process.env['NODE_V8_COVERAGE'] to be defined - run this with: bazel coverage`); +} + +function test() { + assert.equal(lib.greaterThan5(6), true); +} + +test(); \ No newline at end of file diff --git a/package.json b/package.json index 971471037c..77c14a64e4 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,6 @@ "typeorm": "0.2.18", "typescript": "3.1.6", "unidiff": "1.0.1", - "v8-coverage": "1.0.9", "webpack": "~4.29.3", "zone.js": "0.8.29" }, diff --git a/packages/jasmine/src/index.from_src.bzl b/packages/jasmine/src/index.from_src.bzl index 7aa34a0ef2..d3d5742f4f 100644 --- a/packages/jasmine/src/index.from_src.bzl +++ b/packages/jasmine/src/index.from_src.bzl @@ -19,7 +19,7 @@ load(":index.bzl", _jasmine_node_test = "jasmine_node_test") def jasmine_node_test( deps = [], - jasmine_deps = ["@npm//jasmine", "@npm//jasmine-core", "@npm//v8-coverage"], + jasmine_deps = ["@npm//jasmine", "@npm//jasmine-core"], **kwargs): _jasmine_node_test( # When there is no @npm//@bazel/jasmine package we use @npm_bazel_jasmine instead. diff --git a/packages/jasmine/src/jasmine_node_test.bzl b/packages/jasmine/src/jasmine_node_test.bzl index 10b520810c..fc80d827c4 100644 --- a/packages/jasmine/src/jasmine_node_test.bzl +++ b/packages/jasmine/src/jasmine_node_test.bzl @@ -74,11 +74,6 @@ def jasmine_node_test( templated_args = kwargs.pop("templated_args", []) templated_args.append("$(location :%s_devmode_srcs.MF)" % name) - if coverage: - templated_args.append("--coverage") - else: - templated_args.append("--nocoverage") - if config_file: # Calculate a label relative to the user's BUILD file pkg = Label("%s//%s:__pkg__" % (native.repository_name(), native.package_name())) diff --git a/packages/jasmine/src/jasmine_runner.js b/packages/jasmine/src/jasmine_runner.js index 49c40b454e..c7ca4e00d4 100644 --- a/packages/jasmine/src/jasmine_runner.js +++ b/packages/jasmine/src/jasmine_runner.js @@ -1,5 +1,4 @@ const fs = require('fs'); -const path = require('path'); const bazelJasmine = require('@bazel/jasmine'); const JasmineRunner = bazelJasmine.jasmine; @@ -60,22 +59,16 @@ function readArg() { } function main(args) { - if (args.length < 3) { + if (args.length < 2) { throw new Error('expected argument missing'); } // first args is always the path to the manifest const manifest = require.resolve(readArg()); - // second is always a flag to enable coverage or not - const coverageArg = readArg(); - const enableCoverage = coverageArg === '--coverage'; // config file is the next arg const configFile = readArg(); - // the relative directory the coverage reporter uses to find anf filter the files - const cwd = process.cwd(); - const jrunner = new JasmineRunner({jasmineCore: jasmineCore}); if (configFile !== '--noconfig') { jrunner.loadConfigFile(require.resolve(configFile)); @@ -86,17 +79,6 @@ function main(args) { // Filter out files from node_modules .filter(f => !IS_NODE_MODULE.test(f)) - const sourceFiles = allFiles - // Filter out all .spec and .test files so we only report - // coverage against the source files - .filter(f => !IS_TEST_FILE.test(f)) - // the jasmine_runner.js gets in here as a file to run - .filter(f => !f.endsWith('jasmine_runner.js')) - .map(f => require.resolve(f)) - // the reporting lib resolves the relative path to our cwd instead of - // using the absolute one so match it here - .map(f => path.relative(cwd, f)) - allFiles // Filter here so that only files ending in `spec.js` and `test.js` // are added to jasmine as spec files. This is important as other @@ -116,53 +98,11 @@ function main(args) { // so we need to add it back jrunner.configureDefaultReporter({}); - - let covExecutor; - let covDir; - if (enableCoverage) { - // lazily pull these deps in for only when we want to collect coverage - const crypto = require('crypto'); - const Execute = require('v8-coverage/src/execute'); - - // make a tmpdir inside our tmpdir for just this run - covDir = path.join(process.env['TEST_TMPDIR'], String(crypto.randomBytes(4).readUInt32LE(0))); - covExecutor = new Execute({include: sourceFiles, exclude: []}); - covExecutor.startProfiler(); - } - jrunner.onComplete((passed) => { let exitCode = passed ? 0 : BAZEL_EXIT_TESTS_FAILED; if (noSpecsFound) exitCode = BAZEL_EXIT_NO_TESTS_FOUND; - if (enableCoverage) { - const Report = require('v8-coverage/src/report'); - covExecutor.stopProfiler((err, data) => { - if (err) { - console.error(err); - process.exit(1); - } - const sourceCoverge = covExecutor.filterResult(data.result); - // we could do this all in memory if we wanted - // just take a look at v8-coverage/src/report.js and reimplement some of those methods - // but we're going to have to write a file at some point for bazel coverage - // so may as well support it now - // the lib expects these paths to exist for some reason - fs.mkdirSync(covDir); - fs.mkdirSync(path.join(covDir, 'tmp')); - // only do a text summary for now - // once we know what format bazel coverage wants we can output - // lcov or some other format - const report = new Report(covDir, ['text-summary']); - report.store(sourceCoverge); - report.generateReport(); - - process.exit(exitCode); - }); - } else { - process.exit(exitCode); - } - - + process.exit(exitCode); }); if (TOTAL_SHARDS) { diff --git a/scripts/vendor_npm.sh b/scripts/vendor_npm.sh index 12f95ff7bd..2dde6a6fd3 100755 --- a/scripts/vendor_npm.sh +++ b/scripts/vendor_npm.sh @@ -281,5 +281,21 @@ $(cat ${THIRD_PARTY_DIR}/yarn.lock | awk '{print "# "$0}') ) done + ############################################################################## + # c8 + ############################################################################## + ( + prep v8-coverage + ncc src/report.js + echo """filegroup( + name = \"package_contents\", + srcs = glob([\"**/*.js\"]) + [ + \"BUILD.bazel\", + ], +) +""" >> ${DST_DIR}/BUILD.bazel + build_file_footer + ) + rm -rf node_modules ) diff --git a/third_party/npm/node_modules/v8-coverage/BUILD.bazel b/third_party/npm/node_modules/v8-coverage/BUILD.bazel new file mode 100644 index 0000000000..386e25a75b --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/BUILD.bazel @@ -0,0 +1,2757 @@ +package(default_visibility = ["//visibility:public"]) + + +filegroup( + name = "package_contents", + srcs = glob(["**/*.js"]) + [ + "BUILD.bazel", + ], +) + +# shell commands: +# third_party/node_modules/.bin/ncc build third_party/node_modules/v8-coverage/src/report.js -o third_party/npm/node_modules/v8-coverage + +# package.json (SHA256 675e6ce77615a2f9ca1d0a1ac301392e3e658e766a26818af951b225baefafa6): +# { +# "private": true, +# "devDependencies": { +# "@babel/core": "7.5.5", +# "@babel/preset-es2015": "7.0.0-beta.53", +# "@zeit/ncc": "0.20.4", +# "babelify": "10.0.0", +# "base64-js": "1.3.1", +# "browserify": "16.5.0", +# "ieee754": "1.1.13", +# "named-amd": "1.0.0", +# "terser": "4.1.4" +# }, +# "dependencies": { +# "c8": "^5.0.4", +# "v8-coverage": "^1.0.9" +# } +# } + +# yarn.lock (SHA256 14437d8f4ca1e2b1c2f07a252194dfda4a15ee5644dd46c2acdd59012d09fd7f): +# # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# # yarn lockfile v1 +# +# +# "@babel/code-frame@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz#980d1560b863575bf5a377925037e0132ef5921e" +# integrity sha1-mA0VYLhjV1v1o3eSUDfgEy71kh4= +# dependencies: +# "@babel/highlight" "7.0.0-beta.53" +# +# "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": +# version "7.5.5" +# resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" +# integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== +# dependencies: +# "@babel/highlight" "^7.0.0" +# +# "@babel/core@7.5.5": +# version "7.5.5" +# resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30" +# integrity sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg== +# dependencies: +# "@babel/code-frame" "^7.5.5" +# "@babel/generator" "^7.5.5" +# "@babel/helpers" "^7.5.5" +# "@babel/parser" "^7.5.5" +# "@babel/template" "^7.4.4" +# "@babel/traverse" "^7.5.5" +# "@babel/types" "^7.5.5" +# convert-source-map "^1.1.0" +# debug "^4.1.0" +# json5 "^2.1.0" +# lodash "^4.17.13" +# resolve "^1.3.2" +# semver "^5.4.1" +# source-map "^0.5.0" +# +# "@babel/generator@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.53.tgz#b8cad72c572be3234affde22be6dacc4250e034b" +# integrity sha1-uMrXLFcr4yNK/94ivm2sxCUOA0s= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# jsesc "^2.5.1" +# lodash "^4.17.5" +# source-map "^0.5.0" +# trim-right "^1.0.1" +# +# "@babel/generator@^7.5.5": +# version "7.5.5" +# resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" +# integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ== +# dependencies: +# "@babel/types" "^7.5.5" +# jsesc "^2.5.1" +# lodash "^4.17.13" +# source-map "^0.5.0" +# trim-right "^1.0.1" +# +# "@babel/helper-annotate-as-pure@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz#59960628375cbeef96a07edfe1ca38b756f01aa8" +# integrity sha1-WZYGKDdcvu+WoH7f4co4t1bwGqg= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-call-delegate@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.53.tgz#95de8babd03f9e6cf4f2b564a038708c138ffe31" +# integrity sha1-ld6Lq9A/nmz08rVkoDhwjBOP/jE= +# dependencies: +# "@babel/helper-hoist-variables" "7.0.0-beta.53" +# "@babel/traverse" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-define-map@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.53.tgz#48e9e2265453787975043efaab1edad239ea9695" +# integrity sha1-SOniJlRTeHl1BD76qx7a0jnqlpU= +# dependencies: +# "@babel/helper-function-name" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# lodash "^4.17.5" +# +# "@babel/helper-function-name@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.53.tgz#512804ae8e9cbce5431ebea19e47628c2ed653f2" +# integrity sha1-USgEro6cvOVDHr6hnkdijC7WU/I= +# dependencies: +# "@babel/helper-get-function-arity" "7.0.0-beta.53" +# "@babel/template" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-function-name@^7.1.0": +# version "7.1.0" +# resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" +# integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +# dependencies: +# "@babel/helper-get-function-arity" "^7.0.0" +# "@babel/template" "^7.1.0" +# "@babel/types" "^7.0.0" +# +# "@babel/helper-get-function-arity@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.53.tgz#ded88ab29f9b1db61c87d1bb8d38a35dda779de6" +# integrity sha1-3tiKsp+bHbYch9G7jTijXdp3neY= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-get-function-arity@^7.0.0": +# version "7.0.0" +# resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" +# integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== +# dependencies: +# "@babel/types" "^7.0.0" +# +# "@babel/helper-hoist-variables@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.53.tgz#4c27e3b873fa09c5ad6e93eb40704c200f84137c" +# integrity sha1-TCfjuHP6CcWtbpPrQHBMIA+EE3w= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-member-expression-to-functions@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.53.tgz#0fb0ef8b2d3b903d1c3bf426da4a74575e019ce4" +# integrity sha1-D7Dviy07kD0cO/Qm2kp0V14BnOQ= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-module-imports@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz#e735e6aa30a504b0f9d85c38a6d470a9f4aa81d9" +# integrity sha1-5zXmqjClBLD52Fw4ptRwqfSqgdk= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# lodash "^4.17.5" +# +# "@babel/helper-module-transforms@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.53.tgz#7ba214cdcc8f8623f2d1797deaff1ff349aace13" +# integrity sha1-e6IUzcyPhiPy0Xl96v8f80mqzhM= +# dependencies: +# "@babel/helper-module-imports" "7.0.0-beta.53" +# "@babel/helper-simple-access" "7.0.0-beta.53" +# "@babel/helper-split-export-declaration" "7.0.0-beta.53" +# "@babel/template" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# lodash "^4.17.5" +# +# "@babel/helper-optimise-call-expression@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.53.tgz#8fc78ef4c0f69f8bb3bbdf34cd232c20120414c8" +# integrity sha1-j8eO9MD2n4uzu980zSMsIBIEFMg= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-plugin-utils@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz#d64458636ffc258b42714a9dd93aeb6f8b8cf3ed" +# integrity sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0= +# +# "@babel/helper-regex@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-beta.53.tgz#6e9d2197b562779e225565946ae9a85c215b225e" +# integrity sha1-bp0hl7Vid54iVWWUaumoXCFbIl4= +# dependencies: +# lodash "^4.17.5" +# +# "@babel/helper-replace-supers@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.53.tgz#339b5bdc102294495b1a27c558132306e1b7bca7" +# integrity sha1-M5tb3BAilElbGifFWBMjBuG3vKc= +# dependencies: +# "@babel/helper-member-expression-to-functions" "7.0.0-beta.53" +# "@babel/helper-optimise-call-expression" "7.0.0-beta.53" +# "@babel/traverse" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-simple-access@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.53.tgz#72f6db9abe42f8681fa6f028efd59d81544752b3" +# integrity sha1-cvbbmr5C+GgfpvAo79WdgVRHUrM= +# dependencies: +# "@babel/template" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# lodash "^4.17.5" +# +# "@babel/helper-split-export-declaration@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz#aef54b8b1f99616ea37c98478716a3780263325b" +# integrity sha1-rvVLix+ZYW6jfJhHhxajeAJjMls= +# dependencies: +# "@babel/types" "7.0.0-beta.53" +# +# "@babel/helper-split-export-declaration@^7.4.4": +# version "7.4.4" +# resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" +# integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== +# dependencies: +# "@babel/types" "^7.4.4" +# +# "@babel/helpers@^7.5.5": +# version "7.5.5" +# resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e" +# integrity sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g== +# dependencies: +# "@babel/template" "^7.4.4" +# "@babel/traverse" "^7.5.5" +# "@babel/types" "^7.5.5" +# +# "@babel/highlight@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.53.tgz#f4e952dad1787d205e188d3e384cdce49ca368fb" +# integrity sha1-9OlS2tF4fSBeGI0+OEzc5JyjaPs= +# dependencies: +# chalk "^2.0.0" +# esutils "^2.0.2" +# js-tokens "^3.0.0" +# +# "@babel/highlight@^7.0.0": +# version "7.5.0" +# resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" +# integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +# dependencies: +# chalk "^2.0.0" +# esutils "^2.0.2" +# js-tokens "^4.0.0" +# +# "@babel/parser@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.53.tgz#1f45eb617bf9463d482b2c04d349d9e4edbf4892" +# integrity sha1-H0XrYXv5Rj1IKywE00nZ5O2/SJI= +# +# "@babel/parser@^7.4.4", "@babel/parser@^7.5.5": +# version "7.5.5" +# resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" +# integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== +# +# "@babel/plugin-transform-arrow-functions@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.53.tgz#a75f5fa8497aac1729d033bf41c250416b9d1e04" +# integrity sha1-p19fqEl6rBcp0DO/QcJQQWudHgQ= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-block-scoped-functions@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.53.tgz#0a43221a1b0c90cd4d09f1b46b959dd248657f73" +# integrity sha1-CkMiGhsMkM1NCfG0a5Wd0khlf3M= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-block-scoping@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.53.tgz#9efd6e50ca1fa398dcaa7119621da3f1fbb821b6" +# integrity sha1-nv1uUMofo5jcqnEZYh2j8fu4IbY= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# lodash "^4.17.5" +# +# "@babel/plugin-transform-classes@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.53.tgz#5dc2ec31bf1e98066acdf0c4887b7744c14bec6e" +# integrity sha1-XcLsMb8emAZqzfDEiHt3RMFL7G4= +# dependencies: +# "@babel/helper-annotate-as-pure" "7.0.0-beta.53" +# "@babel/helper-define-map" "7.0.0-beta.53" +# "@babel/helper-function-name" "7.0.0-beta.53" +# "@babel/helper-optimise-call-expression" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# "@babel/helper-replace-supers" "7.0.0-beta.53" +# "@babel/helper-split-export-declaration" "7.0.0-beta.53" +# globals "^11.1.0" +# +# "@babel/plugin-transform-computed-properties@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.53.tgz#9747e26082ae94eda530f98d2c2059e8d2dbc005" +# integrity sha1-l0fiYIKulO2lMPmNLCBZ6NLbwAU= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-destructuring@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.53.tgz#0f0adb0e1a6dcd35a3664101609ec062ff127a76" +# integrity sha1-DwrbDhptzTWjZkEBYJ7AYv8SenY= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-duplicate-keys@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.53.tgz#0f559913abfa18239ca4e08f73eec36c5e57b81f" +# integrity sha1-D1WZE6v6GCOcpOCPc+7DbF5XuB8= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-for-of@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.53.tgz#fa065215e18569c8f74dd524b5721e11dcca973b" +# integrity sha1-+gZSFeGFacj3TdUktXIeEdzKlzs= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-function-name@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.53.tgz#2b3a5bb364c1e1c57eccbfe25c6bf55f2804113e" +# integrity sha1-Kzpbs2TB4cV+zL/iXGv1XygEET4= +# dependencies: +# "@babel/helper-function-name" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-instanceof@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-instanceof/-/plugin-transform-instanceof-7.0.0-beta.53.tgz#582d82b725188201ad0e2231f1fce94c745a2c06" +# integrity sha1-WC2CtyUYggGtDiIx8fzpTHRaLAY= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-literals@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.53.tgz#bec4f144e9a96ef5121d1430c7ebe5fd088657c9" +# integrity sha1-vsTxROmpbvUSHRQwx+vl/QiGV8k= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-modules-amd@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.53.tgz#5854d739e679233a8877c0b418269c6beb7a322c" +# integrity sha1-WFTXOeZ5IzqId8C0GCaca+t6Miw= +# dependencies: +# "@babel/helper-module-transforms" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-modules-commonjs@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.53.tgz#ebc3fba1c5a6c8743b909403ecd3e7e3681cafa5" +# integrity sha1-68P7ocWmyHQ7kJQD7NPn42gcr6U= +# dependencies: +# "@babel/helper-module-transforms" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# "@babel/helper-simple-access" "7.0.0-beta.53" +# +# "@babel/plugin-transform-modules-systemjs@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.53.tgz#b80fcd9c15972dc6823214f5248527860bbf058e" +# integrity sha1-uA/NnBWXLcaCMhT1JIUnhgu/BY4= +# dependencies: +# "@babel/helper-hoist-variables" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-modules-umd@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.53.tgz#2a36abe40a1da676e43a1c3071578e27bd2d679d" +# integrity sha1-Kjar5AodpnbkOhwwcVeOJ70tZ50= +# dependencies: +# "@babel/helper-module-transforms" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-object-super@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.53.tgz#e2c4f06edb34b3d7a4b2757ba18829d0df2029cb" +# integrity sha1-4sTwbts0s9eksnV7oYgp0N8gKcs= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# "@babel/helper-replace-supers" "7.0.0-beta.53" +# +# "@babel/plugin-transform-parameters@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.53.tgz#efe60cec8ceca0d19d5c6fa1ae79bc4e33279d56" +# integrity sha1-7+YM7IzsoNGdXG+hrnm8TjMnnVY= +# dependencies: +# "@babel/helper-call-delegate" "7.0.0-beta.53" +# "@babel/helper-get-function-arity" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-regenerator@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.53.tgz#4febbf6084afa0c1c9ec8497de68c0695fe9da0b" +# integrity sha1-T+u/YISvoMHJ7ISX3mjAaV/p2gs= +# dependencies: +# regenerator-transform "^0.13.3" +# +# "@babel/plugin-transform-shorthand-properties@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.53.tgz#dfc4881b6bd7658a0031ec3b8163e588f0898d4b" +# integrity sha1-38SIG2vXZYoAMew7gWPliPCJjUs= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-spread@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.53.tgz#83e8f646ca24f1c98228f9f1444cf60cbd4938bc" +# integrity sha1-g+j2Rsok8cmCKPnxREz2DL1JOLw= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-sticky-regex@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.53.tgz#0fcf3c994abdd8bab59ba9782fe4d9f8a545d6e7" +# integrity sha1-D888mUq92Lq1m6l4L+TZ+KVF1uc= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# "@babel/helper-regex" "7.0.0-beta.53" +# +# "@babel/plugin-transform-template-literals@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.53.tgz#fa6b0b417100d23e2db14c1df47a2b1b3978f1d9" +# integrity sha1-+msLQXEA0j4tsUwd9HorGzl48dk= +# dependencies: +# "@babel/helper-annotate-as-pure" "7.0.0-beta.53" +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-typeof-symbol@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.53.tgz#65aae871a9aa40f611483665731209aebd5c2a2b" +# integrity sha1-ZarocamqQPYRSDZlcxIJrr1cKis= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# +# "@babel/plugin-transform-unicode-regex@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.53.tgz#0af74ec8019e7d59e38be64db7f62291942fed25" +# integrity sha1-CvdOyAGefVnji+ZNt/YikZQv7SU= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# "@babel/helper-regex" "7.0.0-beta.53" +# regexpu-core "^4.1.3" +# +# "@babel/preset-es2015@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/preset-es2015/-/preset-es2015-7.0.0-beta.53.tgz#4982fa1948db1093766288f69913e2ce360311e4" +# integrity sha1-SYL6GUjbEJN2Yoj2mRPizjYDEeQ= +# dependencies: +# "@babel/helper-plugin-utils" "7.0.0-beta.53" +# "@babel/plugin-transform-arrow-functions" "7.0.0-beta.53" +# "@babel/plugin-transform-block-scoped-functions" "7.0.0-beta.53" +# "@babel/plugin-transform-block-scoping" "7.0.0-beta.53" +# "@babel/plugin-transform-classes" "7.0.0-beta.53" +# "@babel/plugin-transform-computed-properties" "7.0.0-beta.53" +# "@babel/plugin-transform-destructuring" "7.0.0-beta.53" +# "@babel/plugin-transform-duplicate-keys" "7.0.0-beta.53" +# "@babel/plugin-transform-for-of" "7.0.0-beta.53" +# "@babel/plugin-transform-function-name" "7.0.0-beta.53" +# "@babel/plugin-transform-instanceof" "7.0.0-beta.53" +# "@babel/plugin-transform-literals" "7.0.0-beta.53" +# "@babel/plugin-transform-modules-amd" "7.0.0-beta.53" +# "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.53" +# "@babel/plugin-transform-modules-systemjs" "7.0.0-beta.53" +# "@babel/plugin-transform-modules-umd" "7.0.0-beta.53" +# "@babel/plugin-transform-object-super" "7.0.0-beta.53" +# "@babel/plugin-transform-parameters" "7.0.0-beta.53" +# "@babel/plugin-transform-regenerator" "7.0.0-beta.53" +# "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.53" +# "@babel/plugin-transform-spread" "7.0.0-beta.53" +# "@babel/plugin-transform-sticky-regex" "7.0.0-beta.53" +# "@babel/plugin-transform-template-literals" "7.0.0-beta.53" +# "@babel/plugin-transform-typeof-symbol" "7.0.0-beta.53" +# "@babel/plugin-transform-unicode-regex" "7.0.0-beta.53" +# +# "@babel/template@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.53.tgz#3322290900d0b187b0a7174381e1f3bb71050d2e" +# integrity sha1-MyIpCQDQsYewpxdDgeHzu3EFDS4= +# dependencies: +# "@babel/code-frame" "7.0.0-beta.53" +# "@babel/parser" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# lodash "^4.17.5" +# +# "@babel/template@^7.1.0", "@babel/template@^7.4.4": +# version "7.4.4" +# resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" +# integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== +# dependencies: +# "@babel/code-frame" "^7.0.0" +# "@babel/parser" "^7.4.4" +# "@babel/types" "^7.4.4" +# +# "@babel/traverse@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.53.tgz#00d32cd8d0b58f4c01d31157be622c662826d344" +# integrity sha1-ANMs2NC1j0wB0xFXvmIsZigm00Q= +# dependencies: +# "@babel/code-frame" "7.0.0-beta.53" +# "@babel/generator" "7.0.0-beta.53" +# "@babel/helper-function-name" "7.0.0-beta.53" +# "@babel/helper-split-export-declaration" "7.0.0-beta.53" +# "@babel/parser" "7.0.0-beta.53" +# "@babel/types" "7.0.0-beta.53" +# debug "^3.1.0" +# globals "^11.1.0" +# invariant "^2.2.0" +# lodash "^4.17.5" +# +# "@babel/traverse@^7.5.5": +# version "7.5.5" +# resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" +# integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== +# dependencies: +# "@babel/code-frame" "^7.5.5" +# "@babel/generator" "^7.5.5" +# "@babel/helper-function-name" "^7.1.0" +# "@babel/helper-split-export-declaration" "^7.4.4" +# "@babel/parser" "^7.5.5" +# "@babel/types" "^7.5.5" +# debug "^4.1.0" +# globals "^11.1.0" +# lodash "^4.17.13" +# +# "@babel/types@7.0.0-beta.53": +# version "7.0.0-beta.53" +# resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.53.tgz#19a461c0da515595dfb6740b4b45dc7bb0e6b375" +# integrity sha1-GaRhwNpRVZXftnQLS0Xce7Dms3U= +# dependencies: +# esutils "^2.0.2" +# lodash "^4.17.5" +# to-fast-properties "^2.0.0" +# +# "@babel/types@^7.0.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": +# version "7.5.5" +# resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" +# integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw== +# dependencies: +# esutils "^2.0.2" +# lodash "^4.17.13" +# to-fast-properties "^2.0.0" +# +# "@bcoe/v8-coverage@^0.2.3": +# version "0.2.3" +# resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" +# integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +# +# "@types/is-windows@^0.2.0": +# version "0.2.0" +# resolved "https://registry.yarnpkg.com/@types/is-windows/-/is-windows-0.2.0.tgz#6f24ee48731d31168ea510610d6dd15e5fc9c6ff" +# integrity sha1-byTuSHMdMRaOpRBhDW3RXl/Jxv8= +# +# "@types/istanbul-lib-coverage@^2.0.1": +# version "2.0.1" +# resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" +# integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== +# +# "@zeit/ncc@0.20.4": +# version "0.20.4" +# resolved "https://registry.yarnpkg.com/@zeit/ncc/-/ncc-0.20.4.tgz#00f0a25a88cac3712af4ba66561d9e281c6f05c9" +# integrity sha512-fmq+F/QxPec+k/zvT7HiVpk7oiGFseS6brfT/AYqmCUp6QFRK7vZf2Ref46MImsg/g2W3g5X6SRvGRmOAvEfdA== +# +# JSONStream@^1.0.3: +# version "1.3.5" +# resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" +# integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== +# dependencies: +# jsonparse "^1.2.0" +# through ">=2.2.7 <3" +# +# acorn-dynamic-import@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" +# integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== +# +# acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: +# version "1.7.0" +# resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.7.0.tgz#aac6a559d27af6176b076ab6fb13c5974c213e3b" +# integrity sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw== +# dependencies: +# acorn "^6.1.1" +# acorn-dynamic-import "^4.0.0" +# acorn-walk "^6.1.1" +# xtend "^4.0.1" +# +# acorn-walk@^6.1.1: +# version "6.2.0" +# resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" +# integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +# +# acorn@^6.1.1: +# version "6.2.1" +# resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" +# integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +# +# ansi-regex@^2.0.0: +# version "2.1.1" +# resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +# integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +# +# ansi-regex@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +# integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +# +# ansi-regex@^4.1.0: +# version "4.1.0" +# resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" +# integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +# +# ansi-styles@^3.2.0, ansi-styles@^3.2.1: +# version "3.2.1" +# resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" +# integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== +# dependencies: +# color-convert "^1.9.0" +# +# array-filter@~0.0.0: +# version "0.0.1" +# resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" +# integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= +# +# array-map@~0.0.0: +# version "0.0.0" +# resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" +# integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= +# +# array-reduce@~0.0.0: +# version "0.0.0" +# resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" +# integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= +# +# asn1.js@^4.0.0: +# version "4.10.1" +# resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" +# integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +# dependencies: +# bn.js "^4.0.0" +# inherits "^2.0.1" +# minimalistic-assert "^1.0.0" +# +# assert@^1.4.0: +# version "1.5.0" +# resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" +# integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== +# dependencies: +# object-assign "^4.1.1" +# util "0.10.3" +# +# babelify@10.0.0: +# version "10.0.0" +# resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" +# integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== +# +# balanced-match@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +# integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +# +# base64-js@1.3.1, base64-js@^1.0.2: +# version "1.3.1" +# resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" +# integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +# +# bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: +# version "4.11.8" +# resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" +# integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +# +# brace-expansion@^1.1.7: +# version "1.1.11" +# resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" +# integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== +# dependencies: +# balanced-match "^1.0.0" +# concat-map "0.0.1" +# +# brorand@^1.0.1: +# version "1.1.0" +# resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +# integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +# +# browser-pack@^6.0.1: +# version "6.1.0" +# resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" +# integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== +# dependencies: +# JSONStream "^1.0.3" +# combine-source-map "~0.8.0" +# defined "^1.0.0" +# safe-buffer "^5.1.1" +# through2 "^2.0.0" +# umd "^3.0.0" +# +# browser-resolve@^1.11.0, browser-resolve@^1.7.0: +# version "1.11.3" +# resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" +# integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== +# dependencies: +# resolve "1.1.7" +# +# browserify-aes@^1.0.0, browserify-aes@^1.0.4: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" +# integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== +# dependencies: +# buffer-xor "^1.0.3" +# cipher-base "^1.0.0" +# create-hash "^1.1.0" +# evp_bytestokey "^1.0.3" +# inherits "^2.0.1" +# safe-buffer "^5.0.1" +# +# browserify-cipher@^1.0.0: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" +# integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== +# dependencies: +# browserify-aes "^1.0.4" +# browserify-des "^1.0.0" +# evp_bytestokey "^1.0.0" +# +# browserify-des@^1.0.0: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" +# integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== +# dependencies: +# cipher-base "^1.0.1" +# des.js "^1.0.0" +# inherits "^2.0.1" +# safe-buffer "^5.1.2" +# +# browserify-rsa@^4.0.0: +# version "4.0.1" +# resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" +# integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +# dependencies: +# bn.js "^4.1.0" +# randombytes "^2.0.1" +# +# browserify-sign@^4.0.0: +# version "4.0.4" +# resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" +# integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= +# dependencies: +# bn.js "^4.1.1" +# browserify-rsa "^4.0.0" +# create-hash "^1.1.0" +# create-hmac "^1.1.2" +# elliptic "^6.0.0" +# inherits "^2.0.1" +# parse-asn1 "^5.0.0" +# +# browserify-zlib@~0.2.0: +# version "0.2.0" +# resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" +# integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== +# dependencies: +# pako "~1.0.5" +# +# browserify@16.5.0: +# version "16.5.0" +# resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.5.0.tgz#a1c2bc0431bec11fd29151941582e3f645ede881" +# integrity sha512-6bfI3cl76YLAnCZ75AGu/XPOsqUhRyc0F/olGIJeCxtfxF2HvPKEcmjU9M8oAPxl4uBY1U7Nry33Q6koV3f2iw== +# dependencies: +# JSONStream "^1.0.3" +# assert "^1.4.0" +# browser-pack "^6.0.1" +# browser-resolve "^1.11.0" +# browserify-zlib "~0.2.0" +# buffer "^5.0.2" +# cached-path-relative "^1.0.0" +# concat-stream "^1.6.0" +# console-browserify "^1.1.0" +# constants-browserify "~1.0.0" +# crypto-browserify "^3.0.0" +# defined "^1.0.0" +# deps-sort "^2.0.0" +# domain-browser "^1.2.0" +# duplexer2 "~0.1.2" +# events "^2.0.0" +# glob "^7.1.0" +# has "^1.0.0" +# htmlescape "^1.1.0" +# https-browserify "^1.0.0" +# inherits "~2.0.1" +# insert-module-globals "^7.0.0" +# labeled-stream-splicer "^2.0.0" +# mkdirp "^0.5.0" +# module-deps "^6.0.0" +# os-browserify "~0.3.0" +# parents "^1.0.1" +# path-browserify "~0.0.0" +# process "~0.11.0" +# punycode "^1.3.2" +# querystring-es3 "~0.2.0" +# read-only-stream "^2.0.0" +# readable-stream "^2.0.2" +# resolve "^1.1.4" +# shasum "^1.0.0" +# shell-quote "^1.6.1" +# stream-browserify "^2.0.0" +# stream-http "^3.0.0" +# string_decoder "^1.1.1" +# subarg "^1.0.0" +# syntax-error "^1.1.1" +# through2 "^2.0.0" +# timers-browserify "^1.0.1" +# tty-browserify "0.0.1" +# url "~0.11.0" +# util "~0.10.1" +# vm-browserify "^1.0.0" +# xtend "^4.0.0" +# +# buffer-from@^1.0.0: +# version "1.1.1" +# resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" +# integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +# +# buffer-xor@^1.0.3: +# version "1.0.3" +# resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" +# integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= +# +# buffer@^5.0.2: +# version "5.2.1" +# resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" +# integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== +# dependencies: +# base64-js "^1.0.2" +# ieee754 "^1.1.4" +# +# builtin-status-codes@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +# integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +# +# c8@^5.0.4: +# version "5.0.4" +# resolved "https://registry.yarnpkg.com/c8/-/c8-5.0.4.tgz#a247fd6a4cbc19b33dae17178a7d903a8dd7fa79" +# integrity sha512-MgWIJ3HYe4NTtqwD+v16OdHvfqSzSLOmsptMuUxkzsYMoZzEeUv3yVep2d84qFjgio/3WbVEd9bkYQCFSDKeMw== +# dependencies: +# "@bcoe/v8-coverage" "^0.2.3" +# find-up "^4.0.0" +# foreground-child "^2.0.0" +# furi "^1.3.0" +# istanbul-lib-coverage "^2.0.5" +# istanbul-lib-report "^2.0.8" +# istanbul-reports "^2.2.6" +# rimraf "^3.0.0" +# test-exclude "^5.2.3" +# v8-to-istanbul "^3.2.3" +# yargs "^14.0.0" +# yargs-parser "^14.0.0" +# +# cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" +# integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== +# +# camelcase@^4.1.0: +# version "4.1.0" +# resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +# integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +# +# camelcase@^5.0.0: +# version "5.3.1" +# resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" +# integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +# +# chalk@^2.0.0: +# version "2.4.2" +# resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" +# integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +# dependencies: +# ansi-styles "^3.2.1" +# escape-string-regexp "^1.0.5" +# supports-color "^5.3.0" +# +# cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: +# version "1.0.4" +# resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" +# integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== +# dependencies: +# inherits "^2.0.1" +# safe-buffer "^5.0.1" +# +# cliui@^4.0.0: +# version "4.1.0" +# resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" +# integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +# dependencies: +# string-width "^2.1.1" +# strip-ansi "^4.0.0" +# wrap-ansi "^2.0.0" +# +# cliui@^5.0.0: +# version "5.0.0" +# resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" +# integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +# dependencies: +# string-width "^3.1.0" +# strip-ansi "^5.2.0" +# wrap-ansi "^5.1.0" +# +# code-point-at@^1.0.0: +# version "1.1.0" +# resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +# integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +# +# color-convert@^1.9.0: +# version "1.9.3" +# resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" +# integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== +# dependencies: +# color-name "1.1.3" +# +# color-name@1.1.3: +# version "1.1.3" +# resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +# integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +# +# combine-source-map@^0.8.0, combine-source-map@~0.8.0: +# version "0.8.0" +# resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" +# integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= +# dependencies: +# convert-source-map "~1.1.0" +# inline-source-map "~0.6.0" +# lodash.memoize "~3.0.3" +# source-map "~0.5.3" +# +# commander@^2.20.0, commander@~2.20.0: +# version "2.20.0" +# resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" +# integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +# +# concat-map@0.0.1: +# version "0.0.1" +# resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +# integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +# +# concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: +# version "1.6.2" +# resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" +# integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== +# dependencies: +# buffer-from "^1.0.0" +# inherits "^2.0.3" +# readable-stream "^2.2.2" +# typedarray "^0.0.6" +# +# console-browserify@^1.1.0: +# version "1.1.0" +# resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" +# integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= +# dependencies: +# date-now "^0.1.4" +# +# constants-browserify@~1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +# integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +# +# convert-source-map@^1.1.0, convert-source-map@^1.6.0: +# version "1.6.0" +# resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" +# integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +# dependencies: +# safe-buffer "~5.1.1" +# +# convert-source-map@~1.1.0: +# version "1.1.3" +# resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" +# integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= +# +# core-util-is@~1.0.0: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +# integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +# +# create-ecdh@^4.0.0: +# version "4.0.3" +# resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" +# integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== +# dependencies: +# bn.js "^4.1.0" +# elliptic "^6.0.0" +# +# create-hash@^1.1.0, create-hash@^1.1.2: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" +# integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== +# dependencies: +# cipher-base "^1.0.1" +# inherits "^2.0.1" +# md5.js "^1.3.4" +# ripemd160 "^2.0.1" +# sha.js "^2.4.0" +# +# create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +# version "1.1.7" +# resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" +# integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== +# dependencies: +# cipher-base "^1.0.3" +# create-hash "^1.1.0" +# inherits "^2.0.1" +# ripemd160 "^2.0.0" +# safe-buffer "^5.0.1" +# sha.js "^2.4.8" +# +# cross-spawn@^4: +# version "4.0.2" +# resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" +# integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= +# dependencies: +# lru-cache "^4.0.1" +# which "^1.2.9" +# +# cross-spawn@^5.0.1: +# version "5.1.0" +# resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" +# integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= +# dependencies: +# lru-cache "^4.0.1" +# shebang-command "^1.2.0" +# which "^1.2.9" +# +# cross-spawn@^7.0.0: +# version "7.0.0" +# resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.0.tgz#21ef9470443262f33dba80b2705a91db959b2e03" +# integrity sha512-6U/8SMK2FBNnB21oQ4+6Nsodxanw1gTkntYA2zBdkFYFu3ZDx65P2ONEXGSvob/QS6REjVHQ9zxzdOafwFdstw== +# dependencies: +# path-key "^3.1.0" +# shebang-command "^1.2.0" +# which "^1.2.9" +# +# crypto-browserify@^3.0.0: +# version "3.12.0" +# resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" +# integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== +# dependencies: +# browserify-cipher "^1.0.0" +# browserify-sign "^4.0.0" +# create-ecdh "^4.0.0" +# create-hash "^1.1.0" +# create-hmac "^1.1.0" +# diffie-hellman "^5.0.0" +# inherits "^2.0.1" +# pbkdf2 "^3.0.3" +# public-encrypt "^4.0.0" +# randombytes "^2.0.0" +# randomfill "^1.0.3" +# +# dash-ast@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" +# integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== +# +# date-now@^0.1.4: +# version "0.1.4" +# resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +# integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +# +# debug@^3.1.0: +# version "3.2.6" +# resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" +# integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +# dependencies: +# ms "^2.1.1" +# +# debug@^4.1.0: +# version "4.1.1" +# resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" +# integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +# dependencies: +# ms "^2.1.1" +# +# decamelize@^1.1.1, decamelize@^1.2.0: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +# integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +# +# defined@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" +# integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= +# +# deps-sort@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" +# integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U= +# dependencies: +# JSONStream "^1.0.3" +# shasum "^1.0.0" +# subarg "^1.0.0" +# through2 "^2.0.0" +# +# des.js@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" +# integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= +# dependencies: +# inherits "^2.0.1" +# minimalistic-assert "^1.0.0" +# +# detective@^5.0.2: +# version "5.2.0" +# resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" +# integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== +# dependencies: +# acorn-node "^1.6.1" +# defined "^1.0.0" +# minimist "^1.1.1" +# +# diffie-hellman@^5.0.0: +# version "5.0.3" +# resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" +# integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== +# dependencies: +# bn.js "^4.1.0" +# miller-rabin "^4.0.0" +# randombytes "^2.0.0" +# +# domain-browser@^1.2.0: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" +# integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +# +# duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: +# version "0.1.4" +# resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" +# integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= +# dependencies: +# readable-stream "^2.0.2" +# +# elliptic@^6.0.0: +# version "6.5.0" +# resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" +# integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== +# dependencies: +# bn.js "^4.4.0" +# brorand "^1.0.1" +# hash.js "^1.0.0" +# hmac-drbg "^1.0.0" +# inherits "^2.0.1" +# minimalistic-assert "^1.0.0" +# minimalistic-crypto-utils "^1.0.0" +# +# emoji-regex@^7.0.1: +# version "7.0.3" +# resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" +# integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +# +# error-ex@^1.3.1: +# version "1.3.2" +# resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" +# integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== +# dependencies: +# is-arrayish "^0.2.1" +# +# escape-string-regexp@^1.0.5: +# version "1.0.5" +# resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +# integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +# +# esutils@^2.0.2: +# version "2.0.3" +# resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" +# integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +# +# events@^2.0.0: +# version "2.1.0" +# resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" +# integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== +# +# evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: +# version "1.0.3" +# resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" +# integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== +# dependencies: +# md5.js "^1.3.4" +# safe-buffer "^5.1.1" +# +# execa@^0.7.0: +# version "0.7.0" +# resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" +# integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= +# dependencies: +# cross-spawn "^5.0.1" +# get-stream "^3.0.0" +# is-stream "^1.1.0" +# npm-run-path "^2.0.0" +# p-finally "^1.0.0" +# signal-exit "^3.0.0" +# strip-eof "^1.0.0" +# +# find-up@^2.1.0: +# version "2.1.0" +# resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" +# integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= +# dependencies: +# locate-path "^2.0.0" +# +# find-up@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" +# integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +# dependencies: +# locate-path "^3.0.0" +# +# find-up@^4.0.0: +# version "4.1.0" +# resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" +# integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +# dependencies: +# locate-path "^5.0.0" +# path-exists "^4.0.0" +# +# foreground-child@^1.5.6: +# version "1.5.6" +# resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" +# integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= +# dependencies: +# cross-spawn "^4" +# signal-exit "^3.0.0" +# +# foreground-child@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" +# integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== +# dependencies: +# cross-spawn "^7.0.0" +# signal-exit "^3.0.2" +# +# fs.realpath@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +# integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +# +# function-bind@^1.1.1: +# version "1.1.1" +# resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +# integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +# +# furi@^1.3.0: +# version "1.3.0" +# resolved "https://registry.yarnpkg.com/furi/-/furi-1.3.0.tgz#5fd4186d805ae80a3acd29efaf954761003391f8" +# integrity sha512-TYoXEeRLKHXNWcCBP0VH1psPktQ9G8Y0GfZwMXCvwVbhbfNx7JItKWhB5mMBYufNjqxEHq+Ivd1nLtr5vQyVoQ== +# dependencies: +# "@types/is-windows" "^0.2.0" +# is-windows "^1.0.2" +# +# get-assigned-identifiers@^1.2.0: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" +# integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== +# +# get-caller-file@^1.0.1: +# version "1.0.3" +# resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" +# integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +# +# get-caller-file@^2.0.1: +# version "2.0.5" +# resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" +# integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +# +# get-stream@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +# integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +# +# glob@^7.1.0, glob@^7.1.3: +# version "7.1.4" +# resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" +# integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +# dependencies: +# fs.realpath "^1.0.0" +# inflight "^1.0.4" +# inherits "2" +# minimatch "^3.0.4" +# once "^1.3.0" +# path-is-absolute "^1.0.0" +# +# globals@^11.1.0: +# version "11.12.0" +# resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" +# integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +# +# graceful-fs@^4.1.2: +# version "4.2.2" +# resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" +# integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== +# +# handlebars@^4.0.3, handlebars@^4.1.2: +# version "4.2.0" +# resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e" +# integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw== +# dependencies: +# neo-async "^2.6.0" +# optimist "^0.6.1" +# source-map "^0.6.1" +# optionalDependencies: +# uglify-js "^3.1.4" +# +# has-flag@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +# integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= +# +# has-flag@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +# integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +# +# has@^1.0.0: +# version "1.0.3" +# resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" +# integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +# dependencies: +# function-bind "^1.1.1" +# +# hash-base@^3.0.0: +# version "3.0.4" +# resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" +# integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= +# dependencies: +# inherits "^2.0.1" +# safe-buffer "^5.0.1" +# +# hash.js@^1.0.0, hash.js@^1.0.3: +# version "1.1.7" +# resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" +# integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== +# dependencies: +# inherits "^2.0.3" +# minimalistic-assert "^1.0.1" +# +# hmac-drbg@^1.0.0: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" +# integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= +# dependencies: +# hash.js "^1.0.3" +# minimalistic-assert "^1.0.0" +# minimalistic-crypto-utils "^1.0.1" +# +# hosted-git-info@^2.1.4: +# version "2.8.4" +# resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" +# integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== +# +# htmlescape@^1.1.0: +# version "1.1.1" +# resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" +# integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= +# +# https-browserify@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +# integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +# +# ieee754@1.1.13, ieee754@^1.1.4: +# version "1.1.13" +# resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" +# integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +# +# inflight@^1.0.4: +# version "1.0.6" +# resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" +# integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= +# dependencies: +# once "^1.3.0" +# wrappy "1" +# +# inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +# version "2.0.4" +# resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" +# integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +# +# inherits@2.0.1: +# version "2.0.1" +# resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" +# integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= +# +# inherits@2.0.3: +# version "2.0.3" +# resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +# integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +# +# inline-source-map@~0.6.0: +# version "0.6.2" +# resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" +# integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= +# dependencies: +# source-map "~0.5.3" +# +# insert-module-globals@^7.0.0: +# version "7.2.0" +# resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" +# integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== +# dependencies: +# JSONStream "^1.0.3" +# acorn-node "^1.5.2" +# combine-source-map "^0.8.0" +# concat-stream "^1.6.1" +# is-buffer "^1.1.0" +# path-is-absolute "^1.0.1" +# process "~0.11.0" +# through2 "^2.0.0" +# undeclared-identifiers "^1.1.2" +# xtend "^4.0.0" +# +# invariant@^2.2.0: +# version "2.2.4" +# resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" +# integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== +# dependencies: +# loose-envify "^1.0.0" +# +# invert-kv@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +# integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= +# +# is-arrayish@^0.2.1: +# version "0.2.1" +# resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +# integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +# +# is-buffer@^1.1.0: +# version "1.1.6" +# resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" +# integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +# +# is-fullwidth-code-point@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" +# integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= +# dependencies: +# number-is-nan "^1.0.0" +# +# is-fullwidth-code-point@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +# integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +# +# is-stream@^1.1.0: +# version "1.1.0" +# resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +# integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +# +# is-windows@^1.0.2: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" +# integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +# +# isarray@~1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +# integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +# +# isexe@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" +# integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +# +# istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: +# version "1.2.1" +# resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" +# integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== +# +# istanbul-lib-coverage@^2.0.5: +# version "2.0.5" +# resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" +# integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +# +# istanbul-lib-report@^1.1.3: +# version "1.1.5" +# resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" +# integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== +# dependencies: +# istanbul-lib-coverage "^1.2.1" +# mkdirp "^0.5.1" +# path-parse "^1.0.5" +# supports-color "^3.1.2" +# +# istanbul-lib-report@^2.0.8: +# version "2.0.8" +# resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" +# integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +# dependencies: +# istanbul-lib-coverage "^2.0.5" +# make-dir "^2.1.0" +# supports-color "^6.1.0" +# +# istanbul-reports@^1.3.0: +# version "1.5.1" +# resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" +# integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== +# dependencies: +# handlebars "^4.0.3" +# +# istanbul-reports@^2.2.6: +# version "2.2.6" +# resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" +# integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== +# dependencies: +# handlebars "^4.1.2" +# +# js-tokens@^3.0.0: +# version "3.0.2" +# resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +# integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +# +# "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" +# integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +# +# jsesc@^2.5.1: +# version "2.5.2" +# resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" +# integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +# +# jsesc@~0.5.0: +# version "0.5.0" +# resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" +# integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +# +# json-parse-better-errors@^1.0.1: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" +# integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +# +# json-stable-stringify@~0.0.0: +# version "0.0.1" +# resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" +# integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= +# dependencies: +# jsonify "~0.0.0" +# +# json5@^2.1.0: +# version "2.1.0" +# resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" +# integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== +# dependencies: +# minimist "^1.2.0" +# +# jsonify@~0.0.0: +# version "0.0.0" +# resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +# integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +# +# jsonparse@^1.2.0: +# version "1.3.1" +# resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" +# integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= +# +# labeled-stream-splicer@^2.0.0: +# version "2.0.2" +# resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" +# integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== +# dependencies: +# inherits "^2.0.1" +# stream-splicer "^2.0.0" +# +# lcid@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" +# integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= +# dependencies: +# invert-kv "^1.0.0" +# +# load-json-file@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" +# integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= +# dependencies: +# graceful-fs "^4.1.2" +# parse-json "^4.0.0" +# pify "^3.0.0" +# strip-bom "^3.0.0" +# +# locate-path@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" +# integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= +# dependencies: +# p-locate "^2.0.0" +# path-exists "^3.0.0" +# +# locate-path@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" +# integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +# dependencies: +# p-locate "^3.0.0" +# path-exists "^3.0.0" +# +# locate-path@^5.0.0: +# version "5.0.0" +# resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" +# integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== +# dependencies: +# p-locate "^4.1.0" +# +# lodash.memoize@~3.0.3: +# version "3.0.4" +# resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" +# integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= +# +# lodash@^4.17.13, lodash@^4.17.5: +# version "4.17.15" +# resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" +# integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +# +# loose-envify@^1.0.0: +# version "1.4.0" +# resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" +# integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== +# dependencies: +# js-tokens "^3.0.0 || ^4.0.0" +# +# lru-cache@^4.0.1: +# version "4.1.5" +# resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" +# integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== +# dependencies: +# pseudomap "^1.0.2" +# yallist "^2.1.2" +# +# make-dir@^2.1.0: +# version "2.1.0" +# resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" +# integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== +# dependencies: +# pify "^4.0.1" +# semver "^5.6.0" +# +# md5.js@^1.3.4: +# version "1.3.5" +# resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" +# integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== +# dependencies: +# hash-base "^3.0.0" +# inherits "^2.0.1" +# safe-buffer "^5.1.2" +# +# mem@^1.1.0: +# version "1.1.0" +# resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" +# integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= +# dependencies: +# mimic-fn "^1.0.0" +# +# miller-rabin@^4.0.0: +# version "4.0.1" +# resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" +# integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== +# dependencies: +# bn.js "^4.0.0" +# brorand "^1.0.1" +# +# mimic-fn@^1.0.0: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" +# integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +# +# minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" +# integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +# +# minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" +# integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= +# +# minimatch@^3.0.4: +# version "3.0.4" +# resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" +# integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +# dependencies: +# brace-expansion "^1.1.7" +# +# minimist@0.0.8: +# version "0.0.8" +# resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" +# integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= +# +# minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +# integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +# +# minimist@~0.0.1: +# version "0.0.10" +# resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +# integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +# +# mkdirp@^0.5.0, mkdirp@^0.5.1: +# version "0.5.1" +# resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" +# integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +# dependencies: +# minimist "0.0.8" +# +# module-deps@^6.0.0: +# version "6.2.1" +# resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.1.tgz#cfe558784060e926824f474b4e647287837cda50" +# integrity sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A== +# dependencies: +# JSONStream "^1.0.3" +# browser-resolve "^1.7.0" +# cached-path-relative "^1.0.2" +# concat-stream "~1.6.0" +# defined "^1.0.0" +# detective "^5.0.2" +# duplexer2 "^0.1.2" +# inherits "^2.0.1" +# parents "^1.0.0" +# readable-stream "^2.0.2" +# resolve "^1.4.0" +# stream-combiner2 "^1.1.1" +# subarg "^1.0.0" +# through2 "^2.0.0" +# xtend "^4.0.0" +# +# ms@^2.1.1: +# version "2.1.2" +# resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" +# integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +# +# named-amd@1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/named-amd/-/named-amd-1.0.0.tgz#37fd4ef2568afbf6bd61250c7de56df028502572" +# integrity sha1-N/1O8laK+/a9YSUMfeVt8ChQJXI= +# +# neo-async@^2.6.0: +# version "2.6.1" +# resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" +# integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +# +# normalize-package-data@^2.3.2: +# version "2.5.0" +# resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" +# integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== +# dependencies: +# hosted-git-info "^2.1.4" +# resolve "^1.10.0" +# semver "2 || 3 || 4 || 5" +# validate-npm-package-license "^3.0.1" +# +# npm-run-path@^2.0.0: +# version "2.0.2" +# resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" +# integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= +# dependencies: +# path-key "^2.0.0" +# +# number-is-nan@^1.0.0: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" +# integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +# +# object-assign@^4.1.1: +# version "4.1.1" +# resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +# integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +# +# once@^1.3.0: +# version "1.4.0" +# resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" +# integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= +# dependencies: +# wrappy "1" +# +# optimist@^0.6.1: +# version "0.6.1" +# resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" +# integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= +# dependencies: +# minimist "~0.0.1" +# wordwrap "~0.0.2" +# +# os-browserify@~0.3.0: +# version "0.3.0" +# resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" +# integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= +# +# os-homedir@^1.0.1: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +# integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +# +# os-locale@^2.0.0: +# version "2.1.0" +# resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" +# integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== +# dependencies: +# execa "^0.7.0" +# lcid "^1.0.0" +# mem "^1.1.0" +# +# p-finally@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +# integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +# +# p-limit@^1.1.0: +# version "1.3.0" +# resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" +# integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== +# dependencies: +# p-try "^1.0.0" +# +# p-limit@^2.0.0, p-limit@^2.2.0: +# version "2.2.1" +# resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" +# integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== +# dependencies: +# p-try "^2.0.0" +# +# p-locate@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" +# integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +# dependencies: +# p-limit "^1.1.0" +# +# p-locate@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" +# integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +# dependencies: +# p-limit "^2.0.0" +# +# p-locate@^4.1.0: +# version "4.1.0" +# resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" +# integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== +# dependencies: +# p-limit "^2.2.0" +# +# p-try@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" +# integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +# +# p-try@^2.0.0: +# version "2.2.0" +# resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" +# integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +# +# pako@~1.0.5: +# version "1.0.10" +# resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" +# integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== +# +# parents@^1.0.0, parents@^1.0.1: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" +# integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= +# dependencies: +# path-platform "~0.11.15" +# +# parse-asn1@^5.0.0: +# version "5.1.4" +# resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" +# integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== +# dependencies: +# asn1.js "^4.0.0" +# browserify-aes "^1.0.0" +# create-hash "^1.1.0" +# evp_bytestokey "^1.0.0" +# pbkdf2 "^3.0.3" +# safe-buffer "^5.1.1" +# +# parse-json@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" +# integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= +# dependencies: +# error-ex "^1.3.1" +# json-parse-better-errors "^1.0.1" +# +# path-browserify@~0.0.0: +# version "0.0.1" +# resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" +# integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +# +# path-exists@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" +# integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +# +# path-exists@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" +# integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +# +# path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +# integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= +# +# path-key@^2.0.0: +# version "2.0.1" +# resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +# integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +# +# path-key@^3.1.0: +# version "3.1.0" +# resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" +# integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== +# +# path-parse@^1.0.5, path-parse@^1.0.6: +# version "1.0.6" +# resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" +# integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +# +# path-platform@~0.11.15: +# version "0.11.15" +# resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" +# integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= +# +# path-type@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" +# integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== +# dependencies: +# pify "^3.0.0" +# +# pbkdf2@^3.0.3: +# version "3.0.17" +# resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" +# integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== +# dependencies: +# create-hash "^1.1.2" +# create-hmac "^1.1.4" +# ripemd160 "^2.0.1" +# safe-buffer "^5.0.1" +# sha.js "^2.4.8" +# +# pify@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" +# integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +# +# pify@^4.0.1: +# version "4.0.1" +# resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" +# integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +# +# private@^0.1.6: +# version "0.1.8" +# resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" +# integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== +# +# process-nextick-args@~2.0.0: +# version "2.0.1" +# resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" +# integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +# +# process@~0.11.0: +# version "0.11.10" +# resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +# integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +# +# pseudomap@^1.0.2: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +# integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= +# +# public-encrypt@^4.0.0: +# version "4.0.3" +# resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" +# integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== +# dependencies: +# bn.js "^4.1.0" +# browserify-rsa "^4.0.0" +# create-hash "^1.1.0" +# parse-asn1 "^5.0.0" +# randombytes "^2.0.1" +# safe-buffer "^5.1.2" +# +# punycode@1.3.2: +# version "1.3.2" +# resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" +# integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= +# +# punycode@^1.3.2: +# version "1.4.1" +# resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +# integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +# +# querystring-es3@~0.2.0: +# version "0.2.1" +# resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" +# integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= +# +# querystring@0.2.0: +# version "0.2.0" +# resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +# integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +# +# randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +# version "2.1.0" +# resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" +# integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== +# dependencies: +# safe-buffer "^5.1.0" +# +# randomfill@^1.0.3: +# version "1.0.4" +# resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" +# integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== +# dependencies: +# randombytes "^2.0.5" +# safe-buffer "^5.1.0" +# +# read-only-stream@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" +# integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= +# dependencies: +# readable-stream "^2.0.2" +# +# read-pkg-up@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" +# integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== +# dependencies: +# find-up "^3.0.0" +# read-pkg "^3.0.0" +# +# read-pkg@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" +# integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= +# dependencies: +# load-json-file "^4.0.0" +# normalize-package-data "^2.3.2" +# path-type "^3.0.0" +# +# readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6: +# version "2.3.6" +# resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" +# integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== +# dependencies: +# core-util-is "~1.0.0" +# inherits "~2.0.3" +# isarray "~1.0.0" +# process-nextick-args "~2.0.0" +# safe-buffer "~5.1.1" +# string_decoder "~1.1.1" +# util-deprecate "~1.0.1" +# +# readable-stream@^3.0.6: +# version "3.4.0" +# resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" +# integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== +# dependencies: +# inherits "^2.0.3" +# string_decoder "^1.1.1" +# util-deprecate "^1.0.1" +# +# regenerate-unicode-properties@^8.1.0: +# version "8.1.0" +# resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" +# integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== +# dependencies: +# regenerate "^1.4.0" +# +# regenerate@^1.4.0: +# version "1.4.0" +# resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" +# integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +# +# regenerator-transform@^0.13.3: +# version "0.13.4" +# resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" +# integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A== +# dependencies: +# private "^0.1.6" +# +# regexpu-core@^4.1.3: +# version "4.5.5" +# resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.5.tgz#aaffe61c2af58269b3e516b61a73790376326411" +# integrity sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ== +# dependencies: +# regenerate "^1.4.0" +# regenerate-unicode-properties "^8.1.0" +# regjsgen "^0.5.0" +# regjsparser "^0.6.0" +# unicode-match-property-ecmascript "^1.0.4" +# unicode-match-property-value-ecmascript "^1.1.0" +# +# regjsgen@^0.5.0: +# version "0.5.0" +# resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" +# integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== +# +# regjsparser@^0.6.0: +# version "0.6.0" +# resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" +# integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== +# dependencies: +# jsesc "~0.5.0" +# +# require-directory@^2.1.1: +# version "2.1.1" +# resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" +# integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +# +# require-main-filename@^1.0.1: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +# integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +# +# require-main-filename@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" +# integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +# +# resolve@1.1.7: +# version "1.1.7" +# resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +# integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +# +# resolve@^1.1.4, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: +# version "1.12.0" +# resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" +# integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +# dependencies: +# path-parse "^1.0.6" +# +# rimraf@^2.6.2: +# version "2.7.1" +# resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" +# integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== +# dependencies: +# glob "^7.1.3" +# +# rimraf@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" +# integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== +# dependencies: +# glob "^7.1.3" +# +# ripemd160@^2.0.0, ripemd160@^2.0.1: +# version "2.0.2" +# resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" +# integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== +# dependencies: +# hash-base "^3.0.0" +# inherits "^2.0.1" +# +# safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +# version "5.2.0" +# resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" +# integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +# +# safe-buffer@~5.1.0, safe-buffer@~5.1.1: +# version "5.1.2" +# resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +# integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +# +# "semver@2 || 3 || 4 || 5", semver@^5.6.0: +# version "5.7.1" +# resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" +# integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +# +# semver@^5.4.1: +# version "5.7.0" +# resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" +# integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +# +# set-blocking@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +# integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +# +# sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: +# version "2.4.11" +# resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" +# integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== +# dependencies: +# inherits "^2.0.1" +# safe-buffer "^5.0.1" +# +# shasum@^1.0.0: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" +# integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= +# dependencies: +# json-stable-stringify "~0.0.0" +# sha.js "~2.4.4" +# +# shebang-command@^1.2.0: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" +# integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +# dependencies: +# shebang-regex "^1.0.0" +# +# shebang-regex@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +# integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +# +# shell-quote@^1.6.1: +# version "1.6.1" +# resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" +# integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= +# dependencies: +# array-filter "~0.0.0" +# array-map "~0.0.0" +# array-reduce "~0.0.0" +# jsonify "~0.0.0" +# +# signal-exit@^3.0.0, signal-exit@^3.0.2: +# version "3.0.2" +# resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +# integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +# +# simple-concat@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" +# integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= +# +# source-map-support@~0.5.12: +# version "0.5.13" +# resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" +# integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== +# dependencies: +# buffer-from "^1.0.0" +# source-map "^0.6.0" +# +# source-map@^0.5.0, source-map@~0.5.3: +# version "0.5.7" +# resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +# integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +# +# source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +# version "0.6.1" +# resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" +# integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +# +# source-map@^0.7.3: +# version "0.7.3" +# resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" +# integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +# +# spawn-wrap@^1.4.2: +# version "1.4.3" +# resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848" +# integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== +# dependencies: +# foreground-child "^1.5.6" +# mkdirp "^0.5.0" +# os-homedir "^1.0.1" +# rimraf "^2.6.2" +# signal-exit "^3.0.2" +# which "^1.3.0" +# +# spdx-correct@^3.0.0: +# version "3.1.0" +# resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" +# integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== +# dependencies: +# spdx-expression-parse "^3.0.0" +# spdx-license-ids "^3.0.0" +# +# spdx-exceptions@^2.1.0: +# version "2.2.0" +# resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" +# integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== +# +# spdx-expression-parse@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" +# integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== +# dependencies: +# spdx-exceptions "^2.1.0" +# spdx-license-ids "^3.0.0" +# +# spdx-license-ids@^3.0.0: +# version "3.0.5" +# resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" +# integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== +# +# stream-browserify@^2.0.0: +# version "2.0.2" +# resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" +# integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== +# dependencies: +# inherits "~2.0.1" +# readable-stream "^2.0.2" +# +# stream-combiner2@^1.1.1: +# version "1.1.1" +# resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" +# integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= +# dependencies: +# duplexer2 "~0.1.0" +# readable-stream "^2.0.2" +# +# stream-http@^3.0.0: +# version "3.1.0" +# resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.0.tgz#22fb33fe9b4056b4eccf58bd8f400c4b993ffe57" +# integrity sha512-cuB6RgO7BqC4FBYzmnvhob5Do3wIdIsXAgGycHJnW+981gHqoYcYz9lqjJrk8WXRddbwPuqPYRl+bag6mYv4lw== +# dependencies: +# builtin-status-codes "^3.0.0" +# inherits "^2.0.1" +# readable-stream "^3.0.6" +# xtend "^4.0.0" +# +# stream-splicer@^2.0.0: +# version "2.0.1" +# resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" +# integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== +# dependencies: +# inherits "^2.0.1" +# readable-stream "^2.0.2" +# +# string-width@^1.0.1: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" +# integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= +# dependencies: +# code-point-at "^1.0.0" +# is-fullwidth-code-point "^1.0.0" +# strip-ansi "^3.0.0" +# +# string-width@^2.0.0, string-width@^2.1.1: +# version "2.1.1" +# resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" +# integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +# dependencies: +# is-fullwidth-code-point "^2.0.0" +# strip-ansi "^4.0.0" +# +# string-width@^3.0.0, string-width@^3.1.0: +# version "3.1.0" +# resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" +# integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +# dependencies: +# emoji-regex "^7.0.1" +# is-fullwidth-code-point "^2.0.0" +# strip-ansi "^5.1.0" +# +# string_decoder@^1.1.1: +# version "1.3.0" +# resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" +# integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== +# dependencies: +# safe-buffer "~5.2.0" +# +# string_decoder@~1.1.1: +# version "1.1.1" +# resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" +# integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +# dependencies: +# safe-buffer "~5.1.0" +# +# strip-ansi@^3.0.0, strip-ansi@^3.0.1: +# version "3.0.1" +# resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" +# integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +# dependencies: +# ansi-regex "^2.0.0" +# +# strip-ansi@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" +# integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +# dependencies: +# ansi-regex "^3.0.0" +# +# strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +# version "5.2.0" +# resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" +# integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +# dependencies: +# ansi-regex "^4.1.0" +# +# strip-bom@^3.0.0: +# version "3.0.0" +# resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +# integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +# +# strip-eof@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +# integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +# +# subarg@^1.0.0: +# version "1.0.0" +# resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" +# integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= +# dependencies: +# minimist "^1.1.0" +# +# supports-color@^3.1.2: +# version "3.2.3" +# resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" +# integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= +# dependencies: +# has-flag "^1.0.0" +# +# supports-color@^5.3.0: +# version "5.5.0" +# resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" +# integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +# dependencies: +# has-flag "^3.0.0" +# +# supports-color@^6.1.0: +# version "6.1.0" +# resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" +# integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== +# dependencies: +# has-flag "^3.0.0" +# +# syntax-error@^1.1.1: +# version "1.4.0" +# resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" +# integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== +# dependencies: +# acorn-node "^1.2.0" +# +# terser@4.1.4: +# version "4.1.4" +# resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.4.tgz#4478b6a08bb096a61e793fea1a4434408bab936c" +# integrity sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg== +# dependencies: +# commander "^2.20.0" +# source-map "~0.6.1" +# source-map-support "~0.5.12" +# +# test-exclude@^5.2.2, test-exclude@^5.2.3: +# version "5.2.3" +# resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" +# integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +# dependencies: +# glob "^7.1.3" +# minimatch "^3.0.4" +# read-pkg-up "^4.0.0" +# require-main-filename "^2.0.0" +# +# through2@^2.0.0: +# version "2.0.5" +# resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" +# integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== +# dependencies: +# readable-stream "~2.3.6" +# xtend "~4.0.1" +# +# "through@>=2.2.7 <3": +# version "2.3.8" +# resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +# integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +# +# timers-browserify@^1.0.1: +# version "1.4.2" +# resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" +# integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= +# dependencies: +# process "~0.11.0" +# +# to-fast-properties@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" +# integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +# +# trim-right@^1.0.1: +# version "1.0.1" +# resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +# integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +# +# tty-browserify@0.0.1: +# version "0.0.1" +# resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" +# integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== +# +# typedarray@^0.0.6: +# version "0.0.6" +# resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +# integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +# +# uglify-js@^3.1.4: +# version "3.6.0" +# resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" +# integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== +# dependencies: +# commander "~2.20.0" +# source-map "~0.6.1" +# +# umd@^3.0.0: +# version "3.0.3" +# resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" +# integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== +# +# undeclared-identifiers@^1.1.2: +# version "1.1.3" +# resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" +# integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== +# dependencies: +# acorn-node "^1.3.0" +# dash-ast "^1.0.0" +# get-assigned-identifiers "^1.2.0" +# simple-concat "^1.0.0" +# xtend "^4.0.1" +# +# unicode-canonical-property-names-ecmascript@^1.0.4: +# version "1.0.4" +# resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" +# integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +# +# unicode-match-property-ecmascript@^1.0.4: +# version "1.0.4" +# resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" +# integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +# dependencies: +# unicode-canonical-property-names-ecmascript "^1.0.4" +# unicode-property-aliases-ecmascript "^1.0.4" +# +# unicode-match-property-value-ecmascript@^1.1.0: +# version "1.1.0" +# resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" +# integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +# +# unicode-property-aliases-ecmascript@^1.0.4: +# version "1.0.5" +# resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" +# integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== +# +# url@~0.11.0: +# version "0.11.0" +# resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" +# integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= +# dependencies: +# punycode "1.3.2" +# querystring "0.2.0" +# +# util-deprecate@^1.0.1, util-deprecate@~1.0.1: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +# integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +# +# util@0.10.3: +# version "0.10.3" +# resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" +# integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= +# dependencies: +# inherits "2.0.1" +# +# util@~0.10.1: +# version "0.10.4" +# resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" +# integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== +# dependencies: +# inherits "2.0.3" +# +# uuid@^3.3.2: +# version "3.3.3" +# resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" +# integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== +# +# v8-coverage@^1.0.9: +# version "1.0.9" +# resolved "https://registry.yarnpkg.com/v8-coverage/-/v8-coverage-1.0.9.tgz#780889680c0fea0f587adf22e2b5f443b9434745" +# integrity sha512-JolsCH1JDI2QULrxkAGZaovJPvg/Q0p20Uj0F5N8fPtYDtz38gNBRPQ/WVXlLLd3d8WHvKN96AfE4XFk4u0g2g== +# dependencies: +# debug "^3.1.0" +# foreground-child "^1.5.6" +# istanbul-lib-coverage "^1.2.0" +# istanbul-lib-report "^1.1.3" +# istanbul-reports "^1.3.0" +# mkdirp "^0.5.1" +# rimraf "^2.6.2" +# signal-exit "^3.0.2" +# spawn-wrap "^1.4.2" +# test-exclude "^5.2.2" +# uuid "^3.3.2" +# v8-to-istanbul "1.2.0" +# yargs "^11.0.0" +# +# v8-to-istanbul@1.2.0: +# version "1.2.0" +# resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-1.2.0.tgz#f6a22ffb08b2202aaba8c2be497d1d41fe8fb4b6" +# integrity sha512-rVSmjdEfJmOHN8GYCbg+XUhbzXZr7DzdaXIslB9DdcopGZEMsW5x5qIdxr/8DcW7msULHNnvs/xUY1TszvhKRw== +# +# v8-to-istanbul@^3.2.3: +# version "3.2.3" +# resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-3.2.3.tgz#5978ca1120ebaf868738fd51484c15795db2f71c" +# integrity sha512-B8d/oxMtc/x0TYXr9b+Ywu5KexA/on4QMQ9M1kTYnoGZzKdo8LLk9ySlWePdDOtr2G0/2Injgcp3sOR9gU+3vQ== +# dependencies: +# "@types/istanbul-lib-coverage" "^2.0.1" +# convert-source-map "^1.6.0" +# source-map "^0.7.3" +# +# validate-npm-package-license@^3.0.1: +# version "3.0.4" +# resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" +# integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== +# dependencies: +# spdx-correct "^3.0.0" +# spdx-expression-parse "^3.0.0" +# +# vm-browserify@^1.0.0: +# version "1.1.0" +# resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" +# integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== +# +# which-module@^2.0.0: +# version "2.0.0" +# resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" +# integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +# +# which@^1.2.9, which@^1.3.0: +# version "1.3.1" +# resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" +# integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +# dependencies: +# isexe "^2.0.0" +# +# wordwrap@~0.0.2: +# version "0.0.3" +# resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +# integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= +# +# wrap-ansi@^2.0.0: +# version "2.1.0" +# resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" +# integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +# dependencies: +# string-width "^1.0.1" +# strip-ansi "^3.0.1" +# +# wrap-ansi@^5.1.0: +# version "5.1.0" +# resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" +# integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +# dependencies: +# ansi-styles "^3.2.0" +# string-width "^3.0.0" +# strip-ansi "^5.0.0" +# +# wrappy@1: +# version "1.0.2" +# resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +# integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +# +# xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +# version "4.0.2" +# resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" +# integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +# +# y18n@^3.2.1: +# version "3.2.1" +# resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" +# integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= +# +# y18n@^4.0.0: +# version "4.0.0" +# resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" +# integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +# +# yallist@^2.1.2: +# version "2.1.2" +# resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +# integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +# +# yargs-parser@^13.1.1: +# version "13.1.1" +# resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" +# integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +# dependencies: +# camelcase "^5.0.0" +# decamelize "^1.2.0" +# +# yargs-parser@^14.0.0: +# version "14.0.0" +# resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-14.0.0.tgz#42e25777b06718ec99eac2c3a98ad3de73b6818f" +# integrity sha512-zn/Mnx+tbFjkCFUodEpjXckNS65NfpB5oyqOkDDEG/8uxlfLZJu2IoBLQFjukUkn9rBbGkVYNzrDh6qy4NUd3g== +# dependencies: +# camelcase "^5.0.0" +# decamelize "^1.2.0" +# +# yargs-parser@^9.0.2: +# version "9.0.2" +# resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" +# integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= +# dependencies: +# camelcase "^4.1.0" +# +# yargs@^11.0.0: +# version "11.1.0" +# resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" +# integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== +# dependencies: +# cliui "^4.0.0" +# decamelize "^1.1.1" +# find-up "^2.1.0" +# get-caller-file "^1.0.1" +# os-locale "^2.0.0" +# require-directory "^2.1.1" +# require-main-filename "^1.0.1" +# set-blocking "^2.0.0" +# string-width "^2.0.0" +# which-module "^2.0.0" +# y18n "^3.2.1" +# yargs-parser "^9.0.2" +# +# yargs@^14.0.0: +# version "14.0.0" +# resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.0.0.tgz#ba4cacc802b3c0b3e36a9e791723763d57a85066" +# integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow== +# dependencies: +# cliui "^5.0.0" +# decamelize "^1.2.0" +# find-up "^3.0.0" +# get-caller-file "^2.0.1" +# require-directory "^2.1.1" +# require-main-filename "^2.0.0" +# set-blocking "^2.0.0" +# string-width "^3.0.0" +# which-module "^2.0.0" +# y18n "^4.0.0" +# yargs-parser "^13.1.1" + diff --git a/third_party/npm/node_modules/v8-coverage/index.js b/third_party/npm/node_modules/v8-coverage/index.js new file mode 100644 index 0000000000..dc04071281 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/index.js @@ -0,0 +1,3573 @@ +module.exports = +/******/ (function(modules, runtime) { // webpackBootstrap +/******/ "use strict"; +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ __webpack_require__.ab = __dirname + "/"; +/******/ +/******/ // the startup function +/******/ function startup() { +/******/ // Load entry module and return exports +/******/ return __webpack_require__(179); +/******/ }; +/******/ +/******/ // run startup +/******/ return startup(); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 4: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + + +var FileCoverage = __webpack_require__(770).FileCoverage, + CoverageSummary = __webpack_require__(770).CoverageSummary; + +function loadMap(source) { + var data = {}; + Object.keys(source).forEach(function (k) { + var cov = source[k]; + if (cov instanceof FileCoverage) { + data[k] = cov; + } else { + data[k] = new FileCoverage(cov); + } + }); + return data; +} +/** + * CoverageMap is a map of `FileCoverage` objects keyed by file paths. + * @param {Object} [obj=undefined] obj A coverage map from which to initialize this + * map's contents. This can be the raw global coverage object. + * @constructor + */ +function CoverageMap(obj) { + if (!obj) { + this.data = {}; + } else if (obj instanceof CoverageMap) { + this.data = obj.data; + } else { + this.data = loadMap(obj); + } +} +/** + * merges a second coverage map into this one + * @param {CoverageMap} obj - a CoverageMap or its raw data. Coverage is merged + * correctly for the same files and additional file coverage keys are created + * as needed. + */ +CoverageMap.prototype.merge = function (obj) { + var that = this, + other; + if (obj instanceof CoverageMap) { + other = obj; + } else { + other = new CoverageMap(obj); + } + Object.keys(other.data).forEach(function (k) { + var fc = other.data[k]; + if (that.data[k]) { + that.data[k].merge(fc); + } else { + that.data[k] = fc; + } + }); +}; +/** + * filter the coveragemap based on the callback provided + * @param {Function (filename)} callback - Returns true if the path + * should be included in the coveragemap. False if it should be + * removed. + */ +CoverageMap.prototype.filter = function (callback) { + var that = this; + Object.keys(that.data).forEach(function (k) { + if (!callback(k)) { + delete that.data[k]; + } + }); +}; +/** + * returns a JSON-serializable POJO for this coverage map + * @returns {Object} + */ +CoverageMap.prototype.toJSON = function () { + return this.data; +}; +/** + * returns an array for file paths for which this map has coverage + * @returns {Array{string}} - array of files + */ +CoverageMap.prototype.files = function () { + return Object.keys(this.data); +}; +/** + * returns the file coverage for the specified file. + * @param {String} file + * @returns {FileCoverage} + */ +CoverageMap.prototype.fileCoverageFor = function (file) { + var fc = this.data[file]; + if (!fc) { + throw new Error('No file coverage available for: ' + file); + } + return fc; +}; +/** + * adds a file coverage object to this map. If the path for the object, + * already exists in the map, it is merged with the existing coverage + * otherwise a new key is added to the map. + * @param {FileCoverage} fc the file coverage to add + */ +CoverageMap.prototype.addFileCoverage = function (fc) { + var cov = new FileCoverage(fc), + path = cov.path; + if (this.data[path]) { + this.data[path].merge(cov); + } else { + this.data[path] = cov; + } +}; +/** + * returns the coverage summary for all the file coverage objects in this map. + * @returns {CoverageSummary} + */ +CoverageMap.prototype.getCoverageSummary = function () { + var that = this, + ret = new CoverageSummary(); + this.files().forEach(function (key) { + ret.merge(that.fileCoverageFor(key).toSummary()); + }); + return ret; +}; + +module.exports = { + CoverageMap: CoverageMap +}; + + +/***/ }), + +/***/ 72: +/***/ (function(module, __unusedexports, __webpack_require__) { + +const Script = __webpack_require__(237) + +module.exports = function (path) { + return new Script(path) +} + + +/***/ }), + +/***/ 81: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Module dependencies. + */ +var tty = __webpack_require__(867); + +var util = __webpack_require__(669); +/** + * This is the Node.js implementation of `debug()`. + */ + + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + var supportsColor = __webpack_require__(247); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221]; + } +} catch (error) {} // Swallow - we only care if `supports-color` is available; it doesn't have to be. + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + + +exports.inspectOpts = Object.keys(process.env).filter(function (key) { + return /^debug_/i.test(key); +}).reduce(function (obj, key) { + // Camel-case + var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function (_, k) { + return k.toUpperCase(); + }); // Coerce string value into JS value + + var val = process.env[key]; + + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd); +} +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + + +function formatArgs(args) { + var name = this.namespace, + useColors = this.useColors; + + if (useColors) { + var c = this.color; + var colorCode = "\x1B[3" + (c < 8 ? c : '8;5;' + c); + var prefix = " ".concat(colorCode, ";1m").concat(name, " \x1B[0m"); + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + "\x1B[0m"); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + + return new Date().toISOString() + ' '; +} +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + + +function log() { + return process.stderr.write(util.format.apply(util, arguments) + '\n'); +} +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + +function load() { + return process.env.DEBUG; +} +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + + +function init(debug) { + debug.inspectOpts = {}; + var keys = Object.keys(exports.inspectOpts); + + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = __webpack_require__(486)(exports); +var formatters = module.exports.formatters; +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).replace(/\s*\n\s*/g, ' '); +}; +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + + + +/***/ }), + +/***/ 86: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var rng = __webpack_require__(139); +var bytesToUuid = __webpack_require__(722); + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +var _nodeId; +var _clockseq; + +// Previous uuid creation time +var _lastMSecs = 0; +var _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + if (node == null || clockseq == null) { + var seedBytes = rng(); + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [ + seedBytes[0] | 0x01, + seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5] + ]; + } + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ? buf : bytesToUuid(b); +} + +module.exports = v1; + + +/***/ }), + +/***/ 139: +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Unique ID creation requires a high quality random # generator. In node.js +// this is pretty straight-forward - we use the crypto API. + +var crypto = __webpack_require__(417); + +module.exports = function nodeRNG() { + return crypto.randomBytes(16); +}; + + +/***/ }), + +/***/ 179: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +const debug = __webpack_require__(784)('cov8:report') +const fs = __webpack_require__(747) +const path = __webpack_require__(622) +const libCoverage = __webpack_require__(293) +const CoverageMap = __webpack_require__(4).CoverageMap +const libReport = __webpack_require__(670) +const reports = __webpack_require__(870) +const v8ToIstanbul = __webpack_require__(72) +const uuid = __webpack_require__(898) + +module.exports = class Report { + /** + * Construct new report instance + * @param {String} directory Coverage directory + * @param {Array} [reporters] List of reporters + */ + constructor (directory, reporters = []) { + debug(`Init new report handler with reporters: [${reporters.join(', ')}] on directory ${directory}`) + this.reporters = reporters + this.directory = directory + + this.reportsPaths = path.resolve(this.directory, './tmp') + debug(`reportsPaths=${this.reportsPaths}`) + } + + /** + * Store coverage into coverage.map + * @param {Object} result V8 result + */ + store (result) { + debug('Try to store reports') + const reportsList = this.getReports(result) + debug('Store reports') + reportsList.forEach((report) => { + fs.writeFileSync(path.join(this.reportsPaths, `${uuid.v4()}.json`), JSON.stringify(report)) + }) + debug('Reports stored') + } + + /** + * Get reports from V8 + * @param {Object} result V8 result + */ + getReports (reports) { + debug(`Format ${reports.length} reports`) + return reports.map((report) => { + const reportFormatted = v8ToIstanbul(report.url) + reportFormatted.applyCoverage(report.functions) + return reportFormatted.toIstanbul() + }) + } + + /** + * Retrieve previous reports from previous test + */ + getPreviousReports () { + debug('Try to get previous map') + let reports = [] + fs.readdirSync(this.reportsPaths).map((reportName) => { + let report = null + try { + report = JSON.parse(fs.readFileSync(path.join(this.reportsPaths, reportName))) + } catch (err) { + return debug(`Got an error on reading a report: ${err.message}`) + } + reports.push(report) + }) + debug('Previous reports got') + return reports + } + + /** + * Merge previous map with reports + * @param {CoverageMap} map + * @param {Array} reports + */ + mergeMap (map, reports) { + debug('Merge map with reports') + reports.forEach((report) => { + this.mergeReport(map, report) + }) + return map + } + + /** + * Merge previous map with one report + * @param {CoverageMap} map + * @param {Object} report + */ + mergeReport (map, report) { + debug('Merge 1 report to map') + let sourceMap + if (report instanceof CoverageMap) { + sourceMap = report + } else { + sourceMap = new CoverageMap(report) + } + Object.keys(sourceMap.data).forEach((k) => { + let fc = sourceMap.data[k] + if (map.data[k]) { + this.mergeReportData(map.data[k], fc) + } else { + map.data[k] = fc + } + }) + } + + /** + * Merge previous map with one report data + * @param {CoverageMap} map + * @param {Object} report data + */ + mergeReportData (map, reportData) { + debug('Merge 1 report data to map') + Object.keys(reportData.branchMap).forEach(function (k) { + if (!map.data.branchMap[k]) { + map.data.branchMap[k] = reportData.branchMap[k] + } + }) + Object.keys(reportData.fnMap).forEach(function (k) { + if (!map.data.fnMap[k]) { + map.data.fnMap[k] = reportData.fnMap[k] + } + }) + Object.keys(reportData.statementMap).forEach(function (k) { + if (!map.data.statementMap[k]) { + map.data.statementMap[k] = reportData.statementMap[k] + } + }) + Object.keys(reportData.s).forEach(function (k) { + map.data.s[k] += reportData.s[k] + }) + Object.keys(reportData.f).forEach(function (k) { + map.data.f[k] += reportData.f[k] + }) + Object.keys(reportData.b).forEach(function (k) { + let retArray = map.data.b[k] + let secondArray = reportData.b[k] + if (!retArray) { + map.data.b[k] = secondArray + return + } + for (let i = 0; i < retArray.length; i += 1) { + retArray[i] += secondArray[i] + } + }) + } + + /** + * Generate report with coverage map and istanbul report + */ + generateReport () { + debug('Try to generate report') + const reportsList = this.getPreviousReports() + const map = this.mergeMap(libCoverage.createCoverageMap({}), reportsList) + const context = libReport.createContext({ + dir: this.directory + }) + + const tree = libReport.summarizers.pkg(map) + this.reporters.forEach((reporter) => { + debug(`Generate report for reporter ${reporter}`) + tree.visit(reports.create(reporter), context) + }) + } +} + + +/***/ }), + +/***/ 237: +/***/ (function(module, __unusedexports, __webpack_require__) { + +const assert = __webpack_require__(357) +const fs = __webpack_require__(747) +const CovBranch = __webpack_require__(856) +const CovLine = __webpack_require__(447) +const CovFunction = __webpack_require__(793) + +// Node.js injects a header when executing a script. +const cjsHeader = __webpack_require__(282).wrapper[0] + +module.exports = class CovScript { + constructor (scriptPath) { + assert(typeof scriptPath === 'string', 'scriptPath must be a string') + const {path, isESM} = parsePath(scriptPath) + const source = fs.readFileSync(path, 'utf8') + this.path = path + this.header = isESM ? '' : cjsHeader + this.lines = [] + this.branches = [] + this.functions = [] + this.eof = -1 + this._buildLines(source, this.lines) + } + _buildLines (source, lines) { + let position = 0 + source.split('\n').forEach((lineStr, i) => { + this.eof = position + lineStr.length + lines.push(new CovLine(i + 1, position, this.eof)) + position += lineStr.length + 1 // also add the \n. + }) + } + applyCoverage (blocks) { + blocks.forEach(block => { + block.ranges.forEach(range => { + const startCol = Math.max(0, range.startOffset - this.header.length) + const endCol = Math.min(this.eof, range.endOffset - this.header.length) + const lines = this.lines.filter(line => { + return startCol <= line.endCol && endCol >= line.startCol + }) + + if (block.isBlockCoverage && lines.length) { + // record branches. + this.branches.push(new CovBranch( + lines[0], + startCol, + lines[lines.length - 1], + endCol, + range.count + )) + } else if (block.functionName && lines.length) { + // record functions. + this.functions.push(new CovFunction( + block.functionName, + lines[0], + startCol, + lines[lines.length - 1], + endCol, + range.count + )) + } + + // record the lines (we record these as statements, such that we're + // compatible with Istanbul 2.0). + lines.forEach(line => { + // make sure branch spans entire line; don't record 'goodbye' + // branch in `const foo = true ? 'hello' : 'goodbye'` as a + // 0 for line coverage. + if (startCol <= line.startCol && endCol >= line.endCol) { + line.count = range.count + } + }) + }) + }) + } + toIstanbul () { + const istanbulInner = Object.assign( + {path: this.path}, + this._statementsToIstanbul(), + this._branchesToIstanbul(), + this._functionsToIstanbul() + ) + const istanbulOuter = {} + istanbulOuter[this.path] = istanbulInner + return istanbulOuter + } + _statementsToIstanbul () { + const statements = { + statementMap: {}, + s: {} + } + this.lines.forEach((line, index) => { + statements.statementMap[`${index}`] = line.toIstanbul() + statements.s[`${index}`] = line.count + }) + return statements + } + _branchesToIstanbul () { + const branches = { + branchMap: {}, + b: {} + } + this.branches.forEach((branch, index) => { + branches.branchMap[`${index}`] = branch.toIstanbul() + branches.b[`${index}`] = [branch.count] + }) + return branches + } + _functionsToIstanbul () { + const functions = { + fnMap: {}, + f: {} + } + this.functions.forEach((fn, index) => { + functions.fnMap[`${index}`] = fn.toIstanbul() + functions.f[`${index}`] = fn.count + }) + return functions + } +} + +function parsePath (scriptPath) { + return { + path: scriptPath.replace('file://', ''), + isESM: scriptPath.indexOf('file://') !== -1 + } +} + + +/***/ }), + +/***/ 247: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +var hasFlag = __webpack_require__(559); + +var support = function (level) { + if (level === 0) { + return false; + } + + return { + level: level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +}; + +var supportLevel = (function () { + if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + return 0; + } + + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } + + if (hasFlag('color=256')) { + return 2; + } + + if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + return 1; + } + + if (process.stdout && !process.stdout.isTTY) { + return 0; + } + + if (process.platform === 'win32') { + return 1; + } + + if ('CI' in process.env) { + if ('TRAVIS' in process.env || process.env.CI === 'Travis') { + return 1; + } + + return 0; + } + + if ('TEAMCITY_VERSION' in process.env) { + return process.env.TEAMCITY_VERSION.match(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/) === null ? 0 : 1; + } + + if (/^(screen|xterm)-256(?:color)?/.test(process.env.TERM)) { + return 2; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return 1; + } + + if ('COLORTERM' in process.env) { + return 1; + } + + if (process.env.TERM === 'dumb') { + return 0; + } + + return 0; +})(); + +if (supportLevel === 0 && 'FORCE_COLOR' in process.env) { + supportLevel = 1; +} + +module.exports = process && support(supportLevel); + + +/***/ }), + +/***/ 282: +/***/ (function(module) { + +module.exports = require("module"); + +/***/ }), + +/***/ 293: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + + +/** + * istanbul-lib-coverage exports an API that allows you to create and manipulate + * file coverage, coverage maps (a set of file coverage objects) and summary + * coverage objects. File coverage for the same file can be merged as can + * entire coverage maps. + * + * @module Exports + */ +var CoverageSummary = __webpack_require__(770).CoverageSummary, + FileCoverage = __webpack_require__(770).FileCoverage, + CoverageMap = __webpack_require__(4).CoverageMap; + +module.exports = { + /** + * creates a coverage summary object + * @param {Object} obj an argument with the same semantics + * as the one passed to the `CoverageSummary` constructor + * @returns {CoverageSummary} + */ + createCoverageSummary: function (obj) { + if (obj && obj instanceof CoverageSummary) { + return obj; + } + return new CoverageSummary(obj); + }, + /** + * creates a CoverageMap object + * @param {Object} obj optional - an argument with the same semantics + * as the one passed to the CoverageMap constructor. + * @returns {CoverageMap} + */ + createCoverageMap: function (obj) { + if (obj && obj instanceof CoverageMap) { + return obj; + } + return new CoverageMap(obj); + }, + /** + * creates a FileCoverage object + * @param {Object} obj optional - an argument with the same semantics + * as the one passed to the FileCoverage constructor. + * @returns {FileCoverage} + */ + createFileCoverage: function (obj) { + if (obj && obj instanceof FileCoverage) { + return obj; + } + return new FileCoverage(obj); + } +}; + +/** classes exported for reuse */ +module.exports.classes = { + /** + * the file coverage constructor + */ + FileCoverage: FileCoverage +}; + + +/***/ }), + +/***/ 357: +/***/ (function(module) { + +module.exports = require("assert"); + +/***/ }), + +/***/ 417: +/***/ (function(module) { + +module.exports = require("crypto"); + +/***/ }), + +/***/ 447: +/***/ (function(module) { + +module.exports = class CovLine { + constructor (line, startCol, endCol) { + this.line = line + this.startCol = startCol + this.endCol = endCol + this.count = 0 + } + toIstanbul () { + return { + start: { + line: this.line, + column: 0 + }, + end: { + line: this.line, + column: this.endCol - this.startCol + } + } + } +} + + +/***/ }), + +/***/ 486: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(761); + Object.keys(env).forEach(function (key) { + createDebug[key] = env[key]; + }); + /** + * Active `debug` instances. + */ + + createDebug.instances = []; + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + + createDebug.formatters = {}; + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + + function selectColor(namespace) { + var hash = 0; + + for (var i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + + createDebug.selectColor = selectColor; + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + + function createDebug(namespace) { + var prevTime; + + function debug() { + // Disabled? + if (!debug.enabled) { + return; + } + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var self = debug; // Set `diff` timestamp + + var curr = Number(new Date()); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } // Apply any `formatters` transformations + + + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return match; + } + + index++; + var formatter = createDebug.formatters[format]; + + if (typeof formatter === 'function') { + var val = args[index]; + match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` + + args.splice(index, 1); + index--; + } + + return match; + }); // Apply env-specific formatting (colors, etc.) + + createDebug.formatArgs.call(self, args); + var logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = createDebug.enabled(namespace); + debug.useColors = createDebug.useColors(); + debug.color = selectColor(namespace); + debug.destroy = destroy; + debug.extend = extend; // Debug.formatArgs = formatArgs; + // debug.rawLog = rawLog; + // env-specific initialization logic for debug instances + + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + createDebug.instances.push(debug); + return debug; + } + + function destroy() { + var index = createDebug.instances.indexOf(this); + + if (index !== -1) { + createDebug.instances.splice(index, 1); + return true; + } + + return false; + } + + function extend(namespace, delimiter) { + return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + } + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + + + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.names = []; + createDebug.skips = []; + var i; + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + + for (i = 0; i < createDebug.instances.length; i++) { + var instance = createDebug.instances[i]; + instance.enabled = createDebug.enabled(instance.namespace); + } + } + /** + * Disable debug output. + * + * @api public + */ + + + function disable() { + createDebug.enable(''); + } + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + + + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + var i; + var len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + + + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + + return val; + } + + createDebug.enable(createDebug.load()); + return createDebug; +} + +module.exports = setup; + + + +/***/ }), + +/***/ 559: +/***/ (function(module) { + +"use strict"; + +module.exports = function (flag, argv) { + argv = argv || process.argv; + + var terminatorPos = argv.indexOf('--'); + var prefix = /^--/.test(flag) ? '' : '--'; + var pos = argv.indexOf(prefix + flag); + + return pos !== -1 && (terminatorPos !== -1 ? pos < terminatorPos : true); +}; + + +/***/ }), + +/***/ 581: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + + +var Path = __webpack_require__(699), + util = __webpack_require__(669), + tree = __webpack_require__(665), + coverage = __webpack_require__(293), + BaseNode = tree.Node, + BaseTree = tree.Tree; + +function ReportNode(path, fileCoverage) { + this.path = path; + this.parent = null; + this.fileCoverage = fileCoverage; + this.children = []; +} + +util.inherits(ReportNode, BaseNode); + +ReportNode.prototype.addChild = function (child) { + child.parent = this; + this.children.push(child); +}; + +ReportNode.prototype.asRelative = function (p) { + /* istanbul ignore if */ + if (p.substring(0,1) === '/') { + return p.substring(1); + } + return p; +}; + +ReportNode.prototype.getQualifiedName = function () { + return this.asRelative(this.path.toString()); +}; + +ReportNode.prototype.getRelativeName = function () { + var parent = this.getParent(), + myPath = this.path, + relPath, + i, + parentPath = parent ? parent.path : new Path([]); + if (parentPath.ancestorOf(myPath)) { + relPath = new Path(myPath.elements()); + for (i = 0; i < parentPath.length; i += 1) { + relPath.shift(); + } + return this.asRelative(relPath.toString()); + } + return this.asRelative(this.path.toString()); +}; + +ReportNode.prototype.getParent = function () { + return this.parent; +}; + +ReportNode.prototype.getChildren = function () { + return this.children; +}; + +ReportNode.prototype.isSummary = function () { + return !this.fileCoverage; +}; + +ReportNode.prototype.getFileCoverage = function () { + return this.fileCoverage; +}; + +ReportNode.prototype.getCoverageSummary = function (filesOnly) { + var cacheProp = 'c_' + (filesOnly ? 'files' : 'full'), + summary; + + if (this.hasOwnProperty(cacheProp)) { + return this[cacheProp]; + } + + if (!this.isSummary()) { + summary = this.getFileCoverage().toSummary(); + } else { + var count = 0; + summary = coverage.createCoverageSummary(); + this.getChildren().forEach(function (child) { + if (filesOnly && child.isSummary()) { + return; + } + count += 1; + summary.merge(child.getCoverageSummary(filesOnly)); + }); + if (count === 0 && filesOnly) { + summary = null; + } + } + this[cacheProp] = summary; + return summary; +}; + +function treeFor(root, childPrefix) { + var tree = new BaseTree(), + visitor, + maybePrefix = function (node) { + if (childPrefix && !node.isRoot()) { + node.path.unshift(childPrefix); + } + }; + tree.getRoot = function () { + return root; + }; + visitor = { + onDetail: function (node) { + maybePrefix(node); + }, + onSummary: function (node) { + maybePrefix(node); + node.children.sort(function (a, b) { + var astr = a.path.toString(), + bstr = b.path.toString(); + return astr < bstr ? -1 : astr > bstr ? 1: /* istanbul ignore next */ 0; + }); + } + }; + tree.visit(visitor); + return tree; +} + +function findCommonParent(paths) { + if (paths.length === 0) { + return new Path([]); + } + var common = paths[0], + i; + + for (i = 1; i < paths.length; i += 1) { + common = common.commonPrefixPath(paths[i]); + if (common.length === 0) { + break; + } + } + return common; +} + +function toInitialList(coverageMap) { + var ret = [], + commonParent; + coverageMap.files().forEach(function (filePath) { + var p = new Path(filePath), + coverage = coverageMap.fileCoverageFor(filePath); + ret.push({ + filePath: filePath, + path: p, + fileCoverage: coverage + }); + }); + commonParent = findCommonParent(ret.map(function (o) { return o.path.parent(); })); + if (commonParent.length > 0) { + ret.forEach(function (o) { + o.path.splice(0, commonParent.length); + }); + } + return { + list: ret, + commonParent: commonParent + }; +} + +function toDirParents(list) { + var nodeMap = {}, + parentNodeList = []; + list.forEach(function (o) { + var node = new ReportNode(o.path, o.fileCoverage), + parentPath = o.path.parent(), + parent = nodeMap[parentPath.toString()]; + + if (!parent) { + parent = new ReportNode(parentPath); + nodeMap[parentPath.toString()] = parent; + parentNodeList.push(parent); + } + parent.addChild(node); + }); + return parentNodeList; +} + +function foldIntoParents(nodeList) { + var ret = [], i, j; + + // sort by longest length first + nodeList.sort(function (a, b) { + return -1 * Path.compare(a.path , b.path); + }); + + for (i = 0; i < nodeList.length; i += 1) { + var first = nodeList[i], + inserted = false; + + for (j = i + 1; j < nodeList.length; j += 1) { + var second = nodeList[j]; + if (second.path.ancestorOf(first.path)) { + second.addChild(first); + inserted = true; + break; + } + } + + if (!inserted) { + ret.push(first); + } + } + return ret; +} + +function createRoot() { + return new ReportNode(new Path([])); +} + +function createNestedSummary(coverageMap) { + var flattened = toInitialList(coverageMap), + dirParents = toDirParents(flattened.list), + topNodes = foldIntoParents(dirParents), + root; + + if (topNodes.length === 0) { + return treeFor(new ReportNode([])); + } + + if (topNodes.length === 1) { + return treeFor(topNodes[0]); + } + + root = createRoot(); + topNodes.forEach(function (node) { + root.addChild(node); + }); + return treeFor(root); +} + +function createPackageSummary(coverageMap) { + var flattened = toInitialList(coverageMap), + dirParents = toDirParents(flattened.list), + common = flattened.commonParent, + prefix, + root; + + if (dirParents.length === 1) { + root = dirParents[0]; + } else { + root = createRoot(); + // if one of the dirs is itself the root, + // then we need to create a top-level dir + dirParents.forEach(function (dp) { + if (dp.path.length === 0) { + prefix = 'root'; + } + }); + if (prefix && common.length > 0) { + prefix = common.elements()[common.elements().length - 1]; + } + dirParents.forEach(function (node) { + root.addChild(node); + }); + } + return treeFor(root, prefix); +} + +function createFlatSummary(coverageMap) { + var flattened = toInitialList(coverageMap), + list = flattened.list, + root; + + root = createRoot(); + list.forEach(function (o) { + var node = new ReportNode(o.path, o.fileCoverage); + root.addChild(node); + }); + return treeFor(root); +} + +module.exports = { + createNestedSummary: createNestedSummary, + createPackageSummary: createPackageSummary, + createFlatSummary: createFlatSummary +}; + + +/***/ }), + +/***/ 596: +/***/ (function(module, __unusedexports, __webpack_require__) { + +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var util = __webpack_require__(669), + path = __webpack_require__(622), + fs = __webpack_require__(747), + mkdirp = __webpack_require__(626), + supportsColor = __webpack_require__(247), + isAbsolute = path.isAbsolute || /* istanbul ignore next */ function (p) { + return path.resolve(p) === path.normalize(p); + }; + +/** + * abstract interface for writing content + * @class ContentWriter + * @constructor + */ +/* istanbul ignore next: abstract class */ +function ContentWriter() { +} + +/** + * writes a string as-is to the destination + * @param {String} str the string to write + */ +/* istanbul ignore next: abstract class */ +ContentWriter.prototype.write = function () { + throw new Error('write: must be overridden'); +}; + +/** + * returns the colorized version of a string. Typically, + * content writers that write to files will return the + * same string and ones writing to a tty will wrap it in + * appropriate escape sequences. + * @param {String} str the string to colorize + * @param {String} clazz one of `high`, `medium` or `low` + * @returns {String} the colorized form of the string + */ +ContentWriter.prototype.colorize = function (str /*, clazz*/) { + return str; +}; + +/** + * writes a string appended with a newline to the destination + * @param {String} str the string to write + */ +ContentWriter.prototype.println = function (str) { + this.write(str + '\n'); +}; + +/** + * closes this content writer. Should be called after all writes are complete. + */ +ContentWriter.prototype.close = function () { +}; + +/** + * a content writer that writes to a file + * @param {Number} fd - the file descriptor + * @extends ContentWriter + * @constructor + */ +function FileContentWriter(fd) { + this.fd = fd; +} +util.inherits(FileContentWriter, ContentWriter); + +FileContentWriter.prototype.write = function (str) { + fs.writeSync(this.fd, str); +}; + +FileContentWriter.prototype.close = function () { + fs.closeSync(this.fd); +}; + +/** + * a content writer that writes to the console + * @extends ContentWriter + * @constructor + */ +function ConsoleWriter() { +} +util.inherits(ConsoleWriter, ContentWriter); + +// allow stdout to be captured for tests. +var capture = false; +var output = ''; +ConsoleWriter.prototype.write = function (str) { + if (capture) { + output += str; + } else { + process.stdout.write(str); + } +}; + +ConsoleWriter.prototype.colorize = function (str, clazz) { + var colors = { + low: '31;1', + medium: '33;1', + high: '32;1' + }; + + /* istanbul ignore next: different modes for CI and local */ + if (supportsColor && colors[clazz]) { + return '\u001b[' + colors[clazz] + 'm' + str + '\u001b[0m'; + } + return str; +}; + +/** + * utility for writing files under a specific directory + * @class FileWriter + * @param {String} baseDir the base directory under which files should be written + * @constructor + */ +function FileWriter(baseDir) { + if (!baseDir) { + throw new Error('baseDir must be specified'); + } + this.baseDir = baseDir; +} + +/** +* static helpers for capturing stdout report output; +* super useful for tests! +*/ +FileWriter.startCapture = function () { + capture = true; +}; +FileWriter.stopCapture = function () { + capture = false; +}; +FileWriter.getOutput = function () { + return output; +}; +FileWriter.resetOutput = function () { + output = ''; +}; + +/** + * returns a FileWriter that is rooted at the supplied subdirectory + * @param {String} subdir the subdirectory under which to root the + * returned FileWriter + * @returns {FileWriter} + */ +FileWriter.prototype.writerForDir = function (subdir) { + if (isAbsolute(subdir)) { + throw new Error('Cannot create subdir writer for absolute path: ' + subdir); + } + return new FileWriter(this.baseDir + '/' + subdir); +}; +/** + * copies a file from a source directory to a destination name + * @param {String} source path to source file + * @param {String} dest relative path to destination file + */ +FileWriter.prototype.copyFile = function (source, dest) { + if (isAbsolute(dest)) { + throw new Error('Cannot write to absolute path: ' + dest); + } + dest = path.resolve(this.baseDir, dest); + mkdirp.sync(path.dirname(dest)); + fs.writeFileSync(dest, fs.readFileSync(source)); +}; +/** + * returns a content writer for writing content to the supplied file. + * @param {String|null} file the relative path to the file or the special + * values `"-"` or `null` for writing to the console + * @returns {ContentWriter} + */ +FileWriter.prototype.writeFile = function (file) { + if (file === null || file === '-') { + return new ConsoleWriter(); + } + if (isAbsolute(file)) { + throw new Error('Cannot write to absolute path: ' + file); + } + file = path.resolve(this.baseDir, file); + mkdirp.sync(path.dirname(file)); + return new FileContentWriter(fs.openSync(file, 'w')); +}; + +module.exports = FileWriter; + + +/***/ }), + +/***/ 622: +/***/ (function(module) { + +module.exports = require("path"); + +/***/ }), + +/***/ 626: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var path = __webpack_require__(622); +var fs = __webpack_require__(747); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), opts, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; + + +/***/ }), + +/***/ 665: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + + +var util = __webpack_require__(669); +/** + * An object with methods that are called during the traversal of the coverage tree. + * A visitor has the following methods that are called during tree traversal. + * + * * `onStart(root, state)` - called before traversal begins + * * `onSummary(node, state)` - called for every summary node + * * `onDetail(node, state)` - called for every detail node + * * `onSummaryEnd(node, state)` - called after all children have been visited for + * a summary node. + * * `onEnd(root, state)` - called after traversal ends + * + * @param delegate - a partial visitor that only implements the methods of interest + * The visitor object supplies the missing methods as noops. For example, reports + * that only need the final coverage summary need implement `onStart` and nothing + * else. Reports that use only detailed coverage information need implement `onDetail` + * and nothing else. + * @constructor + */ +function Visitor(delegate) { + this.delegate = delegate; +} + +['Start', 'End', 'Summary', 'SummaryEnd', 'Detail' ].forEach(function (k) { + var f = 'on' + k; + Visitor.prototype[f] = function (node, state) { + if (this.delegate[f] && typeof this.delegate[f] === 'function') { + this.delegate[f].call(this.delegate, node, state); + } + }; +}); + +function CompositeVisitor(visitors) { + if (!Array.isArray(visitors)) { + visitors = [visitors]; + } + this.visitors = visitors.map(function (v) { + if (v instanceof Visitor) { + return v; + } + return new Visitor(v); + }); +} + +util.inherits(CompositeVisitor, Visitor); + +['Start', 'Summary', 'SummaryEnd', 'Detail', 'End'].forEach(function (k) { + var f = 'on' + k; + CompositeVisitor.prototype[f] = function (node, state) { + this.visitors.forEach(function (v) { + v[f](node, state); + }); + }; +}); + +function Node() { +} + +/* istanbul ignore next: abstract method */ +Node.prototype.getQualifiedName = function () { + throw new Error('getQualifiedName must be overridden'); +}; + +/* istanbul ignore next: abstract method */ +Node.prototype.getRelativeName = function () { + throw new Error('getRelativeName must be overridden'); +}; + +/* istanbul ignore next: abstract method */ +Node.prototype.isRoot = function () { + return !this.getParent(); +}; + +/* istanbul ignore next: abstract method */ +Node.prototype.getParent = function () { + throw new Error('getParent must be overridden'); +}; + +/* istanbul ignore next: abstract method */ +Node.prototype.getChildren = function () { + throw new Error('getChildren must be overridden'); +}; + +/* istanbul ignore next: abstract method */ +Node.prototype.isSummary = function () { + throw new Error('isSummary must be overridden'); +}; + +/* istanbul ignore next: abstract method */ +Node.prototype.getCoverageSummary = function (/* filesOnly */) { + throw new Error('getCoverageSummary must be overridden'); +}; + +/* istanbul ignore next: abstract method */ +Node.prototype.getFileCoverage = function () { + throw new Error('getFileCoverage must be overridden'); +}; +/** + * visit all nodes depth-first from this node down. Note that `onStart` + * and `onEnd` are never called on the visitor even if the current + * node is the root of the tree. + * @param visitor a full visitor that is called during tree traversal + * @param state optional state that is passed around + */ +Node.prototype.visit = function (visitor, state) { + + var that = this, + visitChildren = function () { + that.getChildren().forEach(function (child) { + child.visit(visitor, state); + }); + }; + + if (this.isSummary()) { + visitor.onSummary(this, state); + } else { + visitor.onDetail(this, state); + } + + visitChildren(); + + if (this.isSummary()) { + visitor.onSummaryEnd(this, state); + } +}; + +/** + * abstract base class for a coverage tree. + * @constructor + */ +function Tree() { +} + +/** + * returns the root node of the tree + */ +/* istanbul ignore next: abstract method */ +Tree.prototype.getRoot = function () { + throw new Error('getRoot must be overridden'); +}; + +/** + * visits the tree depth-first with the supplied partial visitor + * @param visitor - a potentially partial visitor + * @param state - the state to be passed around during tree traversal + */ +Tree.prototype.visit = function (visitor, state) { + if (!(visitor instanceof Visitor)) { + visitor = new Visitor(visitor); + } + visitor.onStart(this.getRoot(), state); + this.getRoot().visit(visitor, state); + visitor.onEnd(this.getRoot(), state); +}; + +module.exports = { + Tree: Tree, + Node: Node, + Visitor: Visitor, + CompositeVisitor: CompositeVisitor +}; + + +/***/ }), + +/***/ 669: +/***/ (function(module) { + +module.exports = require("util"); + +/***/ }), + +/***/ 670: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + + +/** + * @module Exports + */ + +var summarizer = __webpack_require__(581), + context = __webpack_require__(677), + watermarks = __webpack_require__(930); + +module.exports = { + /** + * returns a reporting context for the supplied options + * @param {Object} [opts=null] opts + * @returns {Context} + */ + createContext: function (opts) { + return context.create(opts); + }, + /** + * returns the default watermarks that would be used when not + * overridden + * @returns {Object} an object with `statements`, `functions`, `branches`, + * and `line` keys. Each value is a 2 element array that has the low and + * high watermark as percentages. + */ + getDefaultWatermarks: function () { + return watermarks.getDefault(); + } +}; +/** + * standard summary functions + */ +module.exports.summarizers = { + /** + * a summarizer that creates a flat tree with one root node and bunch of + * files directly under it + */ + flat: summarizer.createFlatSummary, + /** + * a summarizer that creates a hierarchical tree where the coverage summaries + * of each directly reflect the summaries of all subdirectories and files in it + */ + nested: summarizer.createNestedSummary, + /** + * a summarizer that creates a tree in which directories are not nested. + * Every subdirectory is a child of the root node and only reflects the + * coverage numbers for the files in it (i.e. excludes subdirectories). + * This is the default summarizer. + */ + pkg: summarizer.createPackageSummary +}; + + + + +/***/ }), + +/***/ 677: +/***/ (function(module, __unusedexports, __webpack_require__) { + +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var FileWriter = __webpack_require__(596), + XMLWriter = __webpack_require__(690), + tree = __webpack_require__(665), + watermarks = __webpack_require__(930), + fs = __webpack_require__(747); + +function defaultSourceLookup(path) { + try { + return fs.readFileSync(path, 'utf8'); + } catch (ex) { + throw new Error('Unable to lookup source: ' + path + '(' + ex.message + ')'); + } +} + +function mergeWatermarks(specified, defaults) { + specified = specified || {}; + Object.keys(defaults).forEach(function (k) { + var specValue = specified[k]; + if (!(specValue && Array.isArray(specValue) && specValue.length === 2)) { + specified[k] = defaults[k]; + } + }); + return specified; +} +/** + * A reporting context that is passed to report implementations + * @param {Object} [opts=null] opts options + * @param {String} [opts.dir='coverage'] opts.dir the reporting directory + * @param {Object} [opts.watermarks=null] opts.watermarks watermarks for + * statements, lines, branches and functions + * @param {Function} [opts.sourceFinder=fsLookup] opts.sourceFinder a + * function that returns source code given a file path. Defaults to + * filesystem lookups based on path. + * @constructor + */ +function Context(opts) { + opts = opts || {}; + this.dir = opts.dir || 'coverage'; + this.watermarks = mergeWatermarks(opts.watermarks, watermarks.getDefault()); + this.sourceFinder = opts.sourceFinder || defaultSourceLookup; + this.data = {}; +} + +Object.defineProperty(Context.prototype, 'writer', { + enumerable: true, + get: function () { + if (!this.data.writer) { + this.data.writer = new FileWriter(this.dir); + } + return this.data.writer; + } +}); + +/** + * returns a FileWriter implementation for reporting use. Also available + * as the `writer` property on the context. + * @returns {Writer} + */ +Context.prototype.getWriter = function () { + return this.writer; +}; + +/** + * returns the source code for the specified file path or throws if + * the source could not be found. + * @param {String} filePath the file path as found in a file coverage object + * @returns {String} the source code + */ +Context.prototype.getSource = function (filePath) { + return this.sourceFinder(filePath); +}; + +/** + * returns the coverage class given a coverage + * types and a percentage value. + * @param {String} type - the coverage type, one of `statements`, `functions`, + * `branches`, or `lines` + * @param {Number} value - the percentage value + * @returns {String} one of `high`, `medium` or `low` + */ +Context.prototype.classForPercent = function (type, value) { + var watermarks = this.watermarks[type]; + if (!watermarks) { + return 'unknown'; + } + if (value < watermarks[0]) { + return 'low'; + } + if (value >= watermarks[1]) { + return 'high'; + } + return 'medium'; +}; +/** + * returns an XML writer for the supplied content writer + * @param {ContentWriter} contentWriter the content writer to which the returned XML writer + * writes data + * @returns {XMLWriter} + */ +Context.prototype.getXMLWriter = function (contentWriter) { + return new XMLWriter(contentWriter); +}; +/** + * returns a full visitor given a partial one. + * @param {Object} partialVisitor a partial visitor only having the functions of + * interest to the caller. These functions are called with a scope that is the + * supplied object. + * @returns {Visitor} + */ +Context.prototype.getVisitor = function (partialVisitor) { + return new tree.Visitor(partialVisitor); +}; + +module.exports = { + create: function (opts) { + return new Context(opts); + } +}; + + +/***/ }), + +/***/ 690: +/***/ (function(module) { + +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var INDENT = ' '; + +/** + * a utility class to produce well-formed, indented XML + * @param {ContentWriter} contentWriter the content writer that this utility wraps + * @constructor + */ +function XMLWriter(contentWriter) { + this.cw = contentWriter; + this.stack = []; +} + +function attrString(attrs) { + if (!attrs) { + return ''; + } + var ret = []; + Object.keys(attrs).forEach(function (k) { + var v = attrs[k]; + ret.push(k + '="' + v + '"'); + }); + return ret.length === 0 ? '' : ' ' + ret.join(' '); +} + +XMLWriter.prototype.indent = function (str) { + return this.stack.map(function () { return INDENT; }).join('') + str; +}; + +/** + * writes the opening XML tag with the supplied attributes + * @param {String} name tag name + * @param {Object} [attrs=null] attrs attributes for the tag + */ +XMLWriter.prototype.openTag = function (name, attrs) { + var str = this.indent('<' + name + attrString(attrs) + '>'); + this.cw.println(str); + this.stack.push(name); +}; + +/** + * closes an open XML tag. + * @param {String} name - tag name to close. This must match the writer's + * notion of the tag that is currently open. + */ +XMLWriter.prototype.closeTag = function (name) { + if (this.stack.length === 0) { + throw new Error('Attempt to close tag ' + name + ' when not opened'); + } + var stashed = this.stack.pop(), + str = ''; + + if (stashed !== name) { + throw new Error('Attempt to close tag ' + name + ' when ' + stashed + ' was the one open'); + } + this.cw.println(this.indent(str)); +}; +/** + * writes a tag and its value opening and closing it at the same time + * @param {String} name tag name + * @param {Object} [attrs=null] attrs tag attributes + * @param {String} [content=null] content optional tag content + */ +XMLWriter.prototype.inlineTag = function (name, attrs, content) { + var str = '<' + name + attrString(attrs); + if (content) { + str += '>' + content + ''; + } else { + str += '/>'; + } + str = this.indent(str); + this.cw.println(str); +}; +/** + * closes all open tags and ends the document + */ +XMLWriter.prototype.closeAll = function () { + var that = this; + this.stack.slice().reverse().forEach(function (name) { + that.closeTag(name); + }); +}; + +module.exports = XMLWriter; + + +/***/ }), + +/***/ 699: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + + +var path = __webpack_require__(622), + parsePath = __webpack_require__(905), + SEP = path.sep || /* istanbul ignore next */ '/', + origParser = parsePath, + origSep = SEP; + +function makeRelativeNormalizedPath(str, sep) { + var parsed = parsePath(str), + root = parsed.root, + dir, + file = parsed.base, + quoted, + pos; + + // handle a weird windows case separately + if (sep === '\\') { + pos = root.indexOf(':\\'); + if (pos >= 0) { + root = root.substring(0, pos + 2); + } + } + dir = parsed.dir.substring(root.length); + + if (str === '') { + return []; + } + + if (sep !== '/') { + quoted = new RegExp(sep.replace(/\W/g, '\\$&'), 'g'); + dir = dir.replace(quoted, '/'); + file = file.replace(quoted, '/'); // excessively paranoid? + } + + if (dir !== '') { + dir = dir + '/' + file; + } else { + dir = file; + } + if (dir.substring(0,1) === '/') { + dir = dir.substring(1); + } + dir = dir.split(/\/+/); + return dir; +} + +function Path(strOrArray) { + if (Array.isArray(strOrArray)) { + this.v = strOrArray; + } else if (typeof strOrArray === "string") { + this.v = makeRelativeNormalizedPath(strOrArray, SEP); + } else { + throw new Error('Invalid Path argument must be string or array:' + strOrArray); + } +} + +Path.prototype.toString = function () { + return this.v.join('/'); +}; + +Path.prototype.hasParent = function () { + return this.v.length > 0; +}; + +Path.prototype.parent = function () { + if (!this.hasParent()) { + throw new Error('Unable to get parent for 0 elem path'); + } + var p = this.v.slice(); + p.pop(); + return new Path(p); +}; + +Path.prototype.elements = function () { + return this.v.slice(); +}; + +Path.prototype.contains = function (other) { + var i; + if (other.length > this.length) { + return false; + } + for (i = 0; i < other.length; i += 1) { + if (this.v[i] !== other.v[i]) { + return false; + } + } + return true; +}; + +Path.prototype.ancestorOf = function (other) { + return other.contains(this) && other.length !== this.length; +}; + +Path.prototype.descendantOf = function (other) { + return this.contains(other) && other.length !== this.length; +}; + +Path.prototype.commonPrefixPath = function (other) { + var len = this.length > other.length ? other.length : this.length, + i, + ret = []; + + for (i = 0; i < len; i +=1 ) { + if (this.v[i] === other.v[i]) { + ret.push(this.v[i]); + } else { + break; + } + } + return new Path(ret); +}; + +['push', 'pop', 'shift', 'unshift', 'splice'].forEach(function (f) { + Path.prototype[f] = function () { + var args = Array.prototype.slice.call(arguments), + v = this.v; + return v[f].apply(v, args); + }; +}); + +Path.compare = function (a, b) { + var al = a.length, + bl = b.length, + astr, + bstr; + if (al < bl) { + return -1; + } + if (al > bl) { + return 1; + } + astr = a.toString(); + bstr = b.toString(); + return astr < bstr ? -1 : astr > bstr ? 1 : 0; +}; + +Object.defineProperty(Path.prototype, 'length', { + enumerable: true, + get: function () { + return this.v.length; + } +}); + +module.exports = Path; +Path.tester = { + setParserAndSep: function (p, sep) { + parsePath = p; + SEP = sep; + }, + reset: function () { + parsePath = origParser; + SEP = origSep; + } +}; + + + +/***/ }), + +/***/ 722: +/***/ (function(module) { + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]]]).join(''); +} + +module.exports = bytesToUuid; + + +/***/ }), + +/***/ 747: +/***/ (function(module) { + +module.exports = require("fs"); + +/***/ }), + +/***/ 761: +/***/ (function(module) { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), + +/***/ 770: +/***/ (function(module) { + +"use strict"; +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + + +function percent(covered, total) { + var tmp; + if (total > 0) { + tmp = 1000 * 100 * covered / total + 5; + return Math.floor(tmp / 10) / 100; + } else { + return 100.00; + } +} + +function blankSummary() { + var empty = function () { + return { + total: 0, + covered: 0, + skipped: 0, + pct: 'Unknown' + }; + }; + return { + lines: empty(), + statements: empty(), + functions: empty(), + branches: empty() + }; +} + +// asserts that a data object "looks like" a summary coverage object +function assertValidSummary(obj) { + var valid = obj && + obj.lines && + obj.statements && + obj.functions && + obj.branches; + if (!valid) { + throw new Error('Invalid summary coverage object, missing keys, found:' + + Object.keys(obj).join(',')); + } +} +/** + * CoverageSummary provides a summary of code coverage . It exposes 4 properties, + * `lines`, `statements`, `branches`, and `functions`. Each of these properties + * is an object that has 4 keys `total`, `covered`, `skipped` and `pct`. + * `pct` is a percentage number (0-100). + * @param {Object|CoverageSummary} [obj=undefined] an optional data object or + * another coverage summary to initialize this object with. + * @constructor + */ +function CoverageSummary(obj) { + if (!obj) { + this.data = blankSummary(); + } else if (obj instanceof CoverageSummary) { + this.data = obj.data; + } else { + this.data = obj; + } + assertValidSummary(this.data); +} + +['lines', 'statements', 'functions', 'branches'].forEach(function (p) { + Object.defineProperty(CoverageSummary.prototype, p, { + enumerable: true, + get: function () { + return this.data[p]; + } + }); +}); + +/** + * merges a second summary coverage object into this one + * @param {CoverageSummary} obj - another coverage summary object + */ +CoverageSummary.prototype.merge = function (obj) { + var that = this, + keys = ['lines', 'statements', 'branches', 'functions']; + keys.forEach(function (key) { + that[key].total += obj[key].total; + that[key].covered += obj[key].covered; + that[key].skipped += obj[key].skipped; + that[key].pct = percent(that[key].covered, that[key].total); + }); + return this; +}; + +/** + * returns a POJO that is JSON serializable. May be used to get the raw + * summary object. + */ +CoverageSummary.prototype.toJSON = function () { + return this.data; +}; + +// returns a data object that represents empty coverage +function emptyCoverage(filePath) { + return { + path: filePath, + statementMap: {}, + fnMap: {}, + branchMap: {}, + s: {}, + f: {}, + b: {} + }; +} +// asserts that a data object "looks like" a coverage object +function assertValidObject(obj) { + var valid = obj && + obj.path && + obj.statementMap && + obj.fnMap && + obj.branchMap && + obj.s && + obj.f && + obj.b; + if (!valid) { + throw new Error('Invalid file coverage object, missing keys, found:' + + Object.keys(obj).join(',')); + } +} +/** + * provides a read-only view of coverage for a single file. + * The deep structure of this object is documented elsewhere. It has the following + * properties: + * + * * `path` - the file path for which coverage is being tracked + * * `statementMap` - map of statement locations keyed by statement index + * * `fnMap` - map of function metadata keyed by function index + * * `branchMap` - map of branch metadata keyed by branch index + * * `s` - hit counts for statements + * * `f` - hit count for functions + * * `b` - hit count for branches + * + * @param {Object|FileCoverage|String} pathOrObj is a string that initializes + * and empty coverage object with the specified file path or a data object that + * has all the required properties for a file coverage object. + * @constructor + */ +function FileCoverage(pathOrObj) { + if (!pathOrObj) { + throw new Error("Coverage must be initialized with a path or an object"); + } + if (typeof pathOrObj === 'string') { + this.data = emptyCoverage(pathOrObj); + } else if (pathOrObj instanceof FileCoverage) { + this.data = pathOrObj.data; + } else if (typeof pathOrObj === 'object') { + this.data = pathOrObj; + } else { + throw new Error('Invalid argument to coverage constructor'); + } + assertValidObject(this.data); +} +/** + * returns computed line coverage from statement coverage. + * This is a map of hits keyed by line number in the source. + */ +FileCoverage.prototype.getLineCoverage = function () { + var statementMap = this.data.statementMap, + statements = this.data.s, + lineMap = {}; + + Object.keys(statements).forEach(function (st) { + if (!statementMap[st]) { + return; + } + var line = statementMap[st].start.line, + count = statements[st], + prevVal = lineMap[line]; + if (prevVal === undefined || prevVal < count) { + lineMap[line] = count; + } + }); + return lineMap; +}; +/** + * returns an array of uncovered line numbers. + * @returns {Array} an array of line numbers for which no hits have been + * collected. + */ +FileCoverage.prototype.getUncoveredLines = function () { + var lc = this.getLineCoverage(), + ret = []; + Object.keys(lc).forEach(function (l) { + var hits = lc[l]; + if (hits === 0) { + ret.push(l); + } + }); + return ret; +}; +/** + * returns a map of branch coverage by source line number. + * @returns {Object} an object keyed by line number. Each object + * has a `covered`, `total` and `coverage` (percentage) property. + */ +FileCoverage.prototype.getBranchCoverageByLine = function () { + var branchMap = this.branchMap, + branches = this.b, + ret = {}; + Object.keys(branchMap).forEach(function (k) { + var line = branchMap[k].line || branchMap[k].loc.start.line, + branchData = branches[k]; + ret[line] = ret[line] || []; + ret[line].push.apply(ret[line], branchData); + }); + Object.keys(ret).forEach(function (k) { + var dataArray = ret[k], + covered = dataArray.filter(function (item) { return item > 0; }), + coverage = covered.length / dataArray.length * 100; + ret[k] = { covered: covered.length, total: dataArray.length, coverage: coverage }; + }); + return ret; +}; + +// expose coverage data attributes +['path', 'statementMap', 'fnMap', 'branchMap', 's', 'f', 'b' ].forEach(function (p) { + Object.defineProperty(FileCoverage.prototype, p, { + enumerable: true, + get: function () { + return this.data[p]; + } + }); +}); +/** + * return a JSON-serializable POJO for this file coverage object + */ +FileCoverage.prototype.toJSON = function () { + return this.data; +}; +/** + * merges a second coverage object into this one, updating hit counts + * @param {FileCoverage} other - the coverage object to be merged into this one. + * Note that the other object should have the same structure as this one (same file). + */ +FileCoverage.prototype.merge = function (other) { + var that = this; + Object.keys(other.s).forEach(function (k) { + that.data.s[k] += other.s[k]; + }); + Object.keys(other.f).forEach(function (k) { + that.data.f[k] += other.f[k]; + }); + Object.keys(other.b).forEach(function (k) { + var i, + retArray = that.data.b[k], + secondArray = other.b[k]; + if (!retArray) { + that.data.b[k] = secondArray; + return; + } + for (i = 0; i < retArray.length; i += 1) { + retArray[i] += secondArray[i]; + } + }); +}; + +FileCoverage.prototype.computeSimpleTotals = function (property) { + var stats = this[property], + ret = {total: 0, covered: 0, skipped: 0}; + + if (typeof stats === 'function') { + stats = stats.call(this); + } + Object.keys(stats).forEach(function (key) { + var covered = !!stats[key]; + ret.total += 1; + if (covered) { + ret.covered += 1; + } + }); + ret.pct = percent(ret.covered, ret.total); + return ret; +}; + +FileCoverage.prototype.computeBranchTotals = function () { + var stats = this.b, + ret = {total: 0, covered: 0, skipped: 0}; + + Object.keys(stats).forEach(function (key) { + var branches = stats[key], + covered; + branches.forEach(function (branchHits) { + covered = branchHits > 0; + if (covered) { + ret.covered += 1; + } + }); + ret.total += branches.length; + }); + ret.pct = percent(ret.covered, ret.total); + return ret; +}; +/** + * resets hit counts for all statements, functions and branches + * in this coverage object resulting in zero coverage. + */ +FileCoverage.prototype.resetHits = function () { + var statements = this.s, + functions = this.f, + branches = this.b; + Object.keys(statements).forEach(function (s) { + statements[s] = 0; + }); + Object.keys(functions).forEach(function (f) { + functions[f] = 0; + }); + Object.keys(branches).forEach(function (b) { + var hits = branches[b]; + branches[b] = hits.map(function () { return 0; }); + }); +}; + +/** + * returns a CoverageSummary for this file coverage object + * @returns {CoverageSummary} + */ +FileCoverage.prototype.toSummary = function () { + var ret = {}; + ret.lines = this.computeSimpleTotals('getLineCoverage'); + ret.functions = this.computeSimpleTotals('f', 'fnMap'); + ret.statements = this.computeSimpleTotals('s', 'statementMap'); + ret.branches = this.computeBranchTotals(); + return new CoverageSummary(ret); +}; + +module.exports = { + CoverageSummary: CoverageSummary, + FileCoverage: FileCoverage +}; + + +/***/ }), + +/***/ 784: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = __webpack_require__(794); +} else { + module.exports = __webpack_require__(81); +} + + + +/***/ }), + +/***/ 793: +/***/ (function(module) { + +module.exports = class CovFunction { + constructor (name, startLine, startCol, endLine, endCol, count) { + this.name = name + this.startLine = startLine + this.startCol = startCol + this.endLine = endLine + this.endCol = endCol + this.count = count + } + toIstanbul () { + const loc = { + start: { + line: this.startLine.line, + column: this.startCol - this.startLine.startCol + }, + end: { + line: this.endLine.line, + column: this.endCol - this.endLine.startCol + } + } + return { + name: this.name, + decl: loc, + loc: loc, + line: this.startLine.line + } + } +} + + +/***/ }), + +/***/ 794: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +/** + * Colors. + */ + +exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ +// eslint-disable-next-line complexity + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } // Internet Explorer and Edge do not support colors. + + + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + + + return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); +} +/** + * Colorize log arguments if enabled. + * + * @api public + */ + + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function (match) { + if (match === '%%') { + return; + } + + index++; + + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); +} +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + + +function log() { + var _console; + + // This hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return (typeof console === "undefined" ? "undefined" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments); +} +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } +} +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + +function load() { + var r; + + try { + r = exports.storage.getItem('debug'); + } catch (error) {} // Swallow + // XXX (@Qix-) should we be logging these? + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + + + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = __webpack_require__(486)(exports); +var formatters = module.exports.formatters; +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + + + +/***/ }), + +/***/ 826: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var rng = __webpack_require__(139); +var bytesToUuid = __webpack_require__(722); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; + + +/***/ }), + +/***/ 856: +/***/ (function(module) { + +module.exports = class CovBranch { + constructor (startLine, startCol, endLine, endCol, count) { + this.startLine = startLine + this.startCol = startCol + this.endLine = endLine + this.endCol = endCol + this.count = count + } + toIstanbul () { + const location = { + start: { + line: this.startLine.line, + column: this.startCol - this.startLine.startCol + }, + end: { + line: this.endLine.line, + column: this.endCol - this.endLine.startCol + } + } + return { + type: 'branch', + line: this.line, + loc: location, + locations: [Object.assign({}, location)] + } + } +} + + +/***/ }), + +/***/ 867: +/***/ (function(module) { + +module.exports = require("tty"); + +/***/ }), + +/***/ 870: +/***/ (function(module, __unusedexports, __webpack_require__) { + +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var path = __webpack_require__(622); + +module.exports = { + create: function (name, cfg) { + cfg = cfg || {}; + var Cons = require(__webpack_require__.ab + "lib/" + name); + return new Cons(cfg); + } +}; + + + + + + + + +/***/ }), + +/***/ 898: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var v1 = __webpack_require__(86); +var v4 = __webpack_require__(826); + +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; + +module.exports = uuid; + + +/***/ }), + +/***/ 905: +/***/ (function(module) { + +"use strict"; + + +var isWindows = process.platform === 'win32'; + +// Regex to split a windows path into three parts: [*, device, slash, +// tail] windows-only +var splitDeviceRe = + /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + +// Regex to split the tail part of the above into [*, dir, basename, ext] +var splitTailRe = + /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/; + +var win32 = {}; + +// Function to split a filename into [root, dir, basename, ext] +function win32SplitPath(filename) { + // Separate device+slash from tail + var result = splitDeviceRe.exec(filename), + device = (result[1] || '') + (result[2] || ''), + tail = result[3] || ''; + // Split the tail into dir, basename and extension + var result2 = splitTailRe.exec(tail), + dir = result2[1], + basename = result2[2], + ext = result2[3]; + return [device, dir, basename, ext]; +} + +win32.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 4) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[0], + dir: allParts[0] + allParts[1].slice(0, -1), + base: allParts[2], + ext: allParts[3], + name: allParts[2].slice(0, allParts[2].length - allParts[3].length) + }; +}; + + + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var posix = {}; + + +function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); +} + + +posix.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 4) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + allParts[1] = allParts[1] || ''; + allParts[2] = allParts[2] || ''; + allParts[3] = allParts[3] || ''; + + return { + root: allParts[0], + dir: allParts[0] + allParts[1].slice(0, -1), + base: allParts[2], + ext: allParts[3], + name: allParts[2].slice(0, allParts[2].length - allParts[3].length) + }; +}; + + +if (isWindows) + module.exports = win32.parse; +else /* posix */ + module.exports = posix.parse; + +module.exports.posix = posix.parse; +module.exports.win32 = win32.parse; + + +/***/ }), + +/***/ 930: +/***/ (function(module) { + +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +module.exports = { + getDefault: function () { + return { + statements: [50, 80], + functions: [50, 80], + branches: [50, 80], + lines: [50, 80] + }; + } +}; + + +/***/ }) + +/******/ }); \ No newline at end of file diff --git a/third_party/npm/node_modules/v8-coverage/lib/clover/index.js b/third_party/npm/node_modules/v8-coverage/lib/clover/index.js new file mode 100644 index 0000000000..8d17f43d0c --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/clover/index.js @@ -0,0 +1,164 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +function CloverReport(opts) { + this.cw = null; + this.xml = null; + this.projectRoot = opts.projectRoot || process.cwd(); + this.file = opts.file || 'clover.xml'; +} + +function asJavaPackage(node) { + return node.getRelativeName(). + replace(/\//g, '.'). + replace(/\\/g, '.'). + replace(/\.$/, ''); +} + +function asClassName(node) { + return node.getRelativeName().replace(/.*[\\\/]/, ''); +} + +CloverReport.prototype.onStart = function (root, context) { + this.cw = context.writer.writeFile(this.file); + this.xml = context.getXMLWriter(this.cw); + this.writeRootStats(root, context); +}; + +CloverReport.prototype.onEnd = function () { + this.xml.closeAll(); + this.cw.close(); +}; + +CloverReport.prototype.getTreeStats = function (node, context) { + + var state = { + packages: 0, + files: 0, + classes: 0, + }, + visitor = { + onSummary: function (node, state) { + var metrics = node.getCoverageSummary(true); + if (metrics) { + state.packages += 1; + } + }, + onDetail: function (node, state) { + state.classes += 1; + state.files += 1; + } + }; + node.visit(context.getVisitor(visitor), state); + return state; +}; + +CloverReport.prototype.writeRootStats = function (node, context) { + + var metrics = node.getCoverageSummary(), + attrs = { + statements: metrics.lines.total, + coveredstatements: metrics.lines.covered, + conditionals: metrics.branches.total, + coveredconditionals: metrics.branches.covered, + methods: metrics.functions.total, + coveredmethods: metrics.functions.covered, + elements: metrics.lines.total + metrics.branches.total + metrics.functions.total, + coveredelements: metrics.lines.covered + metrics.branches.covered + metrics.functions.covered, + complexity: 0, + loc: metrics.lines.total, + ncloc: metrics.lines.total // what? copied as-is from old report + }, + treeStats; + + this.cw.println(''); + this.xml.openTag('coverage', { + generated: Date.now().toString(), + clover: '3.2.0' + }); + + this.xml.openTag('project', { + timestamp: Date.now().toString(), + name: 'All files', + }); + + treeStats = this.getTreeStats(node, context); + Object.keys(treeStats).forEach(function (k) { + attrs[k] = treeStats[k]; + }); + + this.xml.openTag('metrics', attrs); + +}; + +CloverReport.prototype.writeMetrics = function (metrics) { + this.xml.inlineTag('metrics', { + statements: metrics.lines.total, + coveredstatements: metrics.lines.covered, + conditionals: metrics.branches.total, + coveredconditionals: metrics.branches.covered, + methods: metrics.functions.total, + coveredmethods: metrics.functions.covered + }); +}; + +CloverReport.prototype.onSummary = function (node) { + if (node.isRoot()) { + return; + } + var metrics = node.getCoverageSummary(true); + if (!metrics) { + return; + } + + this.xml.openTag('package', { + name: asJavaPackage(node) + }); + this.writeMetrics(metrics); +}; + +CloverReport.prototype.onSummaryEnd = function (node) { + if (node.isRoot()) { + return; + } + this.xml.closeTag('package'); +}; + +CloverReport.prototype.onDetail = function (node) { + var that = this, + fileCoverage = node.getFileCoverage(), + metrics = node.getCoverageSummary(), + branchByLine = fileCoverage.getBranchCoverageByLine(), + lines; + + this.xml.openTag('file', { + name: asClassName(node), + path: fileCoverage.path + }); + + this.writeMetrics(metrics); + + lines = fileCoverage.getLineCoverage(); + Object.keys(lines).forEach(function (k) { + var attrs = { + num: k, + count: lines[k], + type: 'stmt' + }, + branchDetail = branchByLine[k]; + + if (branchDetail) { + attrs.type = 'cond'; + attrs.truecount = branchDetail.covered; + attrs.falsecount = branchDetail.total - branchDetail.covered; + } + that.xml.inlineTag('line', attrs); + }); + + this.xml.closeTag('file'); +}; + +module.exports = CloverReport; + + diff --git a/third_party/npm/node_modules/v8-coverage/lib/cobertura/index.js b/third_party/npm/node_modules/v8-coverage/lib/cobertura/index.js new file mode 100644 index 0000000000..b9bd2f7675 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/cobertura/index.js @@ -0,0 +1,142 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var path = require('path'); +function CoberturaReport(opts) { + this.cw = null; + this.xml = null; + this.projectRoot = opts.projectRoot || process.cwd(); + this.file = opts.file || 'cobertura-coverage.xml'; +} + +function asJavaPackage(node) { + return node.getRelativeName(). + replace(/\//g, '.'). + replace(/\\/g, '.'). + replace(/\.$/, ''); +} + +function asClassName(node) { + return node.getRelativeName().replace(/.*[\\\/]/, ''); +} + +CoberturaReport.prototype.onStart = function (root, context) { + this.cw = context.writer.writeFile(this.file); + this.xml = context.getXMLWriter(this.cw); + this.writeRootStats(root); +}; + +CoberturaReport.prototype.onEnd = function () { + this.xml.closeAll(); + this.cw.close(); +}; + +CoberturaReport.prototype.writeRootStats = function (node) { + + var metrics = node.getCoverageSummary(); + this.cw.println(''); + this.cw.println(''); + this.xml.openTag('coverage', { + 'lines-valid': metrics.lines.total, + 'lines-covered': metrics.lines.covered, + 'line-rate': metrics.lines.pct / 100.0, + 'branches-valid': metrics.branches.total, + 'branches-covered': metrics.branches.covered, + 'branch-rate': metrics.branches.pct / 100.0, + timestamp: Date.now().toString(), + complexity: '0', + version: '0.1' + }); + this.xml.openTag('sources'); + this.xml.inlineTag('source', null, this.projectRoot); + this.xml.closeTag('sources'); + this.xml.openTag('packages'); +}; + +CoberturaReport.prototype.onSummary = function (node) { + if (node.isRoot()) { + return; + } + var metrics = node.getCoverageSummary(true); + if (!metrics) { + return; + } + this.xml.openTag('package', { + name: asJavaPackage(node), + 'line-rate': metrics.lines.pct / 100.0, + 'branch-rate': metrics.branches.pct / 100.0 + }); + this.xml.openTag('classes'); +}; + +CoberturaReport.prototype.onSummaryEnd = function (node) { + if (node.isRoot()) { + return; + } + this.xml.closeTag('classes'); + this.xml.closeTag('package'); +}; + +CoberturaReport.prototype.onDetail = function (node) { + var that = this, + fileCoverage = node.getFileCoverage(), + metrics = node.getCoverageSummary(), + branchByLine = fileCoverage.getBranchCoverageByLine(), + fnMap, + lines; + + this.xml.openTag('class', { + name: asClassName(node), + filename: path.relative(this.projectRoot, fileCoverage.path), + 'line-rate': metrics.lines.pct / 100.0, + 'branch-rate': metrics.branches.pct / 100.0 + }); + + this.xml.openTag('methods'); + fnMap = fileCoverage.fnMap; + Object.keys(fnMap).forEach(function (k) { + var name = fnMap[k].name, + hits = fileCoverage.f[k]; + that.xml.openTag('method', { + name: name, + hits: hits, + signature: '()V' //fake out a no-args void return + }); + that.xml.openTag('lines'); + //Add the function definition line and hits so that jenkins cobertura plugin records method hits + that.xml.inlineTag('line', { + number: fnMap[k].decl.start.line, + hits: hits + }); + that.xml.closeTag('lines'); + that.xml.closeTag('method'); + + }); + this.xml.closeTag('methods'); + + this.xml.openTag('lines'); + lines = fileCoverage.getLineCoverage(); + Object.keys(lines).forEach(function (k) { + var attrs = { + number: k, + hits: lines[k], + branch: 'false' + }, + branchDetail = branchByLine[k]; + + if (branchDetail) { + attrs.branch = true; + attrs['condition-coverage'] = branchDetail.coverage + + '% (' + branchDetail.covered + '/' + branchDetail.total + ')'; + } + that.xml.inlineTag('line', attrs); + }); + + this.xml.closeTag('lines'); + this.xml.closeTag('class'); +}; + +module.exports = CoberturaReport; + + diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/annotator.js b/third_party/npm/node_modules/v8-coverage/lib/html/annotator.js new file mode 100644 index 0000000000..cb1f24e5a1 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/annotator.js @@ -0,0 +1,227 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +var InsertionText = require('./insertion-text'), + lt = '\u0001', + gt = '\u0002', + RE_LT = //g, + RE_AMP = /&/g, + RE_lt = /\u0001/g, + RE_gt = /\u0002/g; + +function title(str) { + return ' title="' + str + '" '; +} + +function customEscape(text) { + text = String(text); + return text.replace(RE_AMP, '&') + .replace(RE_LT, '<') + .replace(RE_GT, '>') + .replace(RE_lt, '<') + .replace(RE_gt, '>'); +} + +function annotateLines(fileCoverage, structuredText) { + var lineStats = fileCoverage.getLineCoverage(); + if (!lineStats) { + return; + } + Object.keys(lineStats).forEach(function (lineNumber) { + var count = lineStats[lineNumber]; + if (structuredText[lineNumber]) { + structuredText[lineNumber].covered = count > 0 ? 'yes' : 'no'; + structuredText[lineNumber].hits = count; + } + }); +} + +function annotateStatements(fileCoverage, structuredText) { + var statementStats = fileCoverage.s, + statementMeta = fileCoverage.statementMap; + Object.keys(statementStats).forEach(function (stName) { + var count = statementStats[stName], + meta = statementMeta[stName], + type = count > 0 ? 'yes' : 'no', + startCol = meta.start.column, + endCol = meta.end.column + 1, + startLine = meta.start.line, + endLine = meta.end.line, + openSpan = lt + 'span class="' + (meta.skip ? 'cstat-skip' : 'cstat-no') + '"' + title('statement not covered') + gt, + closeSpan = lt + '/span' + gt, + text; + + if (type === 'no' && structuredText[startLine]) { + if (endLine !== startLine) { + endCol = structuredText[startLine].text.originalLength(); + } + text = structuredText[startLine].text; + text.wrap(startCol, + openSpan, + startCol < endCol ? endCol : text.originalLength(), + closeSpan); + } + }); +} + +function annotateFunctions(fileCoverage, structuredText) { + + var fnStats = fileCoverage.f, + fnMeta = fileCoverage.fnMap; + if (!fnStats) { + return; + } + Object.keys(fnStats).forEach(function (fName) { + var count = fnStats[fName], + meta = fnMeta[fName], + type = count > 0 ? 'yes' : 'no', + startCol = meta.decl.start.column, + endCol = meta.decl.end.column + 1, + startLine = meta.decl.start.line, + endLine = meta.decl.end.line, + openSpan = lt + 'span class="' + (meta.skip ? 'fstat-skip' : 'fstat-no') + '"' + title('function not covered') + gt, + closeSpan = lt + '/span' + gt, + text; + + if (type === 'no' && structuredText[startLine]) { + if (endLine !== startLine) { + endCol = structuredText[startLine].text.originalLength(); + } + text = structuredText[startLine].text; + text.wrap(startCol, + openSpan, + startCol < endCol ? endCol : text.originalLength(), + closeSpan); + } + }); +} + +function annotateBranches(fileCoverage, structuredText) { + var branchStats = fileCoverage.b, + branchMeta = fileCoverage.branchMap; + if (!branchStats) { + return; + } + + Object.keys(branchStats).forEach(function (branchName) { + var branchArray = branchStats[branchName], + sumCount = branchArray.reduce(function (p, n) { + return p + n; + }, 0), + metaArray = branchMeta[branchName].locations, + i, + count, + meta, + type, + startCol, + endCol, + startLine, + endLine, + openSpan, + closeSpan, + text; + + // only highlight if partial branches are missing or if there is a + // single uncovered branch. + if (sumCount > 0 || (sumCount === 0 && branchArray.length === 1)) { + for (i = 0; i < branchArray.length && i < metaArray.length; i += 1) { + count = branchArray[i]; + meta = metaArray[i]; + type = count > 0 ? 'yes' : 'no'; + startCol = meta.start.column; + endCol = meta.end.column + 1; + startLine = meta.start.line; + endLine = meta.end.line; + openSpan = lt + 'span class="branch-' + i + ' ' + + (meta.skip ? 'cbranch-skip' : 'cbranch-no') + '"' + + title('branch not covered') + gt; + closeSpan = lt + '/span' + gt; + + if (count === 0 && structuredText[startLine]) { //skip branches taken + if (endLine !== startLine) { + endCol = structuredText[startLine].text.originalLength(); + } + text = structuredText[startLine].text; + if (branchMeta[branchName].type === 'if') { + // 'if' is a special case + // since the else branch might not be visible, being non-existent + text.insertAt(startCol, lt + 'span class="' + + (meta.skip ? 'skip-if-branch' : 'missing-if-branch') + '"' + + title((i === 0 ? 'if' : 'else') + ' path not taken') + gt + + (i === 0 ? 'I' : 'E') + lt + '/span' + gt, true, false); + } else { + text.wrap(startCol, + openSpan, + startCol < endCol ? endCol : text.originalLength(), + closeSpan); + } + } + } + } + }); +} + +function annotateSourceCode(fileCoverage, sourceStore) { + var codeArray, + lineCoverageArray; + try { + var sourceText = sourceStore.getSource(fileCoverage.path), + code = sourceText.split(/(?:\r?\n)|\r/), + count = 0, + structured = code.map(function (str) { + count += 1; + return { + line: count, + covered: 'neutral', + hits: 0, + text: new InsertionText(str, true) + }; + }); + structured.unshift({line: 0, covered: null, text: new InsertionText("")}); + annotateLines(fileCoverage, structured); + //note: order is important, since statements typically result in spanning the whole line and doing branches late + //causes mismatched tags + annotateBranches(fileCoverage, structured); + annotateFunctions(fileCoverage, structured); + annotateStatements(fileCoverage, structured); + structured.shift(); + + codeArray = structured.map(function (item) { + return customEscape(item.text.toString()) || ' '; + }); + + lineCoverageArray = structured.map(function (item) { + return { + covered: item.covered, + hits: item.hits > 0 ? item.hits + 'x' : ' ' + }; + }); + + return { + annotatedCode: codeArray, + lineCoverage: lineCoverageArray, + maxLines: structured.length + }; + } catch (ex) { + codeArray = [ ex.message ]; + lineCoverageArray = [ { covered: 'no', hits: 0 } ]; + String(ex.stack || '').split(/\r?\n/).forEach(function (line) { + codeArray.push(line); + lineCoverageArray.push({ covered: 'no', hits: 0 }); + }); + return { + annotatedCode: codeArray, + lineCoverage: lineCoverageArray, + maxLines: codeArray.length + }; + } +} + +module.exports = { + annotateSourceCode: annotateSourceCode +}; + diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/assets/base.css b/third_party/npm/node_modules/v8-coverage/lib/html/assets/base.css new file mode 100644 index 0000000000..417c7adc95 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/assets/base.css @@ -0,0 +1,212 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } + + +.medium .chart { border:1px solid #666; } +.medium .cover-fill { background: #666; } + +.cbranch-no { background: yellow !important; color: #111; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } +.medium { background: #eaeaea; } + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/assets/sort-arrow-sprite.png b/third_party/npm/node_modules/v8-coverage/lib/html/assets/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function (a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function (a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function () { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i =0 ; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function () { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(cols); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.css b/third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.css new file mode 100644 index 0000000000..b317a7cda3 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.js b/third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.js new file mode 100644 index 0000000000..ef51e03866 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/assets/vendor/prettify.js @@ -0,0 +1 @@ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/helpers.js b/third_party/npm/node_modules/v8-coverage/lib/html/helpers.js new file mode 100644 index 0000000000..00cdd605f7 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/helpers.js @@ -0,0 +1,79 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +function registerHelpers(handlebars) { + + handlebars.registerHelper('show_picture', function (opts) { + var num = Number(opts.fn(this)), + rest, + cls = ''; + if (isFinite(num)) { + if (num === 100) { + cls = ' cover-full'; + } + num = Math.floor(num); + rest = 100 - num; + return '
' + + '
'; + } else { + return ''; + } + }); + + handlebars.registerHelper('if_has_ignores', function (metrics, opts) { + return (metrics.statements.skipped + + metrics.functions.skipped + + metrics.branches.skipped) === 0 ? '' : opts.fn(this); + }); + + handlebars.registerHelper('show_ignores', function (metrics) { + var statements = metrics.statements.skipped, + functions = metrics.functions.skipped, + branches = metrics.branches.skipped, + result; + + if (statements === 0 && functions === 0 && branches === 0) { + return 'none'; + } + + result = []; + if (statements > 0) { + result.push(statements === 1 ? '1 statement' : statements + ' statements'); + } + if (functions > 0) { + result.push(functions === 1 ? '1 function' : functions + ' functions'); + } + if (branches > 0) { + result.push(branches === 1 ? '1 branch' : branches + ' branches'); + } + + return result.join(', '); + }); + + handlebars.registerHelper('show_lines', function (opts) { + var maxLines = Number(opts.fn(this)), + i, + array = []; + for (i = 0; i < maxLines; i += 1) { + array[i] = i + 1; + } + return array.join('\n'); + }); + + handlebars.registerHelper('show_line_execution_counts', function (context) { + var array = []; + context.forEach(function (data) { + array.push('' + data.hits + ''); + }); + return array.join('\n'); + }); + + handlebars.registerHelper('show_code', function (context /*, opts */) { + return context.join('\n'); + }); +} + +module.exports = { + registerHelpers: registerHelpers +}; diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/index.js b/third_party/npm/node_modules/v8-coverage/lib/html/index.js new file mode 100644 index 0000000000..402c082794 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/index.js @@ -0,0 +1,224 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +/*jshint maxlen: 300 */ +var fs = require('fs'), + path = require('path'), + handlebars = require('handlebars').create(), + annotator = require('./annotator'), + helpers = require('./helpers'), + templateFor = function (name) { + return handlebars.compile(fs.readFileSync(path.resolve(__dirname, 'templates', name + '.txt'), 'utf8')); + }, + headerTemplate = templateFor('head'), + footerTemplate = templateFor('foot'), + detailTemplate = handlebars.compile([ + '', + '{{#show_lines}}{{maxLines}}{{/show_lines}}', + '{{#show_line_execution_counts lineCoverage}}{{maxLines}}{{/show_line_execution_counts}}', + '
{{#show_code annotatedCode}}{{/show_code}}
', + '\n' + ].join('')), + summaryTableHeader = [ + '
', + '', + '', + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + '', + '', + '' + ].join('\n'), + summaryLineTemplate = handlebars.compile([ + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '\n' + ].join('\n\t')), + summaryTableFooter = [ + '', + '
FileStatementsBranchesFunctionsLines
{{file}}
{{#show_picture}}{{metrics.statements.pct}}{{/show_picture}}
{{metrics.statements.pct}}%{{metrics.statements.covered}}/{{metrics.statements.total}}{{metrics.branches.pct}}%{{metrics.branches.covered}}/{{metrics.branches.total}}{{metrics.functions.pct}}%{{metrics.functions.covered}}/{{metrics.functions.total}}{{metrics.lines.pct}}%{{metrics.lines.covered}}/{{metrics.lines.total}}
', + '
' + ].join('\n'); + +helpers.registerHelpers(handlebars); + +var standardLinkMapper = { + + getPath: function (node) { + if (typeof node === 'string') { + return node; + } + var filePath = node.getQualifiedName(); + if (node.isSummary()) { + if (filePath !== '') { + filePath += "/index.html"; + } else { + filePath = "index.html"; + } + } else { + filePath += ".html"; + } + return filePath; + }, + + relativePath: function (source, target) { + var targetPath = this.getPath(target), + sourcePath = path.dirname(this.getPath(source)); + return path.relative(sourcePath, targetPath); + }, + + assetPath: function (node, name) { + return this.relativePath(this.getPath(node), name); + } +}; + +function getBreadcrumbHtml(node, linkMapper) { + var parent = node.getParent(), + nodePath = [], + linkPath; + + while (parent) { + nodePath.push(parent); + parent = parent.getParent(); + } + + linkPath = nodePath.map(function (ancestor) { + var target = linkMapper.relativePath(node, ancestor), + name = ancestor.getRelativeName() || 'All files'; + return '' + name + ''; + }); + + linkPath.reverse(); + return linkPath.length > 0 ? linkPath.join(' / ') + ' ' + + node.getRelativeName() : 'All files'; +} + +function fillTemplate(node, templateData, linkMapper, context) { + var summary = node.getCoverageSummary(); + templateData.entity = node.getQualifiedName() || 'All files'; + templateData.metrics = summary; + templateData.reportClass = context.classForPercent('statements', summary.statements.pct); + templateData.pathHtml = getBreadcrumbHtml(node, linkMapper); + templateData.base = { + css: linkMapper.assetPath(node, 'base.css') + }; + templateData.sorter = { + js: linkMapper.assetPath(node, 'sorter.js'), + image: linkMapper.assetPath(node, 'sort-arrow-sprite.png') + }; + templateData.prettify = { + js: linkMapper.assetPath(node, 'prettify.js'), + css: linkMapper.assetPath(node, 'prettify.css') + }; +} + +function HtmlReport(opts) { + this.verbose = opts.verbose; + this.linkMapper = opts.linkMapper || standardLinkMapper; + this.subdir = opts.subdir || ''; + this.date = Date(); +} + +HtmlReport.prototype.getTemplateData = function () { + return { datetime: this.date }; +}; + +HtmlReport.prototype.getWriter = function (context) { + if (!this.subdir) { + return context.writer; + } + return context.writer.writerForDir(this.subdir); +}; + +HtmlReport.prototype.onStart = function (root, context) { + var that = this, + copyAssets = function (subdir, writer) { + var srcDir = path.resolve(__dirname, 'assets', subdir); + fs.readdirSync(srcDir).forEach(function (f) { + var resolvedSource = path.resolve(srcDir, f), + resolvedDestination = '.', + stat = fs.statSync(resolvedSource), + dest; + + if (stat.isFile()) { + dest = resolvedDestination + '/' + f; + if (this.verbose) { + console.log('Write asset: ' + dest); + } + writer.copyFile(resolvedSource, dest); + } + }); + }; + + ['.', 'vendor'].forEach(function (subdir) { + copyAssets(subdir, that.getWriter(context)); + }); +}; + +HtmlReport.prototype.onSummary = function (node, context) { + var linkMapper = this.linkMapper, + templateData = this.getTemplateData(), + children = node.getChildren(), + cw; + + fillTemplate(node, templateData, linkMapper, context); + cw = this.getWriter(context).writeFile(linkMapper.getPath(node)); + cw.write(headerTemplate(templateData)); + cw.write(summaryTableHeader); + children.forEach(function (child) { + var metrics = child.getCoverageSummary(), + reportClasses = { + statements: context.classForPercent('statements', metrics.statements.pct), + lines: context.classForPercent('lines', metrics.lines.pct), + functions: context.classForPercent('functions', metrics.functions.pct), + branches: context.classForPercent('branches', metrics.branches.pct) + }, + data = { + metrics: metrics, + reportClasses: reportClasses, + file: child.getRelativeName(), + output: linkMapper.relativePath(node, child) + }; + cw.write(summaryLineTemplate(data) + '\n'); + }); + cw.write(summaryTableFooter); + cw.write(footerTemplate(templateData)); + cw.close(); +}; + +HtmlReport.prototype.onDetail = function (node, context) { + var linkMapper = this.linkMapper, + templateData = this.getTemplateData(), + cw; + + fillTemplate(node, templateData, linkMapper, context); + cw = this.getWriter(context).writeFile(linkMapper.getPath(node)); + cw.write(headerTemplate(templateData)); + cw.write('
\n');
+    cw.write(detailTemplate(annotator.annotateSourceCode(node.getFileCoverage(), context)));
+    cw.write('
\n'); + cw.write(footerTemplate(templateData)); + cw.close(); +}; + +module.exports = HtmlReport; + diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/insertion-text.js b/third_party/npm/node_modules/v8-coverage/lib/html/insertion-text.js new file mode 100644 index 0000000000..fcd09fb907 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/insertion-text.js @@ -0,0 +1,108 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +function InsertionText(text, consumeBlanks) { + this.text = text; + this.origLength = text.length; + this.offsets = []; + this.consumeBlanks = consumeBlanks; + this.startPos = this.findFirstNonBlank(); + this.endPos = this.findLastNonBlank(); +} + +var WHITE_RE = /[ \f\n\r\t\v\u00A0\u2028\u2029]/; + +InsertionText.prototype = { + + findFirstNonBlank: function () { + var pos = -1, + text = this.text, + len = text.length, + i; + for (i = 0; i < len; i += 1) { + if (!text.charAt(i).match(WHITE_RE)) { + pos = i; + break; + } + } + return pos; + }, + findLastNonBlank: function () { + var text = this.text, + len = text.length, + pos = text.length + 1, + i; + for (i = len - 1; i >= 0; i -= 1) { + if (!text.charAt(i).match(WHITE_RE)) { + pos = i; + break; + } + } + return pos; + }, + originalLength: function () { + return this.origLength; + }, + + insertAt: function (col, str, insertBefore, consumeBlanks) { + consumeBlanks = typeof consumeBlanks === 'undefined' ? this.consumeBlanks : consumeBlanks; + col = col > this.originalLength() ? this.originalLength() : col; + col = col < 0 ? 0 : col; + + if (consumeBlanks) { + if (col <= this.startPos) { + col = 0; + } + if (col > this.endPos) { + col = this.origLength; + } + } + + var len = str.length, + offset = this.findOffset(col, len, insertBefore), + realPos = col + offset, + text = this.text; + this.text = text.substring(0, realPos) + str + text.substring(realPos); + return this; + }, + + findOffset: function (pos, len, insertBefore) { + var offsets = this.offsets, + offsetObj, + cumulativeOffset = 0, + i; + + for (i = 0; i < offsets.length; i += 1) { + offsetObj = offsets[i]; + if (offsetObj.pos < pos || (offsetObj.pos === pos && !insertBefore)) { + cumulativeOffset += offsetObj.len; + } + if (offsetObj.pos >= pos) { + break; + } + } + if (offsetObj && offsetObj.pos === pos) { + offsetObj.len += len; + } else { + offsets.splice(i, 0, { pos: pos, len: len }); + } + return cumulativeOffset; + }, + + wrap: function (startPos, startText, endPos, endText, consumeBlanks) { + this.insertAt(startPos, startText, true, consumeBlanks); + this.insertAt(endPos, endText, false, consumeBlanks); + return this; + }, + + wrapLine: function (startText, endText) { + this.wrap(0, startText, this.originalLength(), endText); + }, + + toString: function () { + return this.text; + } +}; + +module.exports = InsertionText; \ No newline at end of file diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/templates/foot.txt b/third_party/npm/node_modules/v8-coverage/lib/html/templates/foot.txt new file mode 100644 index 0000000000..994d25d796 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/templates/foot.txt @@ -0,0 +1,20 @@ +
+ + + +{{#if prettify}} + + +{{/if}} + + + diff --git a/third_party/npm/node_modules/v8-coverage/lib/html/templates/head.txt b/third_party/npm/node_modules/v8-coverage/lib/html/templates/head.txt new file mode 100644 index 0000000000..f98094e5f8 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/html/templates/head.txt @@ -0,0 +1,60 @@ + + + + Code coverage report for {{entity}} + +{{#if prettify}} + +{{/if}} + + + + + +
+
+

+ {{{pathHtml}}} +

+
+ {{#with metrics.statements}} +
+ {{pct}}% + Statements + {{covered}}/{{total}} +
+ {{/with}} + {{#with metrics.branches}} +
+ {{pct}}% + Branches + {{covered}}/{{total}} +
+ {{/with}} + {{#with metrics.functions}} +
+ {{pct}}% + Functions + {{covered}}/{{total}} +
+ {{/with}} + {{#with metrics.lines}} +
+ {{pct}}% + Lines + {{covered}}/{{total}} +
+ {{/with}} + {{#if_has_ignores metrics}} +
+ {{#show_ignores metrics}}{{/show_ignores}} + Ignored      +
+ {{/if_has_ignores}} +
+
+
diff --git a/third_party/npm/node_modules/v8-coverage/lib/json-summary/index.js b/third_party/npm/node_modules/v8-coverage/lib/json-summary/index.js new file mode 100644 index 0000000000..7f50d387c3 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/json-summary/index.js @@ -0,0 +1,48 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +function JsonSummaryReport(opts) { + this.file = opts.file || 'coverage-summary.json'; + this.contentWriter = null; + this.first = true; +} + +JsonSummaryReport.prototype.onStart = function (root, context) { + this.contentWriter = context.writer.writeFile(this.file); + this.contentWriter.write("{"); +}; + +JsonSummaryReport.prototype.writeSummary = function (filePath, sc) { + var cw = this.contentWriter; + if (this.first) { + this.first = false; + } else { + cw.write(","); + } + cw.write(JSON.stringify(filePath)); + cw.write(': '); + cw.write(JSON.stringify(sc)); + cw.println(""); +}; + +JsonSummaryReport.prototype.onSummary = function (node) { + if (!node.isRoot()) { + return; + } + this.writeSummary("total", node.getCoverageSummary()); +}; + +JsonSummaryReport.prototype.onDetail = function (node) { + this.writeSummary(node.getFileCoverage().path, node.getCoverageSummary()); +}; + +JsonSummaryReport.prototype.onEnd = function () { + var cw = this.contentWriter; + cw.println("}"); + cw.close(); +}; + +module.exports = JsonSummaryReport; diff --git a/third_party/npm/node_modules/v8-coverage/lib/json/index.js b/third_party/npm/node_modules/v8-coverage/lib/json/index.js new file mode 100644 index 0000000000..70426aac7c --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/json/index.js @@ -0,0 +1,39 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +function JsonReport(opts) { + this.file = opts.file || 'coverage-final.json'; + this.first = true; +} + +JsonReport.prototype.onStart = function (root, context) { + this.contentWriter = context.writer.writeFile(this.file); + this.contentWriter.write("{"); +}; + +JsonReport.prototype.onDetail = function (node) { + var fc = node.getFileCoverage(), + key = fc.path, + cw = this.contentWriter; + + if (this.first) { + this.first = false; + } else { + cw.write(","); + } + cw.write(JSON.stringify(key)); + cw.write(': '); + cw.write(JSON.stringify(fc)); + cw.println(""); +}; + +JsonReport.prototype.onEnd = function () { + var cw = this.contentWriter; + cw.println("}"); + cw.close(); +}; + +module.exports = JsonReport; diff --git a/third_party/npm/node_modules/v8-coverage/lib/lcov/index.js b/third_party/npm/node_modules/v8-coverage/lib/lcov/index.js new file mode 100644 index 0000000000..97e34c9777 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/lcov/index.js @@ -0,0 +1,29 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var LcovOnlyReport = require('../lcovonly'), + HtmlReport = require('../html'); + +function LcovReport() { + this.lcov = new LcovOnlyReport({file: 'lcov.info'}); + this.html = new HtmlReport({ subdir: 'lcov-report'}); +} + +['Start', 'End', 'Summary', 'SummaryEnd', 'Detail'].forEach(function (what) { + var meth = 'on' + what; + LcovReport.prototype[meth] = function () { + var args = Array.prototype.slice.call(arguments), + lcov = this.lcov, + html = this.html; + + if (lcov[meth]) { + lcov[meth].apply(lcov, args); + } + if (html[meth]) { + html[meth].apply(html, args); + } + }; +}); + +module.exports = LcovReport; diff --git a/third_party/npm/node_modules/v8-coverage/lib/lcovonly/index.js b/third_party/npm/node_modules/v8-coverage/lib/lcovonly/index.js new file mode 100644 index 0000000000..6d436e42b7 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/lcovonly/index.js @@ -0,0 +1,69 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +function LcovOnlyReport(opts) { + this.file = opts.file || 'lcov.info'; + this.contentWriter = null; +} + +LcovOnlyReport.prototype.onStart = function (root, context) { + this.contentWriter = context.writer.writeFile(this.file); +}; + +LcovOnlyReport.prototype.onDetail = function (node) { + + var fc = node.getFileCoverage(), + writer = this.contentWriter, + functions = fc.f, + functionMap = fc.fnMap, + lines = fc.getLineCoverage(), + branches = fc.b, + branchMap = fc.branchMap, + summary = node.getCoverageSummary(); + + writer.println('TN:'); //no test name + writer.println('SF:' + fc.path); + + Object.keys(functions).forEach(function (key) { + var meta = functionMap[key]; + writer.println('FN:' + [meta.decl.start.line, meta.name].join(',')); + }); + writer.println('FNF:' + summary.functions.total); + writer.println('FNH:' + summary.functions.covered); + + Object.keys(functions).forEach(function (key) { + var stats = functions[key], + meta = functionMap[key]; + writer.println('FNDA:' + [stats, meta.name].join(',')); + }); + + Object.keys(lines).forEach(function (key) { + var stat = lines[key]; + writer.println('DA:' + [key, stat].join(',')); + }); + writer.println('LF:' + summary.lines.total); + writer.println('LH:' + summary.lines.covered); + + Object.keys(branches).forEach(function (key) { + var branchArray = branches[key], + meta = branchMap[key], + line = meta.loc.start.line, + i = 0; + branchArray.forEach(function (b) { + writer.println('BRDA:' + [line, key, i, b].join(',')); + i += 1; + }); + }); + writer.println('BRF:' + summary.branches.total); + writer.println('BRH:' + summary.branches.covered); + writer.println('end_of_record'); +}; + +LcovOnlyReport.prototype.onEnd = function () { + this.contentWriter.close(); +}; + +module.exports = LcovOnlyReport; diff --git a/third_party/npm/node_modules/v8-coverage/lib/none/index.js b/third_party/npm/node_modules/v8-coverage/lib/none/index.js new file mode 100644 index 0000000000..4667978201 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/none/index.js @@ -0,0 +1,9 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +function NoneReport() { +} + +module.exports = NoneReport; + diff --git a/third_party/npm/node_modules/v8-coverage/lib/teamcity/index.js b/third_party/npm/node_modules/v8-coverage/lib/teamcity/index.js new file mode 100644 index 0000000000..34a90fc55c --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/teamcity/index.js @@ -0,0 +1,45 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +function TeamcityReport(opts) { + opts = opts || {}; + this.file = opts.file || null; + this.blockName = opts.blockName || 'Code Coverage Summary'; +} + +function lineForKey(value, teamcityVar) { + return '##teamcity[buildStatisticValue key=\'' + teamcityVar + '\' value=\'' + value + '\']'; +} + +TeamcityReport.prototype.onStart = function (node, context) { + var metrics = node.getCoverageSummary(), + cw; + + cw = context.writer.writeFile(this.file); + cw.println(''); + cw.println('##teamcity[blockOpened name=\''+ this.blockName +'\']'); + + //Statements Covered + cw.println(lineForKey(metrics.statements.covered, 'CodeCoverageAbsBCovered')); + cw.println(lineForKey(metrics.statements.total, 'CodeCoverageAbsBTotal')); + + //Branches Covered + cw.println(lineForKey(metrics.branches.covered, 'CodeCoverageAbsRCovered')); + cw.println(lineForKey(metrics.branches.total, 'CodeCoverageAbsRTotal')); + + //Functions Covered + cw.println(lineForKey(metrics.functions.covered, 'CodeCoverageAbsMCovered')); + cw.println(lineForKey(metrics.functions.total, 'CodeCoverageAbsMTotal')); + + //Lines Covered + cw.println(lineForKey(metrics.lines.covered, 'CodeCoverageAbsLCovered')); + cw.println(lineForKey(metrics.lines.total, 'CodeCoverageAbsLTotal')); + + cw.println('##teamcity[blockClosed name=\''+ this.blockName +'\']'); + cw.close(); +}; + +module.exports = TeamcityReport; diff --git a/third_party/npm/node_modules/v8-coverage/lib/text-lcov/index.js b/third_party/npm/node_modules/v8-coverage/lib/text-lcov/index.js new file mode 100644 index 0000000000..9aca61e660 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/text-lcov/index.js @@ -0,0 +1,14 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var util = require('util'), + LcovOnly = require('../lcovonly'); + +function TextLcov(opts) { + opts.file = '-'; + LcovOnly.call(this, opts); +} + +util.inherits(TextLcov, LcovOnly); +module.exports = TextLcov; diff --git a/third_party/npm/node_modules/v8-coverage/lib/text-summary/index.js b/third_party/npm/node_modules/v8-coverage/lib/text-summary/index.js new file mode 100644 index 0000000000..46de5d72d6 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/text-summary/index.js @@ -0,0 +1,49 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +function TextSummaryReport(opts) { + opts = opts || {}; + this.file = opts.file || null; +} + +function lineForKey(summary, key) { + var metrics = summary[key], + skipped, + result; + + key = key.substring(0, 1).toUpperCase() + key.substring(1); + if (key.length < 12) { + key += ' '.substring(0, 12 - key.length); + } + result = [key, ':', metrics.pct + '%', '(', metrics.covered + '/' + metrics.total, ')'].join(' '); + skipped = metrics.skipped; + if (skipped > 0) { + result += ', ' + skipped + ' ignored'; + } + return result; +} + +TextSummaryReport.prototype.onStart = function (node, context) { + var summary = node.getCoverageSummary(), + cw, + printLine = function (key) { + var str = lineForKey(summary, key), + clazz = context.classForPercent(key, summary[key].pct); + cw.println(cw.colorize(str, clazz)); + }; + + cw = context.writer.writeFile(this.file); + cw.println(''); + cw.println('=============================== Coverage summary ==============================='); + printLine('statements'); + printLine('branches'); + printLine('functions'); + printLine('lines'); + cw.println('================================================================================'); + cw.close(); +}; + +module.exports = TextSummaryReport; diff --git a/third_party/npm/node_modules/v8-coverage/lib/text/index.js b/third_party/npm/node_modules/v8-coverage/lib/text/index.js new file mode 100644 index 0000000000..3442ff4ee3 --- /dev/null +++ b/third_party/npm/node_modules/v8-coverage/lib/text/index.js @@ -0,0 +1,197 @@ +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +var PCT_COLS = 9, + MISSING_COL = 18, + TAB_SIZE = 1, + DELIM = ' |', + COL_DELIM = '-|'; + +function padding(num, ch) { + var str = '', + i; + ch = ch || ' '; + for (i = 0; i < num; i += 1) { + str += ch; + } + return str; +} + +function fill(str, width, right, tabs) { + tabs = tabs || 0; + str = String(str); + + var leadingSpaces = tabs * TAB_SIZE, + remaining = width - leadingSpaces, + leader = padding(leadingSpaces), + fmtStr = '', + fillStr, + strlen = str.length; + + if (remaining > 0) { + if (remaining >= strlen) { + fillStr = padding(remaining - strlen); + fmtStr = right ? fillStr + str : str + fillStr; + } else { + fmtStr = str.substring(strlen - remaining); + fmtStr = '... ' + fmtStr.substring(4); + } + } + + return leader + fmtStr; +} + +function formatName(name, maxCols, level) { + return fill(name, maxCols, false, level); +} + +function formatPct(pct, width) { + return fill(pct, width || PCT_COLS, true, 0); +} + +function nodeName(node) { + return node.getRelativeName() || 'All files'; +} + +function depthFor(node) { + var ret = 0; + node = node.getParent(); + while (node) { + ret += 1; + node = node.getParent(); + } + return ret; +} + +function findNameWidth(node, context) { + var last = 0, + compareWidth = function (node) { + var depth = depthFor(node), + idealWidth = TAB_SIZE * depth + nodeName(node).length; + if (idealWidth > last) { + last = idealWidth; + } + }, + visitor = { + onSummary: function (node) { + compareWidth(node); + }, + onDetail: function (node) { + compareWidth(node); + } + }; + node.visit(context.getVisitor(visitor)); + return last; +} + +function makeLine(nameWidth) { + var name = padding(nameWidth, '-'), + pct = padding(PCT_COLS, '-'), + elements = []; + + elements.push(name); + elements.push(pct); + elements.push(pct); + elements.push(pct); + elements.push(pct); + elements.push(padding(MISSING_COL, '-')); + return elements.join(COL_DELIM) + COL_DELIM; +} + +function tableHeader(maxNameCols) { + var elements = []; + elements.push(formatName('File', maxNameCols, 0)); + elements.push(formatPct('% Stmts')); + elements.push(formatPct('% Branch')); + elements.push(formatPct('% Funcs')); + elements.push(formatPct('% Lines')); + elements.push(formatPct('Uncovered Line #s', MISSING_COL)); + return elements.join(' |') + ' |'; +} + +function missingLines (node, colorizer) { + var missingLines = node.isSummary() ? [] : node.getFileCoverage().getUncoveredLines(); + return colorizer(formatPct(missingLines.join(','), MISSING_COL), 'low'); +} + +function missingBranches (node, colorizer) { + var branches = node.isSummary() ? {} : node.getFileCoverage().getBranchCoverageByLine(), + missingLines = Object.keys(branches).filter(function (key) { + return branches[key].coverage < 100; + }).map(function (key) { + return key; + }); + return colorizer(formatPct(missingLines.join(','), MISSING_COL), 'medium'); +} + +function tableRow(node, context, colorizer, maxNameCols, level) { + var name = nodeName(node), + metrics = node.getCoverageSummary(), + mm = { + statements: metrics.statements.pct, + branches: metrics.branches.pct, + functions: metrics.functions.pct, + lines: metrics.lines.pct, + }, + colorize = function (str, key) { + return colorizer(str, context.classForPercent(key, mm[key])); + }, + elements = []; + + elements.push(colorize(formatName(name, maxNameCols, level),'statements')); + elements.push(colorize(formatPct(mm.statements),'statements')); + elements.push(colorize(formatPct(mm.branches), 'branches')); + elements.push(colorize(formatPct(mm.functions), 'functions')); + elements.push(colorize(formatPct(mm.lines), 'lines')); + if (mm.lines === 100) { + elements.push(missingBranches(node, colorizer)); + } else { + elements.push(missingLines(node, colorizer)); + } + return elements.join(DELIM) + DELIM; +} + +function TextReport(opts) { + opts = opts || {}; + this.file = opts.file || null; + this.maxCols = opts.maxCols || 0; + this.cw = null; +} + +TextReport.prototype.onStart = function (root, context) { + var line, + statsWidth = 4 * (PCT_COLS + 2) + MISSING_COL, + maxRemaining; + + this.cw = context.writer.writeFile(this.file); + this.nameWidth = findNameWidth(root, context); + if (this.maxCols > 0) { + maxRemaining = this.maxCols - statsWidth - 2; + if (this.nameWidth > maxRemaining) { + this.nameWidth = maxRemaining; + } + } + line = makeLine(this.nameWidth); + this.cw.println(line); + this.cw.println(tableHeader(this.nameWidth)); + this.cw.println(line); +}; + +TextReport.prototype.onSummary = function (node, context) { + var nodeDepth = depthFor(node); + this.cw.println(tableRow(node, context, this.cw.colorize.bind(this.cw),this.nameWidth, nodeDepth)); +}; + +TextReport.prototype.onDetail = function (node, context) { + return this.onSummary(node, context); +}; + +TextReport.prototype.onEnd = function () { + this.cw.println(makeLine(this.nameWidth)); + this.cw.close(); +}; + +module.exports = TextReport; diff --git a/third_party/package.json b/third_party/package.json index 413b871ccb..c87b7b1a48 100644 --- a/third_party/package.json +++ b/third_party/package.json @@ -1,14 +1,15 @@ { - "private": true, - "devDependencies": { - "@babel/core": "7.5.5", - "@babel/preset-es2015": "7.0.0-beta.53", - "@zeit/ncc": "0.20.4", - "babelify": "10.0.0", - "base64-js": "1.3.1", - "browserify": "16.5.0", - "ieee754": "1.1.13", - "named-amd": "1.0.0", - "terser": "4.1.4" - } + "private": true, + "devDependencies": { + "@babel/core": "7.5.5", + "@babel/preset-es2015": "7.0.0-beta.53", + "@zeit/ncc": "0.20.4", + "babelify": "10.0.0", + "base64-js": "1.3.1", + "browserify": "16.5.0", + "ieee754": "1.1.13", + "named-amd": "1.0.0", + "terser": "4.1.4", + "v8-coverage": "^1.0.9" + } } diff --git a/third_party/yarn.lock b/third_party/yarn.lock index 47fa40ba3c..81718006e8 100644 --- a/third_party/yarn.lock +++ b/third_party/yarn.lock @@ -564,6 +564,16 @@ acorn@^6.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -796,6 +806,11 @@ cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -813,6 +828,20 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -835,7 +864,7 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0: lodash.memoize "~3.0.3" source-map "~0.5.3" -commander@^2.20.0: +commander@^2.20.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -915,6 +944,23 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-spawn@^4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + crypto-browserify@^3.0.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -956,6 +1002,11 @@ debug@^4.1.0: dependencies: ms "^2.1.1" +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -1022,6 +1073,13 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1045,6 +1103,41 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1060,7 +1153,17 @@ get-assigned-identifiers@^1.2.0: resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== -glob@^7.1.0: +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +glob@^7.1.0, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -1077,6 +1180,27 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +graceful-fs@^4.1.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + +handlebars@^4.0.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e" + integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1114,6 +1238,11 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hosted-git-info@^2.1.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + htmlescape@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" @@ -1182,16 +1311,70 @@ invariant@^2.2.0: dependencies: loose-envify "^1.0.0" +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + is-buffer@^1.1.0: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== + +istanbul-lib-report@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== + dependencies: + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-reports@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== + dependencies: + handlebars "^4.0.3" + js-tokens@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -1212,6 +1395,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-stable-stringify@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" @@ -1244,6 +1432,39 @@ labeled-stream-splicer@^2.0.0: inherits "^2.0.1" stream-splicer "^2.0.0" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.memoize@~3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" @@ -1261,6 +1482,14 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -1270,6 +1499,13 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -1278,6 +1514,11 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -1305,7 +1546,12 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -mkdirp@^0.5.0: +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -1343,6 +1589,33 @@ named-amd@1.0.0: resolved "https://registry.yarnpkg.com/named-amd/-/named-amd-1.0.0.tgz#37fd4ef2568afbf6bd61250c7de56df028502572" integrity sha1-N/1O8laK+/a9YSUMfeVt8ChQJXI= +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1355,11 +1628,76 @@ once@^1.3.0: dependencies: wrappy "1" +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + os-browserify@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -1384,17 +1722,35 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + path-browserify@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-parse@^1.0.6: +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -1404,6 +1760,13 @@ path-platform@~0.11.15: resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -1415,6 +1778,11 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -1430,6 +1798,11 @@ process@~0.11.0: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -1484,6 +1857,23 @@ read-only-stream@^2.0.0: dependencies: readable-stream "^2.0.2" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -1549,18 +1939,40 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.4, resolve@^1.3.2, resolve@^1.4.0: +resolve@^1.1.4, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" +rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -1579,11 +1991,21 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^5.4.1: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -1600,6 +2022,18 @@ shasum@^1.0.0: json-stable-stringify "~0.0.0" sha.js "~2.4.4" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" @@ -1610,6 +2044,11 @@ shell-quote@^1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" @@ -1628,11 +2067,49 @@ source-map@^0.5.0, source-map@~0.5.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +spawn-wrap@^1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848" + integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== + dependencies: + foreground-child "^1.5.6" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.6.2" + signal-exit "^3.0.2" + which "^1.3.0" + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + stream-browserify@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -1667,6 +2144,23 @@ stream-splicer@^2.0.0: inherits "^2.0.1" readable-stream "^2.0.2" +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -1681,6 +2175,30 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + subarg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" @@ -1688,6 +2206,13 @@ subarg@^1.0.0: dependencies: minimist "^1.1.0" +supports-color@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -1711,6 +2236,16 @@ terser@4.1.4: source-map "~0.6.1" source-map-support "~0.5.12" +test-exclude@^5.2.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -1751,6 +2286,14 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +uglify-js@^3.1.4: + version "3.6.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + dependencies: + commander "~2.20.0" + source-map "~0.6.1" + umd@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" @@ -1817,11 +2360,73 @@ util@~0.10.1: dependencies: inherits "2.0.3" +uuid@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + +v8-coverage@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/v8-coverage/-/v8-coverage-1.0.9.tgz#780889680c0fea0f587adf22e2b5f443b9434745" + integrity sha512-JolsCH1JDI2QULrxkAGZaovJPvg/Q0p20Uj0F5N8fPtYDtz38gNBRPQ/WVXlLLd3d8WHvKN96AfE4XFk4u0g2g== + dependencies: + debug "^3.1.0" + foreground-child "^1.5.6" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-report "^1.1.3" + istanbul-reports "^1.3.0" + mkdirp "^0.5.1" + rimraf "^2.6.2" + signal-exit "^3.0.2" + spawn-wrap "^1.4.2" + test-exclude "^5.2.2" + uuid "^3.3.2" + v8-to-istanbul "1.2.0" + yargs "^11.0.0" + +v8-to-istanbul@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-1.2.0.tgz#f6a22ffb08b2202aaba8c2be497d1d41fe8fb4b6" + integrity sha512-rVSmjdEfJmOHN8GYCbg+XUhbzXZr7DzdaXIslB9DdcopGZEMsW5x5qIdxr/8DcW7msULHNnvs/xUY1TszvhKRw== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + vm-browserify@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -1831,3 +2436,38 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= + dependencies: + camelcase "^4.1.0" + +yargs@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" diff --git a/yarn.lock b/yarn.lock index 5527ed0a9a..8705756494 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1432,15 +1432,6 @@ cli-highlight@^2.0.0: parse5 "^4.0.0" yargs "^13.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -1830,23 +1821,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^4: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1950,7 +1924,7 @@ decamelize-keys@^1.0.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2290,19 +2264,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -2479,7 +2440,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -2521,14 +2482,6 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= - dependencies: - cross-spawn "^4" - signal-exit "^3.0.0" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2617,11 +2570,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -2653,11 +2601,6 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -2783,7 +2726,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== -handlebars@^4.0.3, handlebars@^4.1.2: +handlebars@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== @@ -2814,11 +2757,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3100,11 +3038,6 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" @@ -3361,28 +3294,6 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== - -istanbul-lib-report@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== - dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-reports@^1.3.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== - dependencies: - handlebars "^4.0.3" - jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" @@ -3526,13 +3437,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - less@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/less/-/less-3.9.0.tgz#b7511c43f37cf57dc87dffd9883ec121289b1474" @@ -3675,14 +3579,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -3746,13 +3642,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -3861,11 +3750,6 @@ mime@1.6.0, mime@^1.4.1, mime@^1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4258,20 +4142,11 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0, os-homedir@^1.0.1: +os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4459,7 +4334,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5, path-parse@^1.0.6: +path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -4648,11 +4523,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.24: version "1.3.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.3.0.tgz#e1ebf6a3b5564fa8376f3da2275da76d875ca1bd" @@ -4806,14 +4676,6 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -4971,11 +4833,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -5025,7 +4882,7 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -5294,7 +5151,7 @@ shelljs@0.8.3: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= @@ -5418,18 +5275,6 @@ sourcemap-codec@^1.4.4: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== -spawn-wrap@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" - integrity sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg== - dependencies: - foreground-child "^1.5.6" - mkdirp "^0.5.0" - os-homedir "^1.0.1" - rimraf "^2.6.2" - signal-exit "^3.0.2" - which "^1.3.0" - spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -5558,7 +5403,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -5661,13 +5506,6 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -5734,16 +5572,6 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -test-exclude@^5.2.2: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - "testy@file:./tools/npm_packages/testy": version "0.0.1" @@ -6104,30 +5932,6 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -v8-coverage@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/v8-coverage/-/v8-coverage-1.0.9.tgz#780889680c0fea0f587adf22e2b5f443b9434745" - integrity sha512-JolsCH1JDI2QULrxkAGZaovJPvg/Q0p20Uj0F5N8fPtYDtz38gNBRPQ/WVXlLLd3d8WHvKN96AfE4XFk4u0g2g== - dependencies: - debug "^3.1.0" - foreground-child "^1.5.6" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-report "^1.1.3" - istanbul-reports "^1.3.0" - mkdirp "^0.5.1" - rimraf "^2.6.2" - signal-exit "^3.0.2" - spawn-wrap "^1.4.2" - test-exclude "^5.2.2" - uuid "^3.3.2" - v8-to-istanbul "1.2.0" - yargs "^11.0.0" - -v8-to-istanbul@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-1.2.0.tgz#f6a22ffb08b2202aaba8c2be497d1d41fe8fb4b6" - integrity sha512-rVSmjdEfJmOHN8GYCbg+XUhbzXZr7DzdaXIslB9DdcopGZEMsW5x5qIdxr/8DcW7msULHNnvs/xUY1TszvhKRw== - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -6232,7 +6036,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.0: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -6263,14 +6067,6 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -6303,21 +6099,11 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" @@ -6347,31 +6133,6 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - yargs@^13.0.0, yargs@^13.2.1: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83"