From 95ebaf15aaee139b329a1420b72c2db5b6c1d462 Mon Sep 17 00:00:00 2001 From: Luke Page Date: Fri, 3 May 2019 12:47:54 +0200 Subject: [PATCH] feat: Modern html report (#345) --- .eslintignore | 1 + .eslintrc | 26 +- package-lock.json | 131 +- package.json | 5 + packages/istanbul-reports/.gitignore | 1 + .../istanbul-reports/lib/html-spa/.babelrc | 3 + .../lib/html-spa/assets/sort-arrow-sprite.png | Bin 0 -> 209 bytes .../lib/html-spa/assets/spa.css | 256 ++ .../istanbul-reports/lib/html-spa/index.js | 176 + .../lib/html-spa/rollup.config.js | 42 + .../lib/html-spa/src/filterButtons.js | 48 + .../lib/html-spa/src/flattenButton.js | 14 + .../lib/html-spa/src/getChildData.js | 152 + .../lib/html-spa/src/index.js | 153 + .../lib/html-spa/src/routing.js | 52 + .../lib/html-spa/src/summaryHeader.js | 67 + .../lib/html-spa/src/summaryTableHeader.js | 123 + .../lib/html-spa/src/summaryTableLine.js | 188 + packages/istanbul-reports/package-lock.json | 2602 ++++++++++++- packages/istanbul-reports/package.json | 16 +- .../fixtures/specs/100-line-100-branch.json | 3035 +++++++-------- .../specs/100-line-missing-branch.json | 3189 ++++++++-------- .../fixtures/specs/empty-file-skip-empty.json | 102 +- .../test/fixtures/specs/empty-file.json | 96 +- .../specs/missing-line-missing-branch.json | 3261 +++++++++-------- .../istanbul-reports/test/html-spa/index.js | 179 + 26 files changed, 9124 insertions(+), 4794 deletions(-) create mode 100644 packages/istanbul-reports/.gitignore create mode 100644 packages/istanbul-reports/lib/html-spa/.babelrc create mode 100644 packages/istanbul-reports/lib/html-spa/assets/sort-arrow-sprite.png create mode 100644 packages/istanbul-reports/lib/html-spa/assets/spa.css create mode 100644 packages/istanbul-reports/lib/html-spa/index.js create mode 100644 packages/istanbul-reports/lib/html-spa/rollup.config.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/filterButtons.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/flattenButton.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/getChildData.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/index.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/routing.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/summaryHeader.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/summaryTableHeader.js create mode 100644 packages/istanbul-reports/lib/html-spa/src/summaryTableLine.js create mode 100644 packages/istanbul-reports/test/html-spa/index.js diff --git a/.eslintignore b/.eslintignore index c5a8f425..df3e9ca9 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,6 @@ node_modules/ vendor/ packages/istanbul-api/test/sample-code/bad.js +packages/istanbul-reports/lib/html-spa/assets/bundle.js coverage dist diff --git a/.eslintrc b/.eslintrc index 1c82efb2..cc9b68c0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -3,8 +3,14 @@ "eslint:recommended", "plugin:prettier/recommended", "plugin:import/errors", - "plugin:import/warnings" + "plugin:import/warnings", + "plugin:react/recommended" ], + "settings": { + "react": { + "version": "16.8" + } + }, "parserOptions": { "ecmaVersion": 7, "sourceType": "module" @@ -24,6 +30,24 @@ "browser": true } }, + { + "files": "packages/istanbul-reports/lib/html-spa/src/**", + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 2019, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "env": { + "browser": true + }, + "rules": { + "react/prop-types": "off", + "react/jsx-no-target-blank": "off" + } + }, { "files": "!packages/istanbul-reports/lib/html/assets/**", "rules": { diff --git a/package-lock.json b/package-lock.json index 24485e6e..de6faba7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2494,6 +2494,32 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, + "babel-eslint": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", + "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, "babelify": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", @@ -4442,6 +4468,32 @@ "prettier-linter-helpers": "^1.0.0" } }, + "eslint-plugin-react": { + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz", + "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "object.fromentries": "^2.0.0", + "prop-types": "^15.6.2", + "resolve": "^1.9.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -4999,8 +5051,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -5021,14 +5072,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5043,20 +5092,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -5173,8 +5219,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -5186,7 +5231,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5201,7 +5245,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5209,14 +5252,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -5235,7 +5276,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -5316,8 +5356,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -5329,7 +5368,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -5415,8 +5453,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -5452,7 +5489,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5472,7 +5508,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -5516,14 +5551,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -7087,6 +7120,15 @@ "verror": "1.10.0" } }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "^3.0.3" + } + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -8605,6 +8647,18 @@ "object-keys": "^1.0.11" } }, + "object.fromentries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", + "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.11.0", + "function-bind": "^1.1.1", + "has": "^1.0.1" + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -9192,6 +9246,17 @@ "read": "1" } }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "property-information": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.2.0.tgz", @@ -9307,6 +9372,12 @@ } } }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "dev": true + }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", diff --git a/package.json b/package.json index 9e39fbfc..bbb04447 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@babel/core": "^7.4.3", "@babel/preset-env": "^7.4.3", "@babel/register": "^7.4.0", + "babel-eslint": "^10.0.1", "chai": "^4.2.0", "clone": "^2.1.2", "coveralls": "^3.0.3", @@ -39,6 +40,7 @@ "eslint-config-prettier": "^4.1.0", "eslint-plugin-import": "^2.17.2", "eslint-plugin-prettier": "^3.0.1", + "eslint-plugin-react": "^7.12.4", "is-windows": "^1.0.2", "js-yaml": "^3.13.1", "lerna": "^3.13.3", @@ -56,6 +58,9 @@ "**/coverage/**", "**/dist/**", "**/html/assets/**", + "**/html-spa/assets/**", + "**/html-spa/src/**", + "**/html-spa/rollup.config.js", "**/test/**" ], "reporter": [ diff --git a/packages/istanbul-reports/.gitignore b/packages/istanbul-reports/.gitignore new file mode 100644 index 00000000..135ae49e --- /dev/null +++ b/packages/istanbul-reports/.gitignore @@ -0,0 +1 @@ +lib/html-spa/assets/bundle.js \ No newline at end of file diff --git a/packages/istanbul-reports/lib/html-spa/.babelrc b/packages/istanbul-reports/lib/html-spa/.babelrc new file mode 100644 index 00000000..86ef2108 --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/preset-env", "@babel/preset-react"] +} diff --git a/packages/istanbul-reports/lib/html-spa/assets/sort-arrow-sprite.png b/packages/istanbul-reports/lib/html-spa/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)Back'; + }; + + this.metricsToShow = opts.metricsToShow || [ + 'lines', + 'branches', + 'functions' + ]; + } + + getWriter(context) { + if (!this.subdir) { + return context.writer; + } + return context.writer.writerForDir(this.subdir); + } + + onStart(root, context) { + this.htmlReport.onStart(root, context); + + const writer = this.getWriter(context); + const srcDir = path.resolve(__dirname, './assets'); + fs.readdirSync(srcDir).forEach(f => { + const resolvedSource = path.resolve(srcDir, f); + const resolvedDestination = '.'; + const stat = fs.statSync(resolvedSource); + let dest; + + if (stat.isFile()) { + dest = resolvedDestination + '/' + f; + if (this.verbose) { + console.log('Write asset: ' + dest); + } + writer.copyFile(resolvedSource, dest); + } + }); + } + + onDetail(node, context) { + this.htmlReport.onDetail(node, context); + } + + getMetric(metric, type, isEmpty, context) { + return { + total: metric.total, + covered: metric.covered, + skipped: metric.skipped, + pct: isEmpty ? 0 : metric.pct, + classForPercent: isEmpty + ? 'empty' + : context.classForPercent(type, metric.pct) + }; + } + + toDataStructure(node, context) { + const coverageSummary = node.getCoverageSummary(); + const isEmpty = coverageSummary.isEmpty(); + const metrics = { + statements: this.getMetric( + coverageSummary.statements, + 'statements', + isEmpty, + context + ), + branches: this.getMetric( + coverageSummary.branches, + 'branches', + isEmpty, + context + ), + functions: this.getMetric( + coverageSummary.functions, + 'functions', + isEmpty, + context + ), + lines: this.getMetric( + coverageSummary.lines, + 'lines', + isEmpty, + context + ) + }; + + return { + file: node.getRelativeName(), + isEmpty, + metrics, + children: + node.isSummary() && + node + .getChildren() + .map(child => this.toDataStructure(child, context)) + }; + } + + onEnd(rootNode, context) { + const data = this.toDataStructure(rootNode, context); + + const cw = this.getWriter(context).writeFile( + this.linkMapper.getPath(rootNode) + ); + + cw.write( + ` + + + + + + +
+ + + + ` + ); + cw.close(); + } +} + +module.exports = HtmlSpaReport; diff --git a/packages/istanbul-reports/lib/html-spa/rollup.config.js b/packages/istanbul-reports/lib/html-spa/rollup.config.js new file mode 100644 index 00000000..4786b6e6 --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/rollup.config.js @@ -0,0 +1,42 @@ +import babel from 'rollup-plugin-babel'; +import resolve from 'rollup-plugin-node-resolve'; +import commonjs from 'rollup-plugin-commonjs'; +import { terser } from 'rollup-plugin-terser'; +import replace from 'rollup-plugin-replace'; + +module.exports = { + input: 'lib/html-spa/src/index.js', + output: { + file: 'lib/html-spa/assets/bundle.js', + format: 'iife' + }, + plugins: [ + babel({ + exclude: 'node_modules/**' + }), + resolve(), + commonjs({ + namedExports: { + 'react/index.js': [ + 'createElement', + 'Fragment', + 'useState', + 'useMemo', + 'useEffect' + ], + 'react-dom/index.js': ['render', 'unstable_batchedUpdates'] + } + }), + replace({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), + // use fast minify mode https://github.com/terser-js/terser#terser-fast-minify-mode + terser({ + compress: false, + mangle: true, + output: { + preamble: '/* eslint-disable */\n' + } + }) + ] +}; diff --git a/packages/istanbul-reports/lib/html-spa/src/filterButtons.js b/packages/istanbul-reports/lib/html-spa/src/filterButtons.js new file mode 100644 index 00000000..0fa8bb18 --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/filterButtons.js @@ -0,0 +1,48 @@ +import React from 'react'; + +function FilterButton({ children, filter, activeFilters, setFilters }) { + return ( + + ); +} + +export default function FilterButtons({ activeFilters, setFilters }) { + return ( +
+ + + Low + + + Medium + + + High + +
+ ); +} diff --git a/packages/istanbul-reports/lib/html-spa/src/flattenButton.js b/packages/istanbul-reports/lib/html-spa/src/flattenButton.js new file mode 100644 index 00000000..d503c6c9 --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/flattenButton.js @@ -0,0 +1,14 @@ +import React from 'react'; + +export default function FlattenButton({ setIsFlat, isFlat }) { + return ( +
+ +
+ ); +} diff --git a/packages/istanbul-reports/lib/html-spa/src/getChildData.js b/packages/istanbul-reports/lib/html-spa/src/getChildData.js new file mode 100644 index 00000000..8b09b327 --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/getChildData.js @@ -0,0 +1,152 @@ +function addPath(node, parentPath) { + if (!parentPath) { + return node; + } + return { ...node, file: parentPath + '/' + node.file }; +} + +function flatten(nodes, parentPath) { + let children = []; + for (let i = 0; i < nodes.length; i++) { + const child = nodes[i]; + if (child.children) { + children = [ + ...children, + ...flatten( + child.children, + (parentPath ? parentPath + '/' : '') + child.file + ) + ]; + } else { + children.push(addPath(child, parentPath)); + } + } + return children; +} + +function filterByFile(nodes, fileFilter, parentPath) { + let children = []; + + for (let i = 0; i < nodes.length; i++) { + const child = nodes[i]; + const childFullPath = (parentPath ? parentPath + '/' : '') + child.file; + if ( + childFullPath === fileFilter || + childFullPath.indexOf(fileFilter) < 0 + ) { + if (fileFilter.indexOf(childFullPath) === 0) { + // flatten + children = [ + ...children, + ...filterByFile(child.children, fileFilter, childFullPath) + ]; + } + } else { + const charsToRemoveFromFile = + fileFilter.length - (parentPath ? parentPath.length : 0); + let childFilename = child.file.slice(charsToRemoveFromFile); + if (childFilename[0] === '/') { + childFilename = childFilename.slice(1); + } + children.push({ + ...child, + file: childFilename + }); + } + } + return children; +} + +function sort(childData, activeSort) { + const top = activeSort.order === 'asc' ? 1 : -1; + const bottom = activeSort.order === 'asc' ? -1 : 1; + childData.sort((a, b) => { + let valueA; + let valueB; + if (activeSort.sortKey === 'file') { + valueA = a.file; + valueB = b.file; + } else { + const [metricType, valueType] = activeSort.sortKey.split('.'); + valueA = a.metrics[metricType][valueType]; + valueB = b.metrics[metricType][valueType]; + } + + if (valueA === valueB) { + return 0; + } + return valueA < valueB ? top : bottom; + }); + + for (let i = 0; i < childData.length; i++) { + const child = childData[i]; + if (child.children) { + childData[i] = { + ...child, + children: sort(child.children, activeSort) + }; + } + } + return childData; +} + +function filter(nodes, metricsMap, activeFilters) { + const children = []; + for (let i = 0; i < nodes.length; i++) { + let child = nodes[i]; + if (child.children) { + const newSubChildren = filter( + child.children, + metricsMap, + activeFilters + ); + if (newSubChildren.length) { + child = { ...child, children: newSubChildren }; + children.push(child); + } + } else { + if ( + (metricsMap.statements && + activeFilters[child.metrics.statements.classForPercent]) || + (metricsMap.branches && + activeFilters[child.metrics.branches.classForPercent]) || + (metricsMap.functions && + activeFilters[child.metrics.functions.classForPercent]) || + (metricsMap.lines && + activeFilters[child.metrics.lines.classForPercent]) + ) { + children.push(child); + } + } + } + return children; +} + +export default function getChildData( + sourceData, + metricsToShow, + activeSort, + isFlat, + activeFilters, + fileFilter +) { + let childData = sourceData.children; + + if (isFlat) { + childData = flatten(childData.slice(0)); + } + + if (fileFilter) { + childData = filterByFile(childData, fileFilter); + } + + if (activeFilters.low) { + activeFilters = { ...activeFilters, empty: true }; + } + childData = filter(childData, metricsToShow, activeFilters); + + if (activeSort) { + childData = sort(childData, activeSort); + } + return childData; +} diff --git a/packages/istanbul-reports/lib/html-spa/src/index.js b/packages/istanbul-reports/lib/html-spa/src/index.js new file mode 100644 index 00000000..46a3807f --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/index.js @@ -0,0 +1,153 @@ +// The index file for the spa running on the summary page +import React, { useState, useMemo, useEffect } from 'react'; +import ReactDOM from 'react-dom'; +import SummaryTableHeader from './summaryTableHeader'; +import SummaryTableLine from './summaryTableLine'; +import SummaryHeader from './summaryHeader'; +import getChildData from './getChildData'; +import FlattenButton from './flattenButton'; +import FilterButtons from './filterButtons'; +import { setLocation, decodeLocation } from './routing'; + +const sourceData = window.data; +const metricsToShow = {}; +for (let i = 0; i < window.metricsToShow.length; i++) { + metricsToShow[window.metricsToShow[i]] = true; +} + +let firstMount = true; + +function App() { + const routingDefaults = decodeLocation(); + + const [activeSort, setSort] = useState( + (routingDefaults && routingDefaults.activeSort) || { + sortKey: 'file', + order: 'desc' + } + ); + const [isFlat, setIsFlat] = useState( + (routingDefaults && routingDefaults.isFlat) || false + ); + const [activeFilters, setFilters] = useState( + (routingDefaults && routingDefaults.activeFilters) || { + low: true, + medium: true, + high: true + } + ); + const [expandedLines, setExpandedLines] = useState( + (routingDefaults && routingDefaults.expandedLines) || [] + ); + const [fileFilter, setFileFilter] = useState( + (routingDefaults && routingDefaults.fileFilter) || '' + ); + const childData = useMemo( + () => + getChildData( + sourceData, + metricsToShow, + activeSort, + isFlat, + activeFilters, + fileFilter + ), + [activeSort, isFlat, activeFilters, fileFilter] + ); + const overallMetrics = sourceData.metrics; + + useEffect(() => { + setLocation( + firstMount, + activeSort, + isFlat, + activeFilters, + fileFilter, + expandedLines + ); + firstMount = false; + }, [activeSort, isFlat, activeFilters, fileFilter, expandedLines]); + + useEffect(() => { + window.onpopstate = () => { + const routingState = decodeLocation(); + if (routingState) { + // make sure all the state is set before rendering to avoid url updates + // alternative is to merge all the states into one so it can be set in one go + // https://github.com/facebook/react/issues/14259 + ReactDOM.unstable_batchedUpdates(() => { + setFilters(routingState.activeFilters); + setSort(routingState.activeSort); + setIsFlat(routingState.isFlat); + setExpandedLines(routingState.expandedLines); + setFileFilter(routingState.fileFilter); + }); + } + }; + }, []); + + return ( + <> +
+ + {Boolean(fileFilter) && ( +
+

+ {fileFilter} ( + setFileFilter('')} + > + Clear + + ) +

+
+ )} +
+ + +
+
+ + { + setSort(newSort); + }} + activeSort={activeSort} + metricsToShow={metricsToShow} + /> + + {childData.map(child => ( + + ))} + +
+
+
+
+ Code coverage generated by{' '} + + istanbul + {' '} + at {window.generatedDatetime} +
+ + ); +} + +ReactDOM.render(, document.getElementById('app')); diff --git a/packages/istanbul-reports/lib/html-spa/src/routing.js b/packages/istanbul-reports/lib/html-spa/src/routing.js new file mode 100644 index 00000000..ae640eef --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/routing.js @@ -0,0 +1,52 @@ +export function setLocation( + isReplace, + activeSort, + isFlat, + activeFilters, + fileFilter, + expandedLines +) { + const params = [ + activeSort.sortKey, + activeSort.order, + isFlat, + activeFilters.low, + activeFilters.medium, + activeFilters.high, + encodeURIComponent(fileFilter), + expandedLines.map(encodeURIComponent).join(',') + ]; + const newUrl = `#${params.join('/')}`; + + if (newUrl === location.hash) { + return; + } + + window.history[isReplace ? 'replaceState' : 'pushState'](null, '', newUrl); +} + +export function decodeLocation() { + const items = location.hash.substr(1).split('/'); + if (items.length !== 8) { + return null; + } + + try { + return { + activeSort: { + sortKey: items[0], + order: items[1] + }, + isFlat: JSON.parse(items[2]), + activeFilters: { + low: JSON.parse(items[3]), + medium: JSON.parse(items[4]), + high: JSON.parse(items[5]) + }, + fileFilter: decodeURIComponent(items[6]), + expandedLines: items[7].split(',').map(decodeURIComponent) + }; + } catch (e) { + return null; + } +} diff --git a/packages/istanbul-reports/lib/html-spa/src/summaryHeader.js b/packages/istanbul-reports/lib/html-spa/src/summaryHeader.js new file mode 100644 index 00000000..e45e39d9 --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/summaryHeader.js @@ -0,0 +1,67 @@ +import React from 'react'; + +function Ignores({ metrics, metricsToShow }) { + const metricKeys = Object.keys(metricsToShow); + const result = []; + + for (let i = 0; i < metricKeys.length; i++) { + const metricKey = metricKeys[i]; + if (metricsToShow[metricKey]) { + const skipped = metrics[metricKey].skipped; + if (skipped > 0) { + result.push( + `${skipped} ${metricKey}${ + skipped === 1 ? '' : metricKey === 'branch' ? 'es' : 's' + }` + ); + } + } + } + + if (result.length === 0) { + return false; + } + + return ( +
+ {result.join(', ')} + Ignored +
+ ); +} + +function StatusMetric({ data, name }) { + return ( +
+ {data.pct}% + {name}{' '} + + {data.covered}/{data.total} + +
+ ); +} + +export default function SummaryHeader({ metrics, metricsToShow }) { + return ( +
+ {/* TODO -

All Files

- this doesn't add useful info any more. if anything it should be the name of the project - coverage*/} +
+ {metricsToShow.statements && ( + + )} + {metricsToShow.branches && ( + + )} + {metricsToShow.functions && ( + + )} + {metricsToShow.lines && ( + + )} + + +
+
+ ); +} diff --git a/packages/istanbul-reports/lib/html-spa/src/summaryTableHeader.js b/packages/istanbul-reports/lib/html-spa/src/summaryTableHeader.js new file mode 100644 index 00000000..87fa81bb --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/summaryTableHeader.js @@ -0,0 +1,123 @@ +import React from 'react'; + +function getSortDetails(sortKey, activeSort) { + let newSort = { sortKey, order: 'desc' }; + let sortClass = ''; + if (activeSort && activeSort.sortKey === sortKey) { + sortClass = 'sorted'; + if (activeSort.order === 'desc') { + sortClass += '-desc'; + newSort.order = 'asc'; + } else { + if (sortKey !== 'file') { + newSort = { sortKey: 'file', order: 'desc' }; + } + } + } + + return { + newSort, + sortClass + }; +} + +function SummaryTableHeaderCell({ name, onSort, sortKey, activeSort }) { + const { newSort, sortClass } = getSortDetails(sortKey, activeSort); + return ( + onSort(newSort)} + > + {name} + + + ); +} + +function FileHeaderCell({ onSort, activeSort }) { + const { newSort, sortClass } = getSortDetails('file', activeSort); + + return ( + onSort(newSort)} + > + File + + + ); +} + +function SubHeadings({ sortKeyPrefix, onSort, activeSort }) { + return ( + <> + + + + + ); +} + +export default function SummaryTableHeader({ + onSort, + activeSort, + metricsToShow +}) { + return ( + + + + {metricsToShow.statements && Statements} + {metricsToShow.branches && Branches} + {metricsToShow.functions && Functions} + {metricsToShow.lines && Lines} + + + + {metricsToShow.statements && ( + + )} + {metricsToShow.branches && ( + + )} + {metricsToShow.functions && ( + + )} + {metricsToShow.lines && ( + + )} + + + ); +} diff --git a/packages/istanbul-reports/lib/html-spa/src/summaryTableLine.js b/packages/istanbul-reports/lib/html-spa/src/summaryTableLine.js new file mode 100644 index 00000000..a1460750 --- /dev/null +++ b/packages/istanbul-reports/lib/html-spa/src/summaryTableLine.js @@ -0,0 +1,188 @@ +import React from 'react'; + +function ShowPicture({ num }) { + let rest; + let cls = ''; + if (isFinite(num)) { + if (num === 100) { + cls = ' cover-full'; + } + num = Math.floor(num); + rest = 100 - num; + return ( + <> +
+
+ + ); + } else { + return false; + } +} + +function MetricCells({ metrics }) { + return ( + <> + {metrics.pct}% + + {metrics.covered} + + + {metrics.total} + + + ); +} + +function FileCell({ + file, + prefix, + expandedLines, + setExpandedLines, + hasChildren, + setFileFilter +}) { + if (hasChildren) { + const expandedIndex = expandedLines.indexOf(prefix + file); + const isExpanded = expandedIndex >= 0; + const newExpandedLines = isExpanded + ? [ + ...expandedLines.slice(0, expandedIndex), + ...expandedLines.slice(expandedIndex + 1) + ] + : [...expandedLines, prefix + file]; + + return ( + <> + + setFileFilter(prefix + file)} + > + {file} + + + ); + } else { + return {file}; + } +} + +export default function SummaryTableLine({ + prefix, + metrics, + file, + children, + tabSize, + metricsToShow, + expandedLines, + setExpandedLines, + fileFilter, + setFileFilter +}) { + tabSize = tabSize || 0; + if (children && tabSize > 0) { + tabSize--; + } + prefix = (fileFilter ? fileFilter + '/' : '') + (prefix || ''); + + return ( + <> + + + {/* eslint-disable-line prefer-spread */ Array.apply(null, { + length: tabSize + }).map((nothing, index) => ( + + ))} + + + {metricsToShow.statements && ( + + )} + {metricsToShow.branches && ( + + )} + {metricsToShow.functions && ( + + )} + {metricsToShow.lines && } + + + {metricsToShow.statements && ( + +
+ +
+ + )} + {metricsToShow.branches && ( + +
+ +
+ + )} + {metricsToShow.functions && ( + +
+ +
+ + )} + {metricsToShow.lines && ( + +
+ +
+ + )} + + {children && + expandedLines.indexOf(prefix + file) >= 0 && + children.map(child => ( + + ))} + + ); +} diff --git a/packages/istanbul-reports/package-lock.json b/packages/istanbul-reports/package-lock.json index a9156dbb..84954ea8 100644 --- a/packages/istanbul-reports/package-lock.json +++ b/packages/istanbul-reports/package-lock.json @@ -1,14 +1,1401 @@ { "name": "istanbul-reports", - "version": "2.2.3", + "version": "2.2.4", "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.0.tgz", + "integrity": "sha512-Dzl7U0/T69DFOTwqz/FJdnOSWS57NpjNfCwMKHABr589Lg8uX1RrlBIJ7L5Dubt/xkLsx0xH5EBFzlBVes1ayA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helpers": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", + "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0", + "esutils": "^2.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", + "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-define-map": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", + "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.0", + "lodash": "^4.17.11" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", + "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", + "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.11" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz", + "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", + "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", + "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "dev": true, + "requires": { + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz", + "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", + "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.5.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", + "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", + "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", + "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz", + "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz", + "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz", + "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.3", + "regexpu-core": "^4.5.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz", + "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz", + "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz", + "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.4.3", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", + "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", + "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", + "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz", + "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", + "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", + "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz", + "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz", + "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz", + "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==", + "dev": true, + "requires": { + "regenerator-transform": "^0.13.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz", + "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.3", + "regexpu-core": "^4.5.4" + } + }, + "@babel/preset-env": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.2.tgz", + "integrity": "sha512-OEz6VOZaI9LW08CWVS3d9g/0jZA6YCn1gsKIy/fut7yZCJti5Lm1/Hi+uo/U+ODm7g4I6gULrCP+/+laT8xAsA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.0", + "@babel/plugin-transform-classes": "^7.4.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.0", + "@babel/plugin-transform-modules-systemjs": "^7.4.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2", + "@babel/plugin-transform-new-target": "^7.4.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.0", + "@babel/plugin-transform-regenerator": "^7.4.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "@babel/types": "^7.4.0", + "browserslist": "^4.4.2", + "core-js-compat": "^3.0.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/preset-react": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", + "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0" + } + }, + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/traverse": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", + "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "11.13.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.6.tgz", + "integrity": "sha512-Xoo/EBzEe8HxTSwaZNLZjaW6M6tA/+GmD3/DZ6uo8qSaolE/9Oarko0oV1fVfrLqOz0tx0nXJB4rdD5c+vixLw==", + "dev": true + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", + "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000960", + "electron-to-chromium": "^1.3.124", + "node-releases": "^1.1.14" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000962", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000962.tgz", + "integrity": "sha512-WXYsW38HK+6eaj5IZR16Rn91TGhU3OhbwjKZvJ4HN/XBIABLKfbij9Mnd3pM0VEwZSlltWjoWg3I8FQ0DGgNOA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "optional": true + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "core-js-compat": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz", + "integrity": "sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==", + "dev": true, + "requires": { + "browserslist": "^4.5.4", + "core-js": "3.0.1", + "core-js-pure": "3.0.1", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.1.tgz", + "integrity": "sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "electron-to-chromium": { + "version": "1.3.125", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz", + "integrity": "sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "estree-walker": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", + "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true }, "handlebars": { "version": "4.1.2", @@ -21,16 +1408,472 @@ "uglify-js": "^3.1.4" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-worker": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, "minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, "neo-async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==" }, + "node-releases": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.15.tgz", + "integrity": "sha512-cKV097BQaZr8LTSRUa2+oc/aX5L8UkZtPQrMSTgiJEeaW7ymTDCoRaGCoaTqk0lqnalcoSHu4wjSl0Cmj2+bMw==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -40,21 +1883,764 @@ "wordwrap": "~0.0.2" } }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", + "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + } + }, + "react-dom": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", + "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + } + }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "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" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", + "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-transform": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", + "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", + "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rollup": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.8.0.tgz", + "integrity": "sha512-dKxL6ihUZ9YrVySKf/LBz5joW2sqwWkiuki34279Ppr2cL+O6Za6Ujovk+rtTX0AFCIsH1rs6y8LYKdZZ/7C5A==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "^11.11.6", + "acorn": "^6.1.1" + } + }, + "rollup-plugin-babel": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.2.tgz", + "integrity": "sha512-KfnizE258L/4enADKX61ozfwGHoqYauvoofghFJBhFnpH9Sb9dNPpWg8QHOaAfVASUYV8w0mCx430i9z0LJoJg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.3.0" + } + }, + "rollup-plugin-commonjs": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.3.tgz", + "integrity": "sha512-VFPESAh1ag2AEhqbECjSxm9C1T2oNx4Yd3kIvPbU17iO5IOHtnOr/ZH0Bf5Y+a1IUDppKmg3kV2gu2/Bkhh0Hw==", + "dev": true, + "requires": { + "estree-walker": "^0.6.0", + "magic-string": "^0.25.2", + "resolve": "^1.10.0", + "rollup-pluginutils": "^2.5.0" + } + }, + "rollup-plugin-node-resolve": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.1.tgz", + "integrity": "sha512-fSS7YDuCe0gYqKsr5OvxMloeZYUSgN43Ypi1WeRZzQcWtHgFayV5tUSPYpxuaioIIWaBXl6NrVk0T2/sKwueLg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0", + "is-module": "^1.0.0", + "resolve": "^1.10.0" + } + }, + "rollup-plugin-replace": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.1.1.tgz", + "integrity": "sha512-IS5ZYBb3px0UfbDCYzKaKxelLd5dbPHhfplEXbymfvGlz9Ok44At4AjTOWe2qEax73bE8+pnMZN9C7PcVpFNlw==", + "dev": true, + "requires": { + "magic-string": "^0.25.2", + "rollup-pluginutils": "^2.4.1" + } + }, + "rollup-plugin-terser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz", + "integrity": "sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "jest-worker": "^24.0.0", + "serialize-javascript": "^1.6.1", + "terser": "^3.14.1" + } + }, + "rollup-pluginutils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz", + "integrity": "sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.0", + "micromatch": "^3.1.10" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "scheduler": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, "uglify-js": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.7.tgz", - "integrity": "sha512-GCgJx3BBuaf/QMvBBkhoHDh4SVsHCC3ILEzriPw4FgJJKCuxVBSYLRkDlmT3uhXyGWKs3VN5r0mCkBIZaHWu3w==", + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.8.tgz", + "integrity": "sha512-GFSjB1nZIzoIq70qvDRtWRORHX3vFkAnyK/rDExc0BN7r9+/S+Voz3t/fwJuVfjppAMz+ceR2poE7tkhvnVwQQ==", "optional": true, "requires": { "commander": "~2.20.0", "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "optional": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", diff --git a/packages/istanbul-reports/package.json b/packages/istanbul-reports/package.json index 7e9f0f62..d25e1a4c 100644 --- a/packages/istanbul-reports/package.json +++ b/packages/istanbul-reports/package.json @@ -9,14 +9,26 @@ "lib" ], "scripts": { - "test": "mocha --recursive" + "test": "mocha --recursive", + "prepare": "rollup --config lib/html-spa/rollup.config.js" }, "dependencies": { "handlebars": "^4.1.2" }, "devDependencies": { "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-report": "^2.0.8" + "istanbul-lib-report": "^2.0.8", + "@babel/core": "7.4.0", + "@babel/preset-env": "7.4.2", + "@babel/preset-react": "7.0.0", + "react": "16.8.6", + "react-dom": "16.8.6", + "rollup": "1.8.0", + "rollup-plugin-babel": "4.3.2", + "rollup-plugin-commonjs": "9.2.3", + "rollup-plugin-node-resolve": "4.0.1", + "rollup-plugin-replace": "2.1.1", + "rollup-plugin-terser": "4.0.4" }, "license": "BSD-3-Clause", "repository": { diff --git a/packages/istanbul-reports/test/fixtures/specs/100-line-100-branch.json b/packages/istanbul-reports/test/fixtures/specs/100-line-100-branch.json index bb748986..21a0236a 100644 --- a/packages/istanbul-reports/test/fixtures/specs/100-line-100-branch.json +++ b/packages/istanbul-reports/test/fixtures/specs/100-line-100-branch.json @@ -1,1527 +1,1542 @@ { - "title": "handles 100% branch and line coverage", - "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n\u001b[32;1mAll files\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m \u001b[0m |\n\u001b[32;1m index.js\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m \u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", - "map": { - "/Users/benjamincoe/oss/test-exclude/index.js": { - "path": "/Users/benjamincoe/oss/test-exclude/index.js", - "statementMap": { - "0": { - "start": { - "line": 1, - "column": 15 - }, - "end": { - "line": 1, - "column": 39 - } - }, - "1": { - "start": { - "line": 2, - "column": 15 - }, - "end": { - "line": 2, - "column": 32 - } - }, - "2": { - "start": { - "line": 3, - "column": 19 - }, - "end": { - "line": 3, - "column": 40 - } - }, - "3": { - "start": { - "line": 4, - "column": 13 - }, - "end": { - "line": 4, - "column": 28 - } - }, - "4": { - "start": { - "line": 5, - "column": 18 - }, - "end": { - "line": 5, - "column": 40 - } - }, - "5": { - "start": { - "line": 13, - "column": 2 - }, - "end": { - "line": 19, - "column": 10 - } - }, - "6": { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 69 - } - }, - "7": { - "start": { - "line": 21, - "column": 40 - }, - "end": { - "line": 21, - "column": 69 - } - }, - "8": { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "9": { - "start": { - "line": 22, - "column": 40 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "10": { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - "11": { - "start": { - "line": 25, - "column": 4 - }, - "end": { - "line": 25, - "column": 63 - } - }, - "12": { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - "13": { - "start": { - "line": 29, - "column": 4 - }, - "end": { - "line": 29, - "column": 44 - } - }, - "14": { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - "15": { - "start": { - "line": 33, - "column": 4 - }, - "end": { - "line": 33, - "column": 57 - } - }, - "16": { - "start": { - "line": 35, - "column": 4 - }, - "end": { - "line": 35, - "column": 24 - } - }, - "17": { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - "18": { - "start": { - "line": 39, - "column": 4 - }, - "end": { - "line": 39, - "column": 43 - } - }, - "19": { - "start": { - "line": 42, - "column": 2 - }, - "end": { - "line": 44, - "column": 3 - } - }, - "20": { - "start": { - "line": 50, - "column": 0 - }, - "end": { - "line": 59, - "column": 1 - } - }, - "21": { - "start": { - "line": 51, - "column": 29 - }, - "end": { - "line": 51, - "column": 34 - } - }, - "22": { - "start": { - "line": 52, - "column": 2 - }, - "end": { - "line": 57, - "column": 4 - } - }, - "23": { - "start": { - "line": 53, - "column": 18 - }, - "end": { - "line": 54, - "column": 71 - } - }, - "24": { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "25": { - "start": { - "line": 55, - "column": 17 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "26": { - "start": { - "line": 56, - "column": 4 - }, - "end": { - "line": 56, - "column": 19 - } - }, - "27": { - "start": { - "line": 58, - "column": 2 - }, - "end": { - "line": 58, - "column": 29 - } - }, - "28": { - "start": { - "line": 61, - "column": 0 - }, - "end": { - "line": 69, - "column": 1 - } - }, - "29": { - "start": { - "line": 62, - "column": 2 - }, - "end": { - "line": 62, - "column": 56 - } - }, - "30": { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "31": { - "start": { - "line": 65, - "column": 55 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "32": { - "start": { - "line": 67, - "column": 2 - }, - "end": { - "line": 67, - "column": 43 - } - }, - "33": { - "start": { - "line": 68, - "column": 2 - }, - "end": { - "line": 68, - "column": 143 - } - }, - "34": { - "start": { - "line": 71, - "column": 0 - }, - "end": { - "line": 82, - "column": 1 - } - }, - "35": { - "start": { - "line": 72, - "column": 14 - }, - "end": { - "line": 74, - "column": 4 - } - }, - "36": { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - "37": { - "start": { - "line": 77, - "column": 4 - }, - "end": { - "line": 77, - "column": 27 - } - }, - "38": { - "start": { - "line": 78, - "column": 4 - }, - "end": { - "line": 78, - "column": 23 - } - }, - "39": { - "start": { - "line": 80, - "column": 4 - }, - "end": { - "line": 80, - "column": 13 - } - }, - "40": { - "start": { - "line": 85, - "column": 2 - }, - "end": { - "line": 97, - "column": 8 - } - }, - "41": { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } - }, - "42": { - "start": { - "line": 88, - "column": 6 - }, - "end": { - "line": 88, - "column": 64 - } - }, - "43": { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } - }, - "44": { - "start": { - "line": 93, - "column": 6 - }, - "end": { - "line": 93, - "column": 60 - } - }, - "45": { - "start": { - "line": 96, - "column": 4 - }, - "end": { - "line": 96, - "column": 33 - } - }, - "46": { - "start": { - "line": 100, - "column": 17 - }, - "end": { - "line": 102, - "column": 1 - } - }, - "47": { - "start": { - "line": 101, - "column": 2 - }, - "end": { - "line": 101, - "column": 30 - } - }, - "48": { - "start": { - "line": 104, - "column": 0 - }, - "end": { - "line": 111, - "column": 1 - } - }, - "49": { - "start": { - "line": 113, - "column": 0 - }, - "end": { - "line": 113, - "column": 27 - } - } - }, - "fnMap": { - "0": { - "name": "TestExclude", - "decl": { - "start": { - "line": 12, - "column": 9 - }, - "end": { - "line": 12, - "column": 20 - } - }, - "loc": { - "start": { - "line": 12, - "column": 28 - }, - "end": { - "line": 45, - "column": 1 - } - }, - "line": 12 - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { - "line": 50, - "column": 51 - }, - "end": { - "line": 50, - "column": 52 - } - }, - "loc": { - "start": { - "line": 50, - "column": 63 - }, - "end": { - "line": 59, - "column": 1 - } - }, - "line": 50 - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { - "line": 52, - "column": 37 - }, - "end": { - "line": 52, - "column": 38 - } - }, - "loc": { - "start": { - "line": 52, - "column": 50 - }, - "end": { - "line": 57, - "column": 3 - } - }, - "line": 52 - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { - "line": 61, - "column": 41 - }, - "end": { - "line": 61, - "column": 42 - } - }, - "loc": { - "start": { - "line": 61, - "column": 70 - }, - "end": { - "line": 69, - "column": 1 - } - }, - "line": 61 - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { - "line": 71, - "column": 32 - }, - "end": { - "line": 71, - "column": 33 - } - }, - "loc": { - "start": { - "line": 71, - "column": 53 - }, - "end": { - "line": 82, - "column": 1 - } - }, - "line": 71 - }, - "5": { - "name": "prepGlobPatterns", - "decl": { - "start": { - "line": 84, - "column": 9 - }, - "end": { - "line": 84, - "column": 25 - } - }, - "loc": { - "start": { - "line": 84, - "column": 37 - }, - "end": { - "line": 98, - "column": 1 - } - }, - "line": 84 - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { - "line": 85, - "column": 25 - }, - "end": { - "line": 85, - "column": 26 - } - }, - "loc": { - "start": { - "line": 85, - "column": 52 - }, - "end": { - "line": 97, - "column": 3 - } - }, - "line": 85 - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { - "line": 100, - "column": 17 - }, - "end": { - "line": 100, - "column": 18 - } - }, - "loc": { - "start": { - "line": 100, - "column": 33 - }, - "end": { - "line": 102, - "column": 1 - } - }, - "line": 100 - } - }, - "branchMap": { - "0": { - "loc": { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 69 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 69 - } - }, - { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 69 - } - } - ], - "line": 21 - }, - "1": { - "loc": { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - } - ], - "line": 22 - }, - "2": { - "loc": { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } + "title": "handles 100% branch and line coverage", + "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n\u001b[32;1mAll files\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m \u001b[0m |\n\u001b[32;1m index.js\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m \u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", + "htmlSpaFiles": ["index.js.html", "index.html"], + "htmlSpaCoverageData": { + "file": "", + "isEmpty": false, + "metrics": { + "statements": { + "total": 50, + "covered": 50, + "skipped": 0, + "pct": 100, + "classForPercent": "high" }, - { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - } - ], - "line": 24 - }, - "3": { - "loc": { - "start": { - "line": 24, - "column": 6 - }, - "end": { - "line": 24, - "column": 54 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 24, - "column": 6 - }, - "end": { - "line": 24, - "column": 19 - } + "branches": { + "total": 39, + "covered": 39, + "skipped": 0, + "pct": 100, + "classForPercent": "high" }, - { - "start": { - "line": 24, - "column": 23 - }, - "end": { - "line": 24, - "column": 36 - } + "functions": { + "total": 8, + "covered": 8, + "skipped": 0, + "pct": 100, + "classForPercent": "high" }, - { - "start": { - "line": 24, - "column": 40 - }, - "end": { - "line": 24, - "column": 54 - } + "lines": { + "total": 46, + "covered": 46, + "skipped": 0, + "pct": 100, + "classForPercent": "high" } - ], - "line": 24 }, - "4": { - "loc": { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, + "children": [ { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } + "file": "index.js", + "isEmpty": false, + "metrics": { + "statements": { + "total": 50, + "covered": 50, + "skipped": 0, + "pct": 100, + "classForPercent": "high" + }, + "branches": { + "total": 39, + "covered": 39, + "skipped": 0, + "pct": 100, + "classForPercent": "high" + }, + "functions": { + "total": 8, + "covered": 8, + "skipped": 0, + "pct": 100, + "classForPercent": "high" + }, + "lines": { + "total": 46, + "covered": 46, + "skipped": 0, + "pct": 100, + "classForPercent": "high" + } + }, + "children": false } - ], - "line": 28 - }, - "5": { - "loc": { - "start": { - "line": 28, - "column": 6 - }, - "end": { - "line": 28, - "column": 51 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 28, - "column": 6 - }, - "end": { - "line": 28, - "column": 19 - } - }, - { - "start": { - "line": 28, - "column": 23 - }, - "end": { - "line": 28, - "column": 51 - } - } - ], - "line": 28 - }, - "6": { - "loc": { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - } - ], - "line": 32 - }, - "7": { - "loc": { - "start": { - "line": 32, - "column": 6 - }, - "end": { - "line": 32, - "column": 45 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 32, - "column": 6 - }, - "end": { - "line": 32, - "column": 18 - } - }, - { - "start": { - "line": 32, - "column": 22 - }, - "end": { - "line": 32, - "column": 45 - } - } - ], - "line": 32 - }, - "8": { - "loc": { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - } - ], - "line": 38 - }, - "9": { - "loc": { - "start": { - "line": 38, - "column": 6 - }, - "end": { - "line": 38, - "column": 93 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 38, - "column": 6 - }, - "end": { - "line": 38, - "column": 40 - } - }, - { - "start": { - "line": 38, - "column": 44 - }, - "end": { - "line": 38, - "column": 93 - } - } - ], - "line": 38 - }, - "10": { - "loc": { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - } - ], - "line": 55 - }, - "11": { - "loc": { - "start": { - "line": 62, - "column": 12 - }, - "end": { - "line": 62, - "column": 56 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 62, - "column": 12 - }, - "end": { - "line": 62, - "column": 19 - } - }, - { - "start": { - "line": 62, - "column": 23 - }, - "end": { - "line": 62, - "column": 56 - } - } - ], - "line": 62 - }, - "12": { - "loc": { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - } - ], - "line": 65 - }, - "13": { - "loc": { - "start": { - "line": 68, - "column": 9 - }, - "end": { - "line": 68, - "column": 143 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 68, - "column": 10 - }, - "end": { - "line": 68, - "column": 23 - } - }, - { - "start": { - "line": 68, - "column": 27 - }, - "end": { - "line": 68, - "column": 82 - } - }, - { - "start": { - "line": 68, - "column": 87 - }, - "end": { - "line": 68, - "column": 143 - } - } - ], - "line": 68 - }, - "14": { - "loc": { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - } - ], - "line": 76 - }, - "15": { - "loc": { - "start": { - "line": 76, - "column": 6 - }, - "end": { - "line": 76, - "column": 65 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 76, - "column": 6 - }, - "end": { - "line": 76, - "column": 13 - } + ] + }, + "map": { + "/Users/benjamincoe/oss/test-exclude/index.js": { + "path": "/Users/benjamincoe/oss/test-exclude/index.js", + "statementMap": { + "0": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 39 + } + }, + "1": { + "start": { + "line": 2, + "column": 15 + }, + "end": { + "line": 2, + "column": 32 + } + }, + "2": { + "start": { + "line": 3, + "column": 19 + }, + "end": { + "line": 3, + "column": 40 + } + }, + "3": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 28 + } + }, + "4": { + "start": { + "line": 5, + "column": 18 + }, + "end": { + "line": 5, + "column": 40 + } + }, + "5": { + "start": { + "line": 13, + "column": 2 + }, + "end": { + "line": 19, + "column": 10 + } + }, + "6": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 69 + } + }, + "7": { + "start": { + "line": 21, + "column": 40 + }, + "end": { + "line": 21, + "column": 69 + } + }, + "8": { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "9": { + "start": { + "line": 22, + "column": 40 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "10": { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + "11": { + "start": { + "line": 25, + "column": 4 + }, + "end": { + "line": 25, + "column": 63 + } + }, + "12": { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + "13": { + "start": { + "line": 29, + "column": 4 + }, + "end": { + "line": 29, + "column": 44 + } + }, + "14": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + "15": { + "start": { + "line": 33, + "column": 4 + }, + "end": { + "line": 33, + "column": 57 + } + }, + "16": { + "start": { + "line": 35, + "column": 4 + }, + "end": { + "line": 35, + "column": 24 + } + }, + "17": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + "18": { + "start": { + "line": 39, + "column": 4 + }, + "end": { + "line": 39, + "column": 43 + } + }, + "19": { + "start": { + "line": 42, + "column": 2 + }, + "end": { + "line": 44, + "column": 3 + } + }, + "20": { + "start": { + "line": 50, + "column": 0 + }, + "end": { + "line": 59, + "column": 1 + } + }, + "21": { + "start": { + "line": 51, + "column": 29 + }, + "end": { + "line": 51, + "column": 34 + } + }, + "22": { + "start": { + "line": 52, + "column": 2 + }, + "end": { + "line": 57, + "column": 4 + } + }, + "23": { + "start": { + "line": 53, + "column": 18 + }, + "end": { + "line": 54, + "column": 71 + } + }, + "24": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "25": { + "start": { + "line": 55, + "column": 17 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "26": { + "start": { + "line": 56, + "column": 4 + }, + "end": { + "line": 56, + "column": 19 + } + }, + "27": { + "start": { + "line": 58, + "column": 2 + }, + "end": { + "line": 58, + "column": 29 + } + }, + "28": { + "start": { + "line": 61, + "column": 0 + }, + "end": { + "line": 69, + "column": 1 + } + }, + "29": { + "start": { + "line": 62, + "column": 2 + }, + "end": { + "line": 62, + "column": 56 + } + }, + "30": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "31": { + "start": { + "line": 65, + "column": 55 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "32": { + "start": { + "line": 67, + "column": 2 + }, + "end": { + "line": 67, + "column": 43 + } + }, + "33": { + "start": { + "line": 68, + "column": 2 + }, + "end": { + "line": 68, + "column": 143 + } + }, + "34": { + "start": { + "line": 71, + "column": 0 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "35": { + "start": { + "line": 72, + "column": 14 + }, + "end": { + "line": 74, + "column": 4 + } + }, + "36": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + "37": { + "start": { + "line": 77, + "column": 4 + }, + "end": { + "line": 77, + "column": 27 + } + }, + "38": { + "start": { + "line": 78, + "column": 4 + }, + "end": { + "line": 78, + "column": 23 + } + }, + "39": { + "start": { + "line": 80, + "column": 4 + }, + "end": { + "line": 80, + "column": 13 + } + }, + "40": { + "start": { + "line": 85, + "column": 2 + }, + "end": { + "line": 97, + "column": 8 + } + }, + "41": { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + "42": { + "start": { + "line": 88, + "column": 6 + }, + "end": { + "line": 88, + "column": 64 + } + }, + "43": { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + "44": { + "start": { + "line": 93, + "column": 6 + }, + "end": { + "line": 93, + "column": 60 + } + }, + "45": { + "start": { + "line": 96, + "column": 4 + }, + "end": { + "line": 96, + "column": 33 + } + }, + "46": { + "start": { + "line": 100, + "column": 17 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "47": { + "start": { + "line": 101, + "column": 2 + }, + "end": { + "line": 101, + "column": 30 + } + }, + "48": { + "start": { + "line": 104, + "column": 0 + }, + "end": { + "line": 111, + "column": 1 + } + }, + "49": { + "start": { + "line": 113, + "column": 0 + }, + "end": { + "line": 113, + "column": 27 + } + } }, - { - "start": { - "line": 76, - "column": 17 - }, - "end": { - "line": 76, - "column": 29 - } + "fnMap": { + "0": { + "name": "TestExclude", + "decl": { + "start": { + "line": 12, + "column": 9 + }, + "end": { + "line": 12, + "column": 20 + } + }, + "loc": { + "start": { + "line": 12, + "column": 28 + }, + "end": { + "line": 45, + "column": 1 + } + }, + "line": 12 + }, + "1": { + "name": "(anonymous_1)", + "decl": { + "start": { + "line": 50, + "column": 51 + }, + "end": { + "line": 50, + "column": 52 + } + }, + "loc": { + "start": { + "line": 50, + "column": 63 + }, + "end": { + "line": 59, + "column": 1 + } + }, + "line": 50 + }, + "2": { + "name": "(anonymous_2)", + "decl": { + "start": { + "line": 52, + "column": 37 + }, + "end": { + "line": 52, + "column": 38 + } + }, + "loc": { + "start": { + "line": 52, + "column": 50 + }, + "end": { + "line": 57, + "column": 3 + } + }, + "line": 52 + }, + "3": { + "name": "(anonymous_3)", + "decl": { + "start": { + "line": 61, + "column": 41 + }, + "end": { + "line": 61, + "column": 42 + } + }, + "loc": { + "start": { + "line": 61, + "column": 70 + }, + "end": { + "line": 69, + "column": 1 + } + }, + "line": 61 + }, + "4": { + "name": "(anonymous_4)", + "decl": { + "start": { + "line": 71, + "column": 32 + }, + "end": { + "line": 71, + "column": 33 + } + }, + "loc": { + "start": { + "line": 71, + "column": 53 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "line": 71 + }, + "5": { + "name": "prepGlobPatterns", + "decl": { + "start": { + "line": 84, + "column": 9 + }, + "end": { + "line": 84, + "column": 25 + } + }, + "loc": { + "start": { + "line": 84, + "column": 37 + }, + "end": { + "line": 98, + "column": 1 + } + }, + "line": 84 + }, + "6": { + "name": "(anonymous_6)", + "decl": { + "start": { + "line": 85, + "column": 25 + }, + "end": { + "line": 85, + "column": 26 + } + }, + "loc": { + "start": { + "line": 85, + "column": 52 + }, + "end": { + "line": 97, + "column": 3 + } + }, + "line": 85 + }, + "7": { + "name": "(anonymous_7)", + "decl": { + "start": { + "line": 100, + "column": 17 + }, + "end": { + "line": 100, + "column": 18 + } + }, + "loc": { + "start": { + "line": 100, + "column": 33 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "line": 100 + } }, - { - "start": { - "line": 76, - "column": 33 - }, - "end": { - "line": 76, - "column": 65 - } - } - ], - "line": 76 - }, - "16": { - "loc": { - "start": { - "line": 87, - "column": 4 + "branchMap": { + "0": { + "loc": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 69 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 69 + } + }, + { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 69 + } + } + ], + "line": 21 + }, + "1": { + "loc": { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + } + ], + "line": 22 + }, + "2": { + "loc": { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + } + ], + "line": 24 + }, + "3": { + "loc": { + "start": { + "line": 24, + "column": 6 + }, + "end": { + "line": 24, + "column": 54 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 24, + "column": 6 + }, + "end": { + "line": 24, + "column": 19 + } + }, + { + "start": { + "line": 24, + "column": 23 + }, + "end": { + "line": 24, + "column": 36 + } + }, + { + "start": { + "line": 24, + "column": 40 + }, + "end": { + "line": 24, + "column": 54 + } + } + ], + "line": 24 + }, + "4": { + "loc": { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + } + ], + "line": 28 + }, + "5": { + "loc": { + "start": { + "line": 28, + "column": 6 + }, + "end": { + "line": 28, + "column": 51 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 28, + "column": 6 + }, + "end": { + "line": 28, + "column": 19 + } + }, + { + "start": { + "line": 28, + "column": 23 + }, + "end": { + "line": 28, + "column": 51 + } + } + ], + "line": 28 + }, + "6": { + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + } + ], + "line": 32 + }, + "7": { + "loc": { + "start": { + "line": 32, + "column": 6 + }, + "end": { + "line": 32, + "column": 45 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 32, + "column": 6 + }, + "end": { + "line": 32, + "column": 18 + } + }, + { + "start": { + "line": 32, + "column": 22 + }, + "end": { + "line": 32, + "column": 45 + } + } + ], + "line": 32 + }, + "8": { + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + } + ], + "line": 38 + }, + "9": { + "loc": { + "start": { + "line": 38, + "column": 6 + }, + "end": { + "line": 38, + "column": 93 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 38, + "column": 6 + }, + "end": { + "line": 38, + "column": 40 + } + }, + { + "start": { + "line": 38, + "column": 44 + }, + "end": { + "line": 38, + "column": 93 + } + } + ], + "line": 38 + }, + "10": { + "loc": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + } + ], + "line": 55 + }, + "11": { + "loc": { + "start": { + "line": 62, + "column": 12 + }, + "end": { + "line": 62, + "column": 56 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 62, + "column": 12 + }, + "end": { + "line": 62, + "column": 19 + } + }, + { + "start": { + "line": 62, + "column": 23 + }, + "end": { + "line": 62, + "column": 56 + } + } + ], + "line": 62 + }, + "12": { + "loc": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + } + ], + "line": 65 + }, + "13": { + "loc": { + "start": { + "line": 68, + "column": 9 + }, + "end": { + "line": 68, + "column": 143 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 68, + "column": 10 + }, + "end": { + "line": 68, + "column": 23 + } + }, + { + "start": { + "line": 68, + "column": 27 + }, + "end": { + "line": 68, + "column": 82 + } + }, + { + "start": { + "line": 68, + "column": 87 + }, + "end": { + "line": 68, + "column": 143 + } + } + ], + "line": 68 + }, + "14": { + "loc": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + } + ], + "line": 76 + }, + "15": { + "loc": { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 65 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 13 + } + }, + { + "start": { + "line": 76, + "column": 17 + }, + "end": { + "line": 76, + "column": 29 + } + }, + { + "start": { + "line": 76, + "column": 33 + }, + "end": { + "line": 76, + "column": 65 + } + } + ], + "line": 76 + }, + "16": { + "loc": { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + } + ], + "line": 87 + }, + "17": { + "loc": { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + } + ], + "line": 92 + } }, - "end": { - "line": 89, - "column": 5 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } + "s": { + "0": 1, + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 21, + "6": 21, + "7": 1, + "8": 21, + "9": 1, + "10": 21, + "11": 7, + "12": 21, + "13": 15, + "14": 21, + "15": 5, + "16": 16, + "17": 21, + "18": 5, + "19": 21, + "20": 1, + "21": 21, + "22": 21, + "23": 95, + "24": 95, + "25": 1, + "26": 95, + "27": 21, + "28": 1, + "29": 56, + "30": 56, + "31": 1, + "32": 55, + "33": 55, + "34": 1, + "35": 7, + "36": 7, + "37": 6, + "38": 6, + "39": 1, + "40": 26, + "41": 105, + "42": 39, + "43": 105, + "44": 50, + "45": 105, + "46": 1, + "47": 21, + "48": 1, + "49": 1 }, - { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } - } - ], - "line": 87 - }, - "17": { - "loc": { - "start": { - "line": 92, - "column": 4 + "f": { + "0": 21, + "1": 21, + "2": 95, + "3": 56, + "4": 7, + "5": 26, + "6": 105, + "7": 21 }, - "end": { - "line": 94, - "column": 5 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } + "b": { + "0": [1, 20], + "1": [1, 20], + "2": [7, 14], + "3": [21, 18, 15], + "4": [15, 6], + "5": [21, 8], + "6": [5, 16], + "7": [21, 5], + "8": [5, 16], + "9": [21, 20], + "10": [1, 94], + "11": [56, 56], + "12": [1, 55], + "13": [55, 15, 50], + "14": [6, 1], + "15": [7, 7, 6], + "16": [39, 66], + "17": [50, 55] }, - { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } - } - ], - "line": 92 + "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", + "hash": "f0eaad492c44d3d23e7443abdfe6e8eee863a9ca", + "contentHash": "1aadbafa9aec3c6d5ff348fb7143ba8e_10.2.0" } - }, - "s": { - "0": 1, - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 21, - "6": 21, - "7": 1, - "8": 21, - "9": 1, - "10": 21, - "11": 7, - "12": 21, - "13": 15, - "14": 21, - "15": 5, - "16": 16, - "17": 21, - "18": 5, - "19": 21, - "20": 1, - "21": 21, - "22": 21, - "23": 95, - "24": 95, - "25": 1, - "26": 95, - "27": 21, - "28": 1, - "29": 56, - "30": 56, - "31": 1, - "32": 55, - "33": 55, - "34": 1, - "35": 7, - "36": 7, - "37": 6, - "38": 6, - "39": 1, - "40": 26, - "41": 105, - "42": 39, - "43": 105, - "44": 50, - "45": 105, - "46": 1, - "47": 21, - "48": 1, - "49": 1 - }, - "f": { - "0": 21, - "1": 21, - "2": 95, - "3": 56, - "4": 7, - "5": 26, - "6": 105, - "7": 21 - }, - "b": { - "0": [ - 1, - 20 - ], - "1": [ - 1, - 20 - ], - "2": [ - 7, - 14 - ], - "3": [ - 21, - 18, - 15 - ], - "4": [ - 15, - 6 - ], - "5": [ - 21, - 8 - ], - "6": [ - 5, - 16 - ], - "7": [ - 21, - 5 - ], - "8": [ - 5, - 16 - ], - "9": [ - 21, - 20 - ], - "10": [ - 1, - 94 - ], - "11": [ - 56, - 56 - ], - "12": [ - 1, - 55 - ], - "13": [ - 55, - 15, - 50 - ], - "14": [ - 6, - 1 - ], - "15": [ - 7, - 7, - 6 - ], - "16": [ - 39, - 66 - ], - "17": [ - 50, - 55 - ] - }, - "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", - "hash": "f0eaad492c44d3d23e7443abdfe6e8eee863a9ca", - "contentHash": "1aadbafa9aec3c6d5ff348fb7143ba8e_10.2.0" } - } } diff --git a/packages/istanbul-reports/test/fixtures/specs/100-line-missing-branch.json b/packages/istanbul-reports/test/fixtures/specs/100-line-missing-branch.json index 9abcf93b..bbd891a9 100644 --- a/packages/istanbul-reports/test/fixtures/specs/100-line-missing-branch.json +++ b/packages/istanbul-reports/test/fixtures/specs/100-line-missing-branch.json @@ -1,1607 +1,1616 @@ { - "title": "100% line coverage, missing branch coverage", - "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n\u001b[32;1mAll files\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m \u001b[0m |\n\u001b[32;1m index.js\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m 21,29\u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", - "map": { - "/Users/benjamincoe/oss/test-exclude/index.js": { - "path": "/Users/benjamincoe/oss/test-exclude/index.js", - "statementMap": { - "0": { - "start": { - "line": 1, - "column": 15 - }, - "end": { - "line": 1, - "column": 39 - } - }, - "1": { - "start": { - "line": 2, - "column": 15 - }, - "end": { - "line": 2, - "column": 32 - } - }, - "2": { - "start": { - "line": 3, - "column": 19 - }, - "end": { - "line": 3, - "column": 40 - } - }, - "3": { - "start": { - "line": 4, - "column": 13 - }, - "end": { - "line": 4, - "column": 28 - } - }, - "4": { - "start": { - "line": 5, - "column": 18 - }, - "end": { - "line": 5, - "column": 40 - } - }, - "5": { - "start": { - "line": 13, - "column": 2 - }, - "end": { - "line": 19, - "column": 10 - } - }, - "6": { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "7": { - "start": { - "line": 21, - "column": 40 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "8": { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "9": { - "start": { - "line": 22, - "column": 40 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "10": { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - "11": { - "start": { - "line": 25, - "column": 4 - }, - "end": { - "line": 25, - "column": 63 - } - }, - "12": { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - "13": { - "start": { - "line": 29, - "column": 4 - }, - "end": { - "line": 29, - "column": 54 - } - }, - "14": { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - "15": { - "start": { - "line": 33, - "column": 4 - }, - "end": { - "line": 33, - "column": 57 - } - }, - "16": { - "start": { - "line": 35, - "column": 4 - }, - "end": { - "line": 35, - "column": 24 - } - }, - "17": { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - "18": { - "start": { - "line": 39, - "column": 4 - }, - "end": { - "line": 39, - "column": 43 - } - }, - "19": { - "start": { - "line": 42, - "column": 2 - }, - "end": { - "line": 44, - "column": 3 - } - }, - "20": { - "start": { - "line": 50, - "column": 0 - }, - "end": { - "line": 59, - "column": 1 - } - }, - "21": { - "start": { - "line": 51, - "column": 29 - }, - "end": { - "line": 51, - "column": 34 - } - }, - "22": { - "start": { - "line": 52, - "column": 2 - }, - "end": { - "line": 57, - "column": 4 - } - }, - "23": { - "start": { - "line": 53, - "column": 18 - }, - "end": { - "line": 54, - "column": 71 - } - }, - "24": { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "25": { - "start": { - "line": 55, - "column": 17 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "26": { - "start": { - "line": 56, - "column": 4 - }, - "end": { - "line": 56, - "column": 19 - } - }, - "27": { - "start": { - "line": 58, - "column": 2 - }, - "end": { - "line": 58, - "column": 29 - } - }, - "28": { - "start": { - "line": 61, - "column": 0 - }, - "end": { - "line": 69, - "column": 1 - } - }, - "29": { - "start": { - "line": 62, - "column": 2 - }, - "end": { - "line": 62, - "column": 56 - } - }, - "30": { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "31": { - "start": { - "line": 65, - "column": 55 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "32": { - "start": { - "line": 67, - "column": 2 - }, - "end": { - "line": 67, - "column": 43 - } - }, - "33": { - "start": { - "line": 68, - "column": 2 - }, - "end": { - "line": 68, - "column": 143 - } - }, - "34": { - "start": { - "line": 71, - "column": 0 - }, - "end": { - "line": 82, - "column": 1 - } - }, - "35": { - "start": { - "line": 72, - "column": 14 - }, - "end": { - "line": 74, - "column": 4 - } - }, - "36": { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - "37": { - "start": { - "line": 77, - "column": 4 - }, - "end": { - "line": 77, - "column": 27 - } - }, - "38": { - "start": { - "line": 78, - "column": 4 - }, - "end": { - "line": 78, - "column": 23 - } - }, - "39": { - "start": { - "line": 80, - "column": 4 - }, - "end": { - "line": 80, - "column": 13 - } - }, - "40": { - "start": { - "line": 85, - "column": 2 - }, - "end": { - "line": 97, - "column": 8 - } - }, - "41": { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } - }, - "42": { - "start": { - "line": 88, - "column": 6 - }, - "end": { - "line": 88, - "column": 64 - } - }, - "43": { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } - }, - "44": { - "start": { - "line": 93, - "column": 6 - }, - "end": { - "line": 93, - "column": 60 - } - }, - "45": { - "start": { - "line": 96, - "column": 4 - }, - "end": { - "line": 96, - "column": 33 - } - }, - "46": { - "start": { - "line": 100, - "column": 17 - }, - "end": { - "line": 102, - "column": 1 - } - }, - "47": { - "start": { - "line": 101, - "column": 2 - }, - "end": { - "line": 101, - "column": 30 - } - }, - "48": { - "start": { - "line": 104, - "column": 0 - }, - "end": { - "line": 111, - "column": 1 - } - }, - "49": { - "start": { - "line": 113, - "column": 0 - }, - "end": { - "line": 113, - "column": 27 - } - } - }, - "fnMap": { - "0": { - "name": "TestExclude", - "decl": { - "start": { - "line": 12, - "column": 9 - }, - "end": { - "line": 12, - "column": 20 - } - }, - "loc": { - "start": { - "line": 12, - "column": 28 - }, - "end": { - "line": 45, - "column": 1 - } - }, - "line": 12 - }, - "1": { - "name": "(anonymous_1)", - "decl": { - "start": { - "line": 50, - "column": 51 - }, - "end": { - "line": 50, - "column": 52 - } - }, - "loc": { - "start": { - "line": 50, - "column": 63 - }, - "end": { - "line": 59, - "column": 1 - } - }, - "line": 50 - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { - "line": 52, - "column": 37 - }, - "end": { - "line": 52, - "column": 38 - } - }, - "loc": { - "start": { - "line": 52, - "column": 50 - }, - "end": { - "line": 57, - "column": 3 - } - }, - "line": 52 - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { - "line": 61, - "column": 41 - }, - "end": { - "line": 61, - "column": 42 - } - }, - "loc": { - "start": { - "line": 61, - "column": 70 - }, - "end": { - "line": 69, - "column": 1 - } - }, - "line": 61 - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { - "line": 71, - "column": 32 - }, - "end": { - "line": 71, - "column": 33 - } - }, - "loc": { - "start": { - "line": 71, - "column": 53 - }, - "end": { - "line": 82, - "column": 1 - } - }, - "line": 71 - }, - "5": { - "name": "prepGlobPatterns", - "decl": { - "start": { - "line": 84, - "column": 9 - }, - "end": { - "line": 84, - "column": 25 - } - }, - "loc": { - "start": { - "line": 84, - "column": 37 - }, - "end": { - "line": 98, - "column": 1 - } - }, - "line": 84 - }, - "6": { - "name": "(anonymous_6)", - "decl": { - "start": { - "line": 85, - "column": 25 - }, - "end": { - "line": 85, - "column": 26 - } - }, - "loc": { - "start": { - "line": 85, - "column": 52 - }, - "end": { - "line": 97, - "column": 3 - } - }, - "line": 85 - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { - "line": 100, - "column": 17 - }, - "end": { - "line": 100, - "column": 18 - } - }, - "loc": { - "start": { - "line": 100, - "column": 33 - }, - "end": { - "line": 102, - "column": 1 - } - }, - "line": 100 - } - }, - "branchMap": { - "0": { - "loc": { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - }, - { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - } - ], - "line": 21 - }, - "1": { - "loc": { - "start": { - "line": 21, - "column": 55 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 21, - "column": 55 - }, - "end": { - "line": 21, - "column": 69 - } - }, - { - "start": { - "line": 21, - "column": 73 - }, - "end": { - "line": 21, - "column": 81 - } - } - ], - "line": 21 - }, - "2": { - "loc": { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - } - ], - "line": 22 - }, - "3": { - "loc": { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - } - ], - "line": 24 - }, - "4": { - "loc": { - "start": { - "line": 24, - "column": 6 - }, - "end": { - "line": 24, - "column": 54 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 24, - "column": 6 - }, - "end": { - "line": 24, - "column": 19 - } - }, - { - "start": { - "line": 24, - "column": 23 - }, - "end": { - "line": 24, - "column": 36 - } - }, - { - "start": { - "line": 24, - "column": 40 - }, - "end": { - "line": 24, - "column": 54 - } - } - ], - "line": 24 - }, - "5": { - "loc": { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - } - ], - "line": 28 - }, - "6": { - "loc": { - "start": { - "line": 28, - "column": 6 - }, - "end": { - "line": 28, - "column": 51 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 28, - "column": 6 - }, - "end": { - "line": 28, - "column": 19 - } - }, - { - "start": { - "line": 28, - "column": 23 - }, - "end": { - "line": 28, - "column": 51 - } - } - ], - "line": 28 - }, - "7": { - "loc": { - "start": { - "line": 29, - "column": 19 - }, - "end": { - "line": 29, - "column": 54 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 29, - "column": 19 - }, - "end": { - "line": 29, - "column": 44 - } - }, - { - "start": { - "line": 29, - "column": 48 - }, - "end": { - "line": 29, - "column": 54 - } - } - ], - "line": 29 - }, - "8": { - "loc": { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - } - ], - "line": 32 - }, - "9": { - "loc": { - "start": { - "line": 32, - "column": 6 - }, - "end": { - "line": 32, - "column": 45 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 32, - "column": 6 - }, - "end": { - "line": 32, - "column": 18 - } - }, - { - "start": { - "line": 32, - "column": 22 - }, - "end": { - "line": 32, - "column": 45 - } - } - ], - "line": 32 - }, - "10": { - "loc": { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - } - ], - "line": 38 - }, - "11": { - "loc": { - "start": { - "line": 38, - "column": 6 - }, - "end": { - "line": 38, - "column": 93 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 38, - "column": 6 - }, - "end": { - "line": 38, - "column": 40 - } - }, - { - "start": { - "line": 38, - "column": 44 - }, - "end": { - "line": 38, - "column": 93 - } - } - ], - "line": 38 - }, - "12": { - "loc": { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - } - ], - "line": 55 - }, - "13": { - "loc": { - "start": { - "line": 62, - "column": 12 - }, - "end": { - "line": 62, - "column": 56 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 62, - "column": 12 - }, - "end": { - "line": 62, - "column": 19 - } - }, - { - "start": { - "line": 62, - "column": 23 - }, - "end": { - "line": 62, - "column": 56 - } - } - ], - "line": 62 - }, - "14": { - "loc": { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - } - ], - "line": 65 - }, - "15": { - "loc": { - "start": { - "line": 68, - "column": 9 + "title": "100% line coverage, missing branch coverage", + "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n\u001b[32;1mAll files\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m \u001b[0m |\n\u001b[32;1m index.js\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[32;1m 100\u001b[0m |\u001b[33;1m 21,29\u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", + "htmlSpaFiles": ["index.js.html", "index.html"], + "htmlSpaCoverageData": { + "file": "", + "isEmpty": false, + "metrics": { + "statements": { + "total": 50, + "covered": 50, + "skipped": 0, + "pct": 100, + "classForPercent": "high" }, - "end": { - "line": 68, - "column": 143 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 68, - "column": 10 - }, - "end": { - "line": 68, - "column": 23 - } + "branches": { + "total": 43, + "covered": 41, + "skipped": 0, + "pct": 95.35, + "classForPercent": "high" }, - { - "start": { - "line": 68, - "column": 27 - }, - "end": { - "line": 68, - "column": 82 - } + "functions": { + "total": 8, + "covered": 8, + "skipped": 0, + "pct": 100, + "classForPercent": "high" }, - { - "start": { - "line": 68, - "column": 87 - }, - "end": { - "line": 68, - "column": 143 - } + "lines": { + "total": 46, + "covered": 46, + "skipped": 0, + "pct": 100, + "classForPercent": "high" } - ], - "line": 68 }, - "16": { - "loc": { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - "type": "if", - "locations": [ + "children": [ { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } + "file": "index.js", + "isEmpty": false, + "metrics": { + "statements": { + "total": 50, + "covered": 50, + "skipped": 0, + "pct": 100, + "classForPercent": "high" + }, + "branches": { + "total": 43, + "covered": 41, + "skipped": 0, + "pct": 95.35, + "classForPercent": "high" + }, + "functions": { + "total": 8, + "covered": 8, + "skipped": 0, + "pct": 100, + "classForPercent": "high" + }, + "lines": { + "total": 46, + "covered": 46, + "skipped": 0, + "pct": 100, + "classForPercent": "high" + } + }, + "children": false } - ], - "line": 76 - }, - "17": { - "loc": { - "start": { - "line": 76, - "column": 6 - }, - "end": { - "line": 76, - "column": 65 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 76, - "column": 6 - }, - "end": { - "line": 76, - "column": 13 - } + ] + }, + "map": { + "/Users/benjamincoe/oss/test-exclude/index.js": { + "path": "/Users/benjamincoe/oss/test-exclude/index.js", + "statementMap": { + "0": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 39 + } + }, + "1": { + "start": { + "line": 2, + "column": 15 + }, + "end": { + "line": 2, + "column": 32 + } + }, + "2": { + "start": { + "line": 3, + "column": 19 + }, + "end": { + "line": 3, + "column": 40 + } + }, + "3": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 28 + } + }, + "4": { + "start": { + "line": 5, + "column": 18 + }, + "end": { + "line": 5, + "column": 40 + } + }, + "5": { + "start": { + "line": 13, + "column": 2 + }, + "end": { + "line": 19, + "column": 10 + } + }, + "6": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "7": { + "start": { + "line": 21, + "column": 40 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "8": { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "9": { + "start": { + "line": 22, + "column": 40 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "10": { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + "11": { + "start": { + "line": 25, + "column": 4 + }, + "end": { + "line": 25, + "column": 63 + } + }, + "12": { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + "13": { + "start": { + "line": 29, + "column": 4 + }, + "end": { + "line": 29, + "column": 54 + } + }, + "14": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + "15": { + "start": { + "line": 33, + "column": 4 + }, + "end": { + "line": 33, + "column": 57 + } + }, + "16": { + "start": { + "line": 35, + "column": 4 + }, + "end": { + "line": 35, + "column": 24 + } + }, + "17": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + "18": { + "start": { + "line": 39, + "column": 4 + }, + "end": { + "line": 39, + "column": 43 + } + }, + "19": { + "start": { + "line": 42, + "column": 2 + }, + "end": { + "line": 44, + "column": 3 + } + }, + "20": { + "start": { + "line": 50, + "column": 0 + }, + "end": { + "line": 59, + "column": 1 + } + }, + "21": { + "start": { + "line": 51, + "column": 29 + }, + "end": { + "line": 51, + "column": 34 + } + }, + "22": { + "start": { + "line": 52, + "column": 2 + }, + "end": { + "line": 57, + "column": 4 + } + }, + "23": { + "start": { + "line": 53, + "column": 18 + }, + "end": { + "line": 54, + "column": 71 + } + }, + "24": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "25": { + "start": { + "line": 55, + "column": 17 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "26": { + "start": { + "line": 56, + "column": 4 + }, + "end": { + "line": 56, + "column": 19 + } + }, + "27": { + "start": { + "line": 58, + "column": 2 + }, + "end": { + "line": 58, + "column": 29 + } + }, + "28": { + "start": { + "line": 61, + "column": 0 + }, + "end": { + "line": 69, + "column": 1 + } + }, + "29": { + "start": { + "line": 62, + "column": 2 + }, + "end": { + "line": 62, + "column": 56 + } + }, + "30": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "31": { + "start": { + "line": 65, + "column": 55 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "32": { + "start": { + "line": 67, + "column": 2 + }, + "end": { + "line": 67, + "column": 43 + } + }, + "33": { + "start": { + "line": 68, + "column": 2 + }, + "end": { + "line": 68, + "column": 143 + } + }, + "34": { + "start": { + "line": 71, + "column": 0 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "35": { + "start": { + "line": 72, + "column": 14 + }, + "end": { + "line": 74, + "column": 4 + } + }, + "36": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + "37": { + "start": { + "line": 77, + "column": 4 + }, + "end": { + "line": 77, + "column": 27 + } + }, + "38": { + "start": { + "line": 78, + "column": 4 + }, + "end": { + "line": 78, + "column": 23 + } + }, + "39": { + "start": { + "line": 80, + "column": 4 + }, + "end": { + "line": 80, + "column": 13 + } + }, + "40": { + "start": { + "line": 85, + "column": 2 + }, + "end": { + "line": 97, + "column": 8 + } + }, + "41": { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + "42": { + "start": { + "line": 88, + "column": 6 + }, + "end": { + "line": 88, + "column": 64 + } + }, + "43": { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + "44": { + "start": { + "line": 93, + "column": 6 + }, + "end": { + "line": 93, + "column": 60 + } + }, + "45": { + "start": { + "line": 96, + "column": 4 + }, + "end": { + "line": 96, + "column": 33 + } + }, + "46": { + "start": { + "line": 100, + "column": 17 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "47": { + "start": { + "line": 101, + "column": 2 + }, + "end": { + "line": 101, + "column": 30 + } + }, + "48": { + "start": { + "line": 104, + "column": 0 + }, + "end": { + "line": 111, + "column": 1 + } + }, + "49": { + "start": { + "line": 113, + "column": 0 + }, + "end": { + "line": 113, + "column": 27 + } + } }, - { - "start": { - "line": 76, - "column": 17 - }, - "end": { - "line": 76, - "column": 29 - } + "fnMap": { + "0": { + "name": "TestExclude", + "decl": { + "start": { + "line": 12, + "column": 9 + }, + "end": { + "line": 12, + "column": 20 + } + }, + "loc": { + "start": { + "line": 12, + "column": 28 + }, + "end": { + "line": 45, + "column": 1 + } + }, + "line": 12 + }, + "1": { + "name": "(anonymous_1)", + "decl": { + "start": { + "line": 50, + "column": 51 + }, + "end": { + "line": 50, + "column": 52 + } + }, + "loc": { + "start": { + "line": 50, + "column": 63 + }, + "end": { + "line": 59, + "column": 1 + } + }, + "line": 50 + }, + "2": { + "name": "(anonymous_2)", + "decl": { + "start": { + "line": 52, + "column": 37 + }, + "end": { + "line": 52, + "column": 38 + } + }, + "loc": { + "start": { + "line": 52, + "column": 50 + }, + "end": { + "line": 57, + "column": 3 + } + }, + "line": 52 + }, + "3": { + "name": "(anonymous_3)", + "decl": { + "start": { + "line": 61, + "column": 41 + }, + "end": { + "line": 61, + "column": 42 + } + }, + "loc": { + "start": { + "line": 61, + "column": 70 + }, + "end": { + "line": 69, + "column": 1 + } + }, + "line": 61 + }, + "4": { + "name": "(anonymous_4)", + "decl": { + "start": { + "line": 71, + "column": 32 + }, + "end": { + "line": 71, + "column": 33 + } + }, + "loc": { + "start": { + "line": 71, + "column": 53 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "line": 71 + }, + "5": { + "name": "prepGlobPatterns", + "decl": { + "start": { + "line": 84, + "column": 9 + }, + "end": { + "line": 84, + "column": 25 + } + }, + "loc": { + "start": { + "line": 84, + "column": 37 + }, + "end": { + "line": 98, + "column": 1 + } + }, + "line": 84 + }, + "6": { + "name": "(anonymous_6)", + "decl": { + "start": { + "line": 85, + "column": 25 + }, + "end": { + "line": 85, + "column": 26 + } + }, + "loc": { + "start": { + "line": 85, + "column": 52 + }, + "end": { + "line": 97, + "column": 3 + } + }, + "line": 85 + }, + "7": { + "name": "(anonymous_7)", + "decl": { + "start": { + "line": 100, + "column": 17 + }, + "end": { + "line": 100, + "column": 18 + } + }, + "loc": { + "start": { + "line": 100, + "column": 33 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "line": 100 + } }, - { - "start": { - "line": 76, - "column": 33 - }, - "end": { - "line": 76, - "column": 65 - } - } - ], - "line": 76 - }, - "18": { - "loc": { - "start": { - "line": 87, - "column": 4 + "branchMap": { + "0": { + "loc": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + }, + { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + } + ], + "line": 21 + }, + "1": { + "loc": { + "start": { + "line": 21, + "column": 55 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 21, + "column": 55 + }, + "end": { + "line": 21, + "column": 69 + } + }, + { + "start": { + "line": 21, + "column": 73 + }, + "end": { + "line": 21, + "column": 81 + } + } + ], + "line": 21 + }, + "2": { + "loc": { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + } + ], + "line": 22 + }, + "3": { + "loc": { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + } + ], + "line": 24 + }, + "4": { + "loc": { + "start": { + "line": 24, + "column": 6 + }, + "end": { + "line": 24, + "column": 54 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 24, + "column": 6 + }, + "end": { + "line": 24, + "column": 19 + } + }, + { + "start": { + "line": 24, + "column": 23 + }, + "end": { + "line": 24, + "column": 36 + } + }, + { + "start": { + "line": 24, + "column": 40 + }, + "end": { + "line": 24, + "column": 54 + } + } + ], + "line": 24 + }, + "5": { + "loc": { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + } + ], + "line": 28 + }, + "6": { + "loc": { + "start": { + "line": 28, + "column": 6 + }, + "end": { + "line": 28, + "column": 51 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 28, + "column": 6 + }, + "end": { + "line": 28, + "column": 19 + } + }, + { + "start": { + "line": 28, + "column": 23 + }, + "end": { + "line": 28, + "column": 51 + } + } + ], + "line": 28 + }, + "7": { + "loc": { + "start": { + "line": 29, + "column": 19 + }, + "end": { + "line": 29, + "column": 54 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 29, + "column": 19 + }, + "end": { + "line": 29, + "column": 44 + } + }, + { + "start": { + "line": 29, + "column": 48 + }, + "end": { + "line": 29, + "column": 54 + } + } + ], + "line": 29 + }, + "8": { + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + } + ], + "line": 32 + }, + "9": { + "loc": { + "start": { + "line": 32, + "column": 6 + }, + "end": { + "line": 32, + "column": 45 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 32, + "column": 6 + }, + "end": { + "line": 32, + "column": 18 + } + }, + { + "start": { + "line": 32, + "column": 22 + }, + "end": { + "line": 32, + "column": 45 + } + } + ], + "line": 32 + }, + "10": { + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + } + ], + "line": 38 + }, + "11": { + "loc": { + "start": { + "line": 38, + "column": 6 + }, + "end": { + "line": 38, + "column": 93 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 38, + "column": 6 + }, + "end": { + "line": 38, + "column": 40 + } + }, + { + "start": { + "line": 38, + "column": 44 + }, + "end": { + "line": 38, + "column": 93 + } + } + ], + "line": 38 + }, + "12": { + "loc": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + } + ], + "line": 55 + }, + "13": { + "loc": { + "start": { + "line": 62, + "column": 12 + }, + "end": { + "line": 62, + "column": 56 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 62, + "column": 12 + }, + "end": { + "line": 62, + "column": 19 + } + }, + { + "start": { + "line": 62, + "column": 23 + }, + "end": { + "line": 62, + "column": 56 + } + } + ], + "line": 62 + }, + "14": { + "loc": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + } + ], + "line": 65 + }, + "15": { + "loc": { + "start": { + "line": 68, + "column": 9 + }, + "end": { + "line": 68, + "column": 143 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 68, + "column": 10 + }, + "end": { + "line": 68, + "column": 23 + } + }, + { + "start": { + "line": 68, + "column": 27 + }, + "end": { + "line": 68, + "column": 82 + } + }, + { + "start": { + "line": 68, + "column": 87 + }, + "end": { + "line": 68, + "column": 143 + } + } + ], + "line": 68 + }, + "16": { + "loc": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + } + ], + "line": 76 + }, + "17": { + "loc": { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 65 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 13 + } + }, + { + "start": { + "line": 76, + "column": 17 + }, + "end": { + "line": 76, + "column": 29 + } + }, + { + "start": { + "line": 76, + "column": 33 + }, + "end": { + "line": 76, + "column": 65 + } + } + ], + "line": 76 + }, + "18": { + "loc": { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + } + ], + "line": 87 + }, + "19": { + "loc": { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + } + ], + "line": 92 + } }, - "end": { - "line": 89, - "column": 5 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } + "s": { + "0": 1, + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 21, + "6": 21, + "7": 1, + "8": 21, + "9": 1, + "10": 21, + "11": 7, + "12": 21, + "13": 15, + "14": 21, + "15": 5, + "16": 16, + "17": 21, + "18": 5, + "19": 21, + "20": 1, + "21": 21, + "22": 21, + "23": 95, + "24": 95, + "25": 1, + "26": 95, + "27": 21, + "28": 1, + "29": 56, + "30": 56, + "31": 1, + "32": 55, + "33": 55, + "34": 1, + "35": 7, + "36": 7, + "37": 6, + "38": 6, + "39": 1, + "40": 26, + "41": 105, + "42": 39, + "43": 105, + "44": 50, + "45": 105, + "46": 1, + "47": 21, + "48": 1, + "49": 1 }, - { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } - } - ], - "line": 87 - }, - "19": { - "loc": { - "start": { - "line": 92, - "column": 4 + "f": { + "0": 21, + "1": 21, + "2": 95, + "3": 56, + "4": 7, + "5": 26, + "6": 105, + "7": 21 }, - "end": { - "line": 94, - "column": 5 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } + "b": { + "0": [1, 20], + "1": [1, 0], + "2": [1, 20], + "3": [7, 14], + "4": [21, 18, 15], + "5": [15, 6], + "6": [21, 8], + "7": [15, 0], + "8": [5, 16], + "9": [21, 5], + "10": [5, 16], + "11": [21, 20], + "12": [1, 94], + "13": [56, 56], + "14": [1, 55], + "15": [55, 15, 50], + "16": [6, 1], + "17": [7, 7, 6], + "18": [39, 66], + "19": [50, 55] }, - { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } - } - ], - "line": 92 + "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", + "hash": "f56f8d0db960f08dcdda97d0882cfd589e74eae5", + "contentHash": "4437193939a265a773fe2ec1a2d065a3_10.2.0" } - }, - "s": { - "0": 1, - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 21, - "6": 21, - "7": 1, - "8": 21, - "9": 1, - "10": 21, - "11": 7, - "12": 21, - "13": 15, - "14": 21, - "15": 5, - "16": 16, - "17": 21, - "18": 5, - "19": 21, - "20": 1, - "21": 21, - "22": 21, - "23": 95, - "24": 95, - "25": 1, - "26": 95, - "27": 21, - "28": 1, - "29": 56, - "30": 56, - "31": 1, - "32": 55, - "33": 55, - "34": 1, - "35": 7, - "36": 7, - "37": 6, - "38": 6, - "39": 1, - "40": 26, - "41": 105, - "42": 39, - "43": 105, - "44": 50, - "45": 105, - "46": 1, - "47": 21, - "48": 1, - "49": 1 - }, - "f": { - "0": 21, - "1": 21, - "2": 95, - "3": 56, - "4": 7, - "5": 26, - "6": 105, - "7": 21 - }, - "b": { - "0": [ - 1, - 20 - ], - "1": [ - 1, - 0 - ], - "2": [ - 1, - 20 - ], - "3": [ - 7, - 14 - ], - "4": [ - 21, - 18, - 15 - ], - "5": [ - 15, - 6 - ], - "6": [ - 21, - 8 - ], - "7": [ - 15, - 0 - ], - "8": [ - 5, - 16 - ], - "9": [ - 21, - 5 - ], - "10": [ - 5, - 16 - ], - "11": [ - 21, - 20 - ], - "12": [ - 1, - 94 - ], - "13": [ - 56, - 56 - ], - "14": [ - 1, - 55 - ], - "15": [ - 55, - 15, - 50 - ], - "16": [ - 6, - 1 - ], - "17": [ - 7, - 7, - 6 - ], - "18": [ - 39, - 66 - ], - "19": [ - 50, - 55 - ] - }, - "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", - "hash": "f56f8d0db960f08dcdda97d0882cfd589e74eae5", - "contentHash": "4437193939a265a773fe2ec1a2d065a3_10.2.0" } - } } diff --git a/packages/istanbul-reports/test/fixtures/specs/empty-file-skip-empty.json b/packages/istanbul-reports/test/fixtures/specs/empty-file-skip-empty.json index 57e3e2d7..5940e912 100644 --- a/packages/istanbul-reports/test/fixtures/specs/empty-file-skip-empty.json +++ b/packages/istanbul-reports/test/fixtures/specs/empty-file-skip-empty.json @@ -1,18 +1,90 @@ { - "title": "empty file - skip empty", - "opts": { - "skipEmpty": true - }, - "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n----------|----------|----------|----------|----------|-------------------|\n", - "map": { - "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js": { - "path": "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js", - "statementMap": {}, - "fnMap": {}, - "branchMap": {}, - "s": {}, - "f": {}, - "b": {} + "title": "empty file - skip empty", + "opts": { + "skipEmpty": true + }, + "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n----------|----------|----------|----------|----------|-------------------|\n", + "htmlSpaFiles": ["empty.js.html", "index.html"], + "htmlSpaCoverageData": { + "file": "", + "isEmpty": true, + "metrics": { + "statements": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "branches": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "functions": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "lines": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + } + }, + "children": [ + { + "file": "empty.js", + "isEmpty": true, + "metrics": { + "statements": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "branches": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "functions": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "lines": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + } + }, + "children": false + } + ] + }, + "map": { + "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js": { + "path": "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js", + "statementMap": {}, + "fnMap": {}, + "branchMap": {}, + "s": {}, + "f": {}, + "b": {} + } } - } } diff --git a/packages/istanbul-reports/test/fixtures/specs/empty-file.json b/packages/istanbul-reports/test/fixtures/specs/empty-file.json index 7931ec6c..de04fc2b 100644 --- a/packages/istanbul-reports/test/fixtures/specs/empty-file.json +++ b/packages/istanbul-reports/test/fixtures/specs/empty-file.json @@ -1,15 +1,87 @@ { - "title": "empty file - show 0%", - "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\nAll files | 0 | 0 | 0 | 0 |\u001b[31;1m \u001b[0m |\n empty.js | 0 | 0 | 0 | 0 |\u001b[31;1m \u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", - "map": { - "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js": { - "path": "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js", - "statementMap": {}, - "fnMap": {}, - "branchMap": {}, - "s": {}, - "f": {}, - "b": {} + "title": "empty file - show 0%", + "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\nAll files | 0 | 0 | 0 | 0 |\u001b[31;1m \u001b[0m |\n empty.js | 0 | 0 | 0 | 0 |\u001b[31;1m \u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", + "htmlSpaFiles": ["empty.js.html", "index.html"], + "htmlSpaCoverageData": { + "file": "", + "isEmpty": true, + "metrics": { + "statements": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "branches": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "functions": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "lines": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + } + }, + "children": [ + { + "file": "empty.js", + "isEmpty": true, + "metrics": { + "statements": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "branches": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "functions": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + }, + "lines": { + "total": 0, + "covered": 0, + "skipped": 0, + "pct": 0, + "classForPercent": "empty" + } + }, + "children": false + } + ] + }, + "map": { + "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js": { + "path": "/dev/git/istanbuljs/packages/istanbul-reports/lib/text/empty.js", + "statementMap": {}, + "fnMap": {}, + "branchMap": {}, + "s": {}, + "f": {}, + "b": {} + } } - } } diff --git a/packages/istanbul-reports/test/fixtures/specs/missing-line-missing-branch.json b/packages/istanbul-reports/test/fixtures/specs/missing-line-missing-branch.json index e56e0c23..c49219fd 100644 --- a/packages/istanbul-reports/test/fixtures/specs/missing-line-missing-branch.json +++ b/packages/istanbul-reports/test/fixtures/specs/missing-line-missing-branch.json @@ -1,1643 +1,1652 @@ { - "title": "missing line and branch coverage", - "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n\u001b[32;1mAll files\u001b[0m |\u001b[32;1m 98.04\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 88.89\u001b[0m |\u001b[32;1m 97.87\u001b[0m |\u001b[31;1m \u001b[0m |\n\u001b[32;1m index.js\u001b[0m |\u001b[32;1m 98.04\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 88.89\u001b[0m |\u001b[32;1m 97.87\u001b[0m |\u001b[31;1m 9\u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", - "map": { - "/Users/benjamincoe/oss/test-exclude/index.js": { - "path": "/Users/benjamincoe/oss/test-exclude/index.js", - "statementMap": { - "0": { - "start": { - "line": 1, - "column": 15 - }, - "end": { - "line": 1, - "column": 39 - } - }, - "1": { - "start": { - "line": 2, - "column": 15 - }, - "end": { - "line": 2, - "column": 32 - } - }, - "2": { - "start": { - "line": 3, - "column": 19 - }, - "end": { - "line": 3, - "column": 40 - } - }, - "3": { - "start": { - "line": 4, - "column": 13 - }, - "end": { - "line": 4, - "column": 28 - } - }, - "4": { - "start": { - "line": 5, - "column": 18 - }, - "end": { - "line": 5, - "column": 40 - } - }, - "5": { - "start": { - "line": 9, - "column": 2 - }, - "end": { - "line": 9, - "column": 11 - } - }, - "6": { - "start": { - "line": 13, - "column": 2 - }, - "end": { - "line": 19, - "column": 10 - } - }, - "7": { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "8": { - "start": { - "line": 21, - "column": 40 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "9": { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "10": { - "start": { - "line": 22, - "column": 40 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "11": { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - "12": { - "start": { - "line": 25, - "column": 4 - }, - "end": { - "line": 25, - "column": 63 - } - }, - "13": { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - "14": { - "start": { - "line": 29, - "column": 4 - }, - "end": { - "line": 29, - "column": 54 - } - }, - "15": { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - "16": { - "start": { - "line": 33, - "column": 4 - }, - "end": { - "line": 33, - "column": 57 - } - }, - "17": { - "start": { - "line": 35, - "column": 4 - }, - "end": { - "line": 35, - "column": 24 - } - }, - "18": { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - "19": { - "start": { - "line": 39, - "column": 4 - }, - "end": { - "line": 39, - "column": 43 - } - }, - "20": { - "start": { - "line": 42, - "column": 2 - }, - "end": { - "line": 44, - "column": 3 - } - }, - "21": { - "start": { - "line": 50, - "column": 0 - }, - "end": { - "line": 59, - "column": 1 - } - }, - "22": { - "start": { - "line": 51, - "column": 29 - }, - "end": { - "line": 51, - "column": 34 - } - }, - "23": { - "start": { - "line": 52, - "column": 2 - }, - "end": { - "line": 57, - "column": 4 - } - }, - "24": { - "start": { - "line": 53, - "column": 18 - }, - "end": { - "line": 54, - "column": 71 - } - }, - "25": { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "26": { - "start": { - "line": 55, - "column": 17 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "27": { - "start": { - "line": 56, - "column": 4 - }, - "end": { - "line": 56, - "column": 19 - } - }, - "28": { - "start": { - "line": 58, - "column": 2 - }, - "end": { - "line": 58, - "column": 29 - } - }, - "29": { - "start": { - "line": 61, - "column": 0 - }, - "end": { - "line": 69, - "column": 1 - } - }, - "30": { - "start": { - "line": 62, - "column": 2 - }, - "end": { - "line": 62, - "column": 56 - } - }, - "31": { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "32": { - "start": { - "line": 65, - "column": 55 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "33": { - "start": { - "line": 67, - "column": 2 - }, - "end": { - "line": 67, - "column": 43 - } - }, - "34": { - "start": { - "line": 68, - "column": 2 - }, - "end": { - "line": 68, - "column": 143 - } - }, - "35": { - "start": { - "line": 71, - "column": 0 - }, - "end": { - "line": 82, - "column": 1 - } - }, - "36": { - "start": { - "line": 72, - "column": 14 - }, - "end": { - "line": 74, - "column": 4 - } - }, - "37": { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - "38": { - "start": { - "line": 77, - "column": 4 - }, - "end": { - "line": 77, - "column": 27 - } - }, - "39": { - "start": { - "line": 78, - "column": 4 - }, - "end": { - "line": 78, - "column": 23 - } - }, - "40": { - "start": { - "line": 80, - "column": 4 - }, - "end": { - "line": 80, - "column": 13 - } - }, - "41": { - "start": { - "line": 85, - "column": 2 - }, - "end": { - "line": 97, - "column": 8 - } - }, - "42": { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } - }, - "43": { - "start": { - "line": 88, - "column": 6 - }, - "end": { - "line": 88, - "column": 64 - } - }, - "44": { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } - }, - "45": { - "start": { - "line": 93, - "column": 6 - }, - "end": { - "line": 93, - "column": 60 - } - }, - "46": { - "start": { - "line": 96, - "column": 4 - }, - "end": { - "line": 96, - "column": 33 - } - }, - "47": { - "start": { - "line": 100, - "column": 17 - }, - "end": { - "line": 102, - "column": 1 - } - }, - "48": { - "start": { - "line": 101, - "column": 2 - }, - "end": { - "line": 101, - "column": 30 - } - }, - "49": { - "start": { - "line": 104, - "column": 0 - }, - "end": { - "line": 111, - "column": 1 - } - }, - "50": { - "start": { - "line": 113, - "column": 0 - }, - "end": { - "line": 113, - "column": 27 - } - } - }, - "fnMap": { - "0": { - "name": "foo", - "decl": { - "start": { - "line": 8, - "column": 9 - }, - "end": { - "line": 8, - "column": 12 - } - }, - "loc": { - "start": { - "line": 8, - "column": 16 - }, - "end": { - "line": 10, - "column": 1 - } - }, - "line": 8 - }, - "1": { - "name": "TestExclude", - "decl": { - "start": { - "line": 12, - "column": 9 - }, - "end": { - "line": 12, - "column": 20 - } - }, - "loc": { - "start": { - "line": 12, - "column": 28 - }, - "end": { - "line": 45, - "column": 1 - } - }, - "line": 12 - }, - "2": { - "name": "(anonymous_2)", - "decl": { - "start": { - "line": 50, - "column": 51 - }, - "end": { - "line": 50, - "column": 52 - } - }, - "loc": { - "start": { - "line": 50, - "column": 63 - }, - "end": { - "line": 59, - "column": 1 - } - }, - "line": 50 - }, - "3": { - "name": "(anonymous_3)", - "decl": { - "start": { - "line": 52, - "column": 37 - }, - "end": { - "line": 52, - "column": 38 - } - }, - "loc": { - "start": { - "line": 52, - "column": 50 - }, - "end": { - "line": 57, - "column": 3 - } - }, - "line": 52 - }, - "4": { - "name": "(anonymous_4)", - "decl": { - "start": { - "line": 61, - "column": 41 - }, - "end": { - "line": 61, - "column": 42 - } - }, - "loc": { - "start": { - "line": 61, - "column": 70 - }, - "end": { - "line": 69, - "column": 1 - } - }, - "line": 61 - }, - "5": { - "name": "(anonymous_5)", - "decl": { - "start": { - "line": 71, - "column": 32 - }, - "end": { - "line": 71, - "column": 33 - } - }, - "loc": { - "start": { - "line": 71, - "column": 53 - }, - "end": { - "line": 82, - "column": 1 - } - }, - "line": 71 - }, - "6": { - "name": "prepGlobPatterns", - "decl": { - "start": { - "line": 84, - "column": 9 - }, - "end": { - "line": 84, - "column": 25 - } - }, - "loc": { - "start": { - "line": 84, - "column": 37 - }, - "end": { - "line": 98, - "column": 1 - } - }, - "line": 84 - }, - "7": { - "name": "(anonymous_7)", - "decl": { - "start": { - "line": 85, - "column": 25 - }, - "end": { - "line": 85, - "column": 26 - } - }, - "loc": { - "start": { - "line": 85, - "column": 52 - }, - "end": { - "line": 97, - "column": 3 - } - }, - "line": 85 - }, - "8": { - "name": "(anonymous_8)", - "decl": { - "start": { - "line": 100, - "column": 17 - }, - "end": { - "line": 100, - "column": 18 - } - }, - "loc": { - "start": { - "line": 100, - "column": 33 - }, - "end": { - "line": 102, - "column": 1 - } - }, - "line": 100 - } - }, - "branchMap": { - "0": { - "loc": { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - }, - { - "start": { - "line": 21, - "column": 2 - }, - "end": { - "line": 21, - "column": 81 - } - } - ], - "line": 21 - }, - "1": { - "loc": { - "start": { - "line": 21, - "column": 55 - }, - "end": { - "line": 21, - "column": 81 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 21, - "column": 55 - }, - "end": { - "line": 21, - "column": 69 - } - }, - { - "start": { - "line": 21, - "column": 73 - }, - "end": { - "line": 21, - "column": 81 - } - } - ], - "line": 21 - }, - "2": { - "loc": { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - }, - { - "start": { - "line": 22, - "column": 2 - }, - "end": { - "line": 22, - "column": 69 - } - } - ], - "line": 22 - }, - "3": { - "loc": { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - }, - { - "start": { - "line": 24, - "column": 2 - }, - "end": { - "line": 26, - "column": 3 - } - } - ], - "line": 24 - }, - "4": { - "loc": { - "start": { - "line": 24, - "column": 6 - }, - "end": { - "line": 24, - "column": 54 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 24, - "column": 6 - }, - "end": { - "line": 24, - "column": 19 - } - }, - { - "start": { - "line": 24, - "column": 23 - }, - "end": { - "line": 24, - "column": 36 - } - }, - { - "start": { - "line": 24, - "column": 40 - }, - "end": { - "line": 24, - "column": 54 - } - } - ], - "line": 24 - }, - "5": { - "loc": { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - }, - { - "start": { - "line": 28, - "column": 2 - }, - "end": { - "line": 30, - "column": 3 - } - } - ], - "line": 28 - }, - "6": { - "loc": { - "start": { - "line": 28, - "column": 6 - }, - "end": { - "line": 28, - "column": 51 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 28, - "column": 6 - }, - "end": { - "line": 28, - "column": 19 - } - }, - { - "start": { - "line": 28, - "column": 23 - }, - "end": { - "line": 28, - "column": 51 - } - } - ], - "line": 28 - }, - "7": { - "loc": { - "start": { - "line": 29, - "column": 19 + "title": "missing line and branch coverage", + "textReportExpected": "----------|----------|----------|----------|----------|-------------------|\nFile | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |\n----------|----------|----------|----------|----------|-------------------|\n\u001b[32;1mAll files\u001b[0m |\u001b[32;1m 98.04\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 88.89\u001b[0m |\u001b[32;1m 97.87\u001b[0m |\u001b[31;1m \u001b[0m |\n\u001b[32;1m index.js\u001b[0m |\u001b[32;1m 98.04\u001b[0m |\u001b[32;1m 95.35\u001b[0m |\u001b[32;1m 88.89\u001b[0m |\u001b[32;1m 97.87\u001b[0m |\u001b[31;1m 9\u001b[0m |\n----------|----------|----------|----------|----------|-------------------|\n", + "htmlSpaFiles": ["index.js.html", "index.html"], + "htmlSpaCoverageData": { + "file": "", + "isEmpty": false, + "metrics": { + "statements": { + "total": 51, + "covered": 50, + "skipped": 0, + "pct": 98.04, + "classForPercent": "high" }, - "end": { - "line": 29, - "column": 54 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 29, - "column": 19 - }, - "end": { - "line": 29, - "column": 44 - } + "branches": { + "total": 43, + "covered": 41, + "skipped": 0, + "pct": 95.35, + "classForPercent": "high" }, - { - "start": { - "line": 29, - "column": 48 - }, - "end": { - "line": 29, - "column": 54 - } - } - ], - "line": 29 - }, - "8": { - "loc": { - "start": { - "line": 32, - "column": 2 + "functions": { + "total": 9, + "covered": 8, + "skipped": 0, + "pct": 88.89, + "classForPercent": "high" }, - "end": { - "line": 36, - "column": 3 + "lines": { + "total": 47, + "covered": 46, + "skipped": 0, + "pct": 97.87, + "classForPercent": "high" } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - }, - { - "start": { - "line": 32, - "column": 2 - }, - "end": { - "line": 36, - "column": 3 - } - } - ], - "line": 32 }, - "9": { - "loc": { - "start": { - "line": 32, - "column": 6 - }, - "end": { - "line": 32, - "column": 45 - } - }, - "type": "binary-expr", - "locations": [ + "children": [ { - "start": { - "line": 32, - "column": 6 - }, - "end": { - "line": 32, - "column": 18 - } - }, - { - "start": { - "line": 32, - "column": 22 - }, - "end": { - "line": 32, - "column": 45 - } - } - ], - "line": 32 - }, - "10": { - "loc": { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - }, - { - "start": { - "line": 38, - "column": 2 - }, - "end": { - "line": 40, - "column": 3 - } - } - ], - "line": 38 - }, - "11": { - "loc": { - "start": { - "line": 38, - "column": 6 - }, - "end": { - "line": 38, - "column": 93 + "file": "index.js", + "isEmpty": false, + "metrics": { + "statements": { + "total": 51, + "covered": 50, + "skipped": 0, + "pct": 98.04, + "classForPercent": "high" + }, + "branches": { + "total": 43, + "covered": 41, + "skipped": 0, + "pct": 95.35, + "classForPercent": "high" + }, + "functions": { + "total": 9, + "covered": 8, + "skipped": 0, + "pct": 88.89, + "classForPercent": "high" + }, + "lines": { + "total": 47, + "covered": 46, + "skipped": 0, + "pct": 97.87, + "classForPercent": "high" + } + }, + "children": false } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 38, - "column": 6 - }, - "end": { - "line": 38, - "column": 40 - } - }, - { - "start": { - "line": 38, - "column": 44 - }, - "end": { - "line": 38, - "column": 93 - } - } - ], - "line": 38 - }, - "12": { - "loc": { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - }, - { - "start": { - "line": 55, - "column": 4 - }, - "end": { - "line": 55, - "column": 44 - } - } - ], - "line": 55 - }, - "13": { - "loc": { - "start": { - "line": 62, - "column": 12 - }, - "end": { - "line": 62, - "column": 56 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 62, - "column": 12 - }, - "end": { - "line": 62, - "column": 19 - } - }, - { - "start": { - "line": 62, - "column": 23 - }, - "end": { - "line": 62, - "column": 56 - } - } - ], - "line": 62 - }, - "14": { - "loc": { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - }, - { - "start": { - "line": 65, - "column": 2 - }, - "end": { - "line": 65, - "column": 67 - } - } - ], - "line": 65 - }, - "15": { - "loc": { - "start": { - "line": 68, - "column": 9 - }, - "end": { - "line": 68, - "column": 143 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 68, - "column": 10 - }, - "end": { - "line": 68, - "column": 23 - } - }, - { - "start": { - "line": 68, - "column": 27 - }, - "end": { - "line": 68, - "column": 82 - } - }, - { - "start": { - "line": 68, - "column": 87 - }, - "end": { - "line": 68, - "column": 143 - } - } - ], - "line": 68 - }, - "16": { - "loc": { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - }, - { - "start": { - "line": 76, - "column": 2 - }, - "end": { - "line": 81, - "column": 3 - } - } - ], - "line": 76 - }, - "17": { - "loc": { - "start": { - "line": 76, - "column": 6 - }, - "end": { - "line": 76, - "column": 65 - } - }, - "type": "binary-expr", - "locations": [ - { - "start": { - "line": 76, - "column": 6 - }, - "end": { - "line": 76, - "column": 13 - } + ] + }, + "map": { + "/Users/benjamincoe/oss/test-exclude/index.js": { + "path": "/Users/benjamincoe/oss/test-exclude/index.js", + "statementMap": { + "0": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 39 + } + }, + "1": { + "start": { + "line": 2, + "column": 15 + }, + "end": { + "line": 2, + "column": 32 + } + }, + "2": { + "start": { + "line": 3, + "column": 19 + }, + "end": { + "line": 3, + "column": 40 + } + }, + "3": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 28 + } + }, + "4": { + "start": { + "line": 5, + "column": 18 + }, + "end": { + "line": 5, + "column": 40 + } + }, + "5": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 11 + } + }, + "6": { + "start": { + "line": 13, + "column": 2 + }, + "end": { + "line": 19, + "column": 10 + } + }, + "7": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "8": { + "start": { + "line": 21, + "column": 40 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "9": { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "10": { + "start": { + "line": 22, + "column": 40 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "11": { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + "12": { + "start": { + "line": 25, + "column": 4 + }, + "end": { + "line": 25, + "column": 63 + } + }, + "13": { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + "14": { + "start": { + "line": 29, + "column": 4 + }, + "end": { + "line": 29, + "column": 54 + } + }, + "15": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + "16": { + "start": { + "line": 33, + "column": 4 + }, + "end": { + "line": 33, + "column": 57 + } + }, + "17": { + "start": { + "line": 35, + "column": 4 + }, + "end": { + "line": 35, + "column": 24 + } + }, + "18": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + "19": { + "start": { + "line": 39, + "column": 4 + }, + "end": { + "line": 39, + "column": 43 + } + }, + "20": { + "start": { + "line": 42, + "column": 2 + }, + "end": { + "line": 44, + "column": 3 + } + }, + "21": { + "start": { + "line": 50, + "column": 0 + }, + "end": { + "line": 59, + "column": 1 + } + }, + "22": { + "start": { + "line": 51, + "column": 29 + }, + "end": { + "line": 51, + "column": 34 + } + }, + "23": { + "start": { + "line": 52, + "column": 2 + }, + "end": { + "line": 57, + "column": 4 + } + }, + "24": { + "start": { + "line": 53, + "column": 18 + }, + "end": { + "line": 54, + "column": 71 + } + }, + "25": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "26": { + "start": { + "line": 55, + "column": 17 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "27": { + "start": { + "line": 56, + "column": 4 + }, + "end": { + "line": 56, + "column": 19 + } + }, + "28": { + "start": { + "line": 58, + "column": 2 + }, + "end": { + "line": 58, + "column": 29 + } + }, + "29": { + "start": { + "line": 61, + "column": 0 + }, + "end": { + "line": 69, + "column": 1 + } + }, + "30": { + "start": { + "line": 62, + "column": 2 + }, + "end": { + "line": 62, + "column": 56 + } + }, + "31": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "32": { + "start": { + "line": 65, + "column": 55 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "33": { + "start": { + "line": 67, + "column": 2 + }, + "end": { + "line": 67, + "column": 43 + } + }, + "34": { + "start": { + "line": 68, + "column": 2 + }, + "end": { + "line": 68, + "column": 143 + } + }, + "35": { + "start": { + "line": 71, + "column": 0 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "36": { + "start": { + "line": 72, + "column": 14 + }, + "end": { + "line": 74, + "column": 4 + } + }, + "37": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + "38": { + "start": { + "line": 77, + "column": 4 + }, + "end": { + "line": 77, + "column": 27 + } + }, + "39": { + "start": { + "line": 78, + "column": 4 + }, + "end": { + "line": 78, + "column": 23 + } + }, + "40": { + "start": { + "line": 80, + "column": 4 + }, + "end": { + "line": 80, + "column": 13 + } + }, + "41": { + "start": { + "line": 85, + "column": 2 + }, + "end": { + "line": 97, + "column": 8 + } + }, + "42": { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + "43": { + "start": { + "line": 88, + "column": 6 + }, + "end": { + "line": 88, + "column": 64 + } + }, + "44": { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + "45": { + "start": { + "line": 93, + "column": 6 + }, + "end": { + "line": 93, + "column": 60 + } + }, + "46": { + "start": { + "line": 96, + "column": 4 + }, + "end": { + "line": 96, + "column": 33 + } + }, + "47": { + "start": { + "line": 100, + "column": 17 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "48": { + "start": { + "line": 101, + "column": 2 + }, + "end": { + "line": 101, + "column": 30 + } + }, + "49": { + "start": { + "line": 104, + "column": 0 + }, + "end": { + "line": 111, + "column": 1 + } + }, + "50": { + "start": { + "line": 113, + "column": 0 + }, + "end": { + "line": 113, + "column": 27 + } + } }, - { - "start": { - "line": 76, - "column": 17 - }, - "end": { - "line": 76, - "column": 29 - } + "fnMap": { + "0": { + "name": "foo", + "decl": { + "start": { + "line": 8, + "column": 9 + }, + "end": { + "line": 8, + "column": 12 + } + }, + "loc": { + "start": { + "line": 8, + "column": 16 + }, + "end": { + "line": 10, + "column": 1 + } + }, + "line": 8 + }, + "1": { + "name": "TestExclude", + "decl": { + "start": { + "line": 12, + "column": 9 + }, + "end": { + "line": 12, + "column": 20 + } + }, + "loc": { + "start": { + "line": 12, + "column": 28 + }, + "end": { + "line": 45, + "column": 1 + } + }, + "line": 12 + }, + "2": { + "name": "(anonymous_2)", + "decl": { + "start": { + "line": 50, + "column": 51 + }, + "end": { + "line": 50, + "column": 52 + } + }, + "loc": { + "start": { + "line": 50, + "column": 63 + }, + "end": { + "line": 59, + "column": 1 + } + }, + "line": 50 + }, + "3": { + "name": "(anonymous_3)", + "decl": { + "start": { + "line": 52, + "column": 37 + }, + "end": { + "line": 52, + "column": 38 + } + }, + "loc": { + "start": { + "line": 52, + "column": 50 + }, + "end": { + "line": 57, + "column": 3 + } + }, + "line": 52 + }, + "4": { + "name": "(anonymous_4)", + "decl": { + "start": { + "line": 61, + "column": 41 + }, + "end": { + "line": 61, + "column": 42 + } + }, + "loc": { + "start": { + "line": 61, + "column": 70 + }, + "end": { + "line": 69, + "column": 1 + } + }, + "line": 61 + }, + "5": { + "name": "(anonymous_5)", + "decl": { + "start": { + "line": 71, + "column": 32 + }, + "end": { + "line": 71, + "column": 33 + } + }, + "loc": { + "start": { + "line": 71, + "column": 53 + }, + "end": { + "line": 82, + "column": 1 + } + }, + "line": 71 + }, + "6": { + "name": "prepGlobPatterns", + "decl": { + "start": { + "line": 84, + "column": 9 + }, + "end": { + "line": 84, + "column": 25 + } + }, + "loc": { + "start": { + "line": 84, + "column": 37 + }, + "end": { + "line": 98, + "column": 1 + } + }, + "line": 84 + }, + "7": { + "name": "(anonymous_7)", + "decl": { + "start": { + "line": 85, + "column": 25 + }, + "end": { + "line": 85, + "column": 26 + } + }, + "loc": { + "start": { + "line": 85, + "column": 52 + }, + "end": { + "line": 97, + "column": 3 + } + }, + "line": 85 + }, + "8": { + "name": "(anonymous_8)", + "decl": { + "start": { + "line": 100, + "column": 17 + }, + "end": { + "line": 100, + "column": 18 + } + }, + "loc": { + "start": { + "line": 100, + "column": 33 + }, + "end": { + "line": 102, + "column": 1 + } + }, + "line": 100 + } }, - { - "start": { - "line": 76, - "column": 33 - }, - "end": { - "line": 76, - "column": 65 - } - } - ], - "line": 76 - }, - "18": { - "loc": { - "start": { - "line": 87, - "column": 4 + "branchMap": { + "0": { + "loc": { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + }, + { + "start": { + "line": 21, + "column": 2 + }, + "end": { + "line": 21, + "column": 81 + } + } + ], + "line": 21 + }, + "1": { + "loc": { + "start": { + "line": 21, + "column": 55 + }, + "end": { + "line": 21, + "column": 81 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 21, + "column": 55 + }, + "end": { + "line": 21, + "column": 69 + } + }, + { + "start": { + "line": 21, + "column": 73 + }, + "end": { + "line": 21, + "column": 81 + } + } + ], + "line": 21 + }, + "2": { + "loc": { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + }, + { + "start": { + "line": 22, + "column": 2 + }, + "end": { + "line": 22, + "column": 69 + } + } + ], + "line": 22 + }, + "3": { + "loc": { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "start": { + "line": 24, + "column": 2 + }, + "end": { + "line": 26, + "column": 3 + } + } + ], + "line": 24 + }, + "4": { + "loc": { + "start": { + "line": 24, + "column": 6 + }, + "end": { + "line": 24, + "column": 54 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 24, + "column": 6 + }, + "end": { + "line": 24, + "column": 19 + } + }, + { + "start": { + "line": 24, + "column": 23 + }, + "end": { + "line": 24, + "column": 36 + } + }, + { + "start": { + "line": 24, + "column": 40 + }, + "end": { + "line": 24, + "column": 54 + } + } + ], + "line": 24 + }, + "5": { + "loc": { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + }, + { + "start": { + "line": 28, + "column": 2 + }, + "end": { + "line": 30, + "column": 3 + } + } + ], + "line": 28 + }, + "6": { + "loc": { + "start": { + "line": 28, + "column": 6 + }, + "end": { + "line": 28, + "column": 51 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 28, + "column": 6 + }, + "end": { + "line": 28, + "column": 19 + } + }, + { + "start": { + "line": 28, + "column": 23 + }, + "end": { + "line": 28, + "column": 51 + } + } + ], + "line": 28 + }, + "7": { + "loc": { + "start": { + "line": 29, + "column": 19 + }, + "end": { + "line": 29, + "column": 54 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 29, + "column": 19 + }, + "end": { + "line": 29, + "column": 44 + } + }, + { + "start": { + "line": 29, + "column": 48 + }, + "end": { + "line": 29, + "column": 54 + } + } + ], + "line": 29 + }, + "8": { + "loc": { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + }, + { + "start": { + "line": 32, + "column": 2 + }, + "end": { + "line": 36, + "column": 3 + } + } + ], + "line": 32 + }, + "9": { + "loc": { + "start": { + "line": 32, + "column": 6 + }, + "end": { + "line": 32, + "column": 45 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 32, + "column": 6 + }, + "end": { + "line": 32, + "column": 18 + } + }, + { + "start": { + "line": 32, + "column": 22 + }, + "end": { + "line": 32, + "column": 45 + } + } + ], + "line": 32 + }, + "10": { + "loc": { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + }, + { + "start": { + "line": 38, + "column": 2 + }, + "end": { + "line": 40, + "column": 3 + } + } + ], + "line": 38 + }, + "11": { + "loc": { + "start": { + "line": 38, + "column": 6 + }, + "end": { + "line": 38, + "column": 93 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 38, + "column": 6 + }, + "end": { + "line": 38, + "column": 40 + } + }, + { + "start": { + "line": 38, + "column": 44 + }, + "end": { + "line": 38, + "column": 93 + } + } + ], + "line": 38 + }, + "12": { + "loc": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + }, + { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 55, + "column": 44 + } + } + ], + "line": 55 + }, + "13": { + "loc": { + "start": { + "line": 62, + "column": 12 + }, + "end": { + "line": 62, + "column": 56 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 62, + "column": 12 + }, + "end": { + "line": 62, + "column": 19 + } + }, + { + "start": { + "line": 62, + "column": 23 + }, + "end": { + "line": 62, + "column": 56 + } + } + ], + "line": 62 + }, + "14": { + "loc": { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + }, + { + "start": { + "line": 65, + "column": 2 + }, + "end": { + "line": 65, + "column": 67 + } + } + ], + "line": 65 + }, + "15": { + "loc": { + "start": { + "line": 68, + "column": 9 + }, + "end": { + "line": 68, + "column": 143 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 68, + "column": 10 + }, + "end": { + "line": 68, + "column": 23 + } + }, + { + "start": { + "line": 68, + "column": 27 + }, + "end": { + "line": 68, + "column": 82 + } + }, + { + "start": { + "line": 68, + "column": 87 + }, + "end": { + "line": 68, + "column": 143 + } + } + ], + "line": 68 + }, + "16": { + "loc": { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + }, + { + "start": { + "line": 76, + "column": 2 + }, + "end": { + "line": 81, + "column": 3 + } + } + ], + "line": 76 + }, + "17": { + "loc": { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 65 + } + }, + "type": "binary-expr", + "locations": [ + { + "start": { + "line": 76, + "column": 6 + }, + "end": { + "line": 76, + "column": 13 + } + }, + { + "start": { + "line": 76, + "column": 17 + }, + "end": { + "line": 76, + "column": 29 + } + }, + { + "start": { + "line": 76, + "column": 33 + }, + "end": { + "line": 76, + "column": 65 + } + } + ], + "line": 76 + }, + "18": { + "loc": { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + }, + { + "start": { + "line": 87, + "column": 4 + }, + "end": { + "line": 89, + "column": 5 + } + } + ], + "line": 87 + }, + "19": { + "loc": { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + "type": "if", + "locations": [ + { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + }, + { + "start": { + "line": 92, + "column": 4 + }, + "end": { + "line": 94, + "column": 5 + } + } + ], + "line": 92 + } }, - "end": { - "line": 89, - "column": 5 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } + "s": { + "0": 1, + "1": 1, + "2": 1, + "3": 1, + "4": 1, + "5": 0, + "6": 21, + "7": 21, + "8": 1, + "9": 21, + "10": 1, + "11": 21, + "12": 7, + "13": 21, + "14": 15, + "15": 21, + "16": 5, + "17": 16, + "18": 21, + "19": 5, + "20": 21, + "21": 1, + "22": 21, + "23": 21, + "24": 95, + "25": 95, + "26": 1, + "27": 95, + "28": 21, + "29": 1, + "30": 56, + "31": 56, + "32": 1, + "33": 55, + "34": 55, + "35": 1, + "36": 7, + "37": 7, + "38": 6, + "39": 6, + "40": 1, + "41": 26, + "42": 105, + "43": 39, + "44": 105, + "45": 50, + "46": 105, + "47": 1, + "48": 21, + "49": 1, + "50": 1 }, - { - "start": { - "line": 87, - "column": 4 - }, - "end": { - "line": 89, - "column": 5 - } - } - ], - "line": 87 - }, - "19": { - "loc": { - "start": { - "line": 92, - "column": 4 + "f": { + "0": 0, + "1": 21, + "2": 21, + "3": 95, + "4": 56, + "5": 7, + "6": 26, + "7": 105, + "8": 21 }, - "end": { - "line": 94, - "column": 5 - } - }, - "type": "if", - "locations": [ - { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } + "b": { + "0": [1, 20], + "1": [1, 0], + "2": [1, 20], + "3": [7, 14], + "4": [21, 18, 15], + "5": [15, 6], + "6": [21, 8], + "7": [15, 0], + "8": [5, 16], + "9": [21, 5], + "10": [5, 16], + "11": [21, 20], + "12": [1, 94], + "13": [56, 56], + "14": [1, 55], + "15": [55, 15, 50], + "16": [6, 1], + "17": [7, 7, 6], + "18": [39, 66], + "19": [50, 55] }, - { - "start": { - "line": 92, - "column": 4 - }, - "end": { - "line": 94, - "column": 5 - } - } - ], - "line": 92 + "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", + "hash": "257c6f21b24c87c5486d0ac83455acd3e4aebb6d", + "contentHash": "fe9edcd7fde8f2a27202e2634386d126_10.2.0" } - }, - "s": { - "0": 1, - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 0, - "6": 21, - "7": 21, - "8": 1, - "9": 21, - "10": 1, - "11": 21, - "12": 7, - "13": 21, - "14": 15, - "15": 21, - "16": 5, - "17": 16, - "18": 21, - "19": 5, - "20": 21, - "21": 1, - "22": 21, - "23": 21, - "24": 95, - "25": 95, - "26": 1, - "27": 95, - "28": 21, - "29": 1, - "30": 56, - "31": 56, - "32": 1, - "33": 55, - "34": 55, - "35": 1, - "36": 7, - "37": 7, - "38": 6, - "39": 6, - "40": 1, - "41": 26, - "42": 105, - "43": 39, - "44": 105, - "45": 50, - "46": 105, - "47": 1, - "48": 21, - "49": 1, - "50": 1 - }, - "f": { - "0": 0, - "1": 21, - "2": 21, - "3": 95, - "4": 56, - "5": 7, - "6": 26, - "7": 105, - "8": 21 - }, - "b": { - "0": [ - 1, - 20 - ], - "1": [ - 1, - 0 - ], - "2": [ - 1, - 20 - ], - "3": [ - 7, - 14 - ], - "4": [ - 21, - 18, - 15 - ], - "5": [ - 15, - 6 - ], - "6": [ - 21, - 8 - ], - "7": [ - 15, - 0 - ], - "8": [ - 5, - 16 - ], - "9": [ - 21, - 5 - ], - "10": [ - 5, - 16 - ], - "11": [ - 21, - 20 - ], - "12": [ - 1, - 94 - ], - "13": [ - 56, - 56 - ], - "14": [ - 1, - 55 - ], - "15": [ - 55, - 15, - 50 - ], - "16": [ - 6, - 1 - ], - "17": [ - 7, - 7, - 6 - ], - "18": [ - 39, - 66 - ], - "19": [ - 50, - 55 - ] - }, - "_coverageSchema": "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c", - "hash": "257c6f21b24c87c5486d0ac83455acd3e4aebb6d", - "contentHash": "fe9edcd7fde8f2a27202e2634386d126_10.2.0" } - } } diff --git a/packages/istanbul-reports/test/html-spa/index.js b/packages/istanbul-reports/test/html-spa/index.js new file mode 100644 index 00000000..caead784 --- /dev/null +++ b/packages/istanbul-reports/test/html-spa/index.js @@ -0,0 +1,179 @@ +/* globals describe, it, afterEach, before, after */ +const fs = require('fs'); +const path = require('path'); +const FileWriter = require('istanbul-lib-report/lib/file-writer'); +const istanbulLibReport = require('istanbul-lib-report'); +const istanbulLibCoverage = require('istanbul-lib-coverage'); +const HtmlSpaReport = require('../../lib/html-spa/index'); + +const assert = require('chai').assert; + +describe('html-spa', () => { + let fileWriterCopyFile; + let fileWriterWriteFile; + let operations = []; + before(() => { + fileWriterCopyFile = FileWriter.prototype.copyFile; + fileWriterWriteFile = FileWriter.prototype.writeFile; + + FileWriter.prototype.copyFile = function(source, dest, header) { + operations.push({ + type: 'copy', + source, + dest, + header + }); + }; + FileWriter.prototype.writeFile = function(file) { + const writeFileOp = { + type: 'write', + contents: '', + file, + baseDir: this.baseDir + }; + operations.push(writeFileOp); + return { + write(str) { + writeFileOp.contents += str; + }, + close() {} + }; + }; + }); + afterEach(() => { + operations = []; + }); + after(() => { + FileWriter.prototype.copyFile = fileWriterCopyFile; + FileWriter.prototype.writeFile = fileWriterWriteFile; + }); + + function createTest(file) { + const fixture = require(path.resolve( + __dirname, + '../fixtures/specs/' + file + )); + const tree = istanbulLibReport.summarizers.nested( + istanbulLibCoverage.createCoverageMap(fixture.map) + ); + it(fixture.title, () => { + const context = istanbulLibReport.createContext({ + dir: './' + }); + const report = new HtmlSpaReport(fixture.opts); + tree.visit(report, context); + + // copy operations should always be the same + assert.deepEqual(operations.filter(op => op.type === 'copy'), [ + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html/assets/base.css' + ), + dest: './base.css', + header: undefined + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html/assets/block-navigation.js' + ), + dest: './block-navigation.js', + header: '/* eslint-disable */\n' + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html/assets/sort-arrow-sprite.png' + ), + dest: './sort-arrow-sprite.png', + header: undefined + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html/assets/sorter.js' + ), + dest: './sorter.js', + header: '/* eslint-disable */\n' + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html/assets/vendor/prettify.css' + ), + dest: './prettify.css', + header: undefined + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html/assets/vendor/prettify.js' + ), + dest: './prettify.js', + header: '/* eslint-disable */\n' + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html-spa/assets/bundle.js' + ), + dest: './bundle.js', + header: undefined + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html-spa/assets/sort-arrow-sprite.png' + ), + dest: './sort-arrow-sprite.png', + header: undefined + }, + { + type: 'copy', + source: path.join( + __dirname, + '../../lib/html-spa/assets/spa.css' + ), + dest: './spa.css', + header: undefined + } + ]); + + assert.deepEqual( + operations + .filter(op => op.type === 'write') + .map(op => path.join(op.baseDir, op.file)), + fixture.htmlSpaFiles + ); + + assert.deepEqual( + JSON.parse( + operations + .filter( + op => + op.type === 'write' && op.file === 'index.html' + )[0] + .contents.match(/window\.data = ([^;]+);/)[1] + ), + fixture.htmlSpaCoverageData + ); + }); + } + + fs.readdirSync(path.resolve(__dirname, '../fixtures/specs')).forEach( + file => { + if (file.indexOf('.json') !== -1) { + createTest(file); + } + } + ); +});