initial commit taken from gitlab.lrz.de

This commit is contained in:
privatereese
2018-08-24 18:09:42 +02:00
parent ae54ed4c48
commit fc05486403
28494 changed files with 2159823 additions and 0 deletions

108
node_modules/istanbul-reports/CHANGELOG.md generated vendored Normal file
View File

@@ -0,0 +1,108 @@
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
<a name="1.3.0"></a>
# [1.3.0](https://github.com/istanbuljs/istanbuljs/compare/istanbul-reports@1.2.0...istanbul-reports@1.3.0) (2018-03-09)
### Features
* added named anchors to code coverage line numbers. ([#149](https://github.com/istanbuljs/istanbuljs/issues/149)) ([98e1c50](https://github.com/istanbuljs/istanbuljs/commit/98e1c50))
<a name="1.2.0"></a>
# [1.2.0](https://github.com/istanbuljs/istanbuljs/compare/istanbul-reports@1.1.4...istanbul-reports@1.2.0) (2018-03-04)
### Bug Fixes
* update fixtures to reflect new heading ([36801d3](https://github.com/istanbuljs/istanbuljs/commit/36801d3))
### Features
* add skip-empty option for html & text reports ([#140](https://github.com/istanbuljs/istanbuljs/issues/140)) ([d2a4262](https://github.com/istanbuljs/istanbuljs/commit/d2a4262))
* add uncovered block navigation ([#136](https://github.com/istanbuljs/istanbuljs/issues/136)) ([c798930](https://github.com/istanbuljs/istanbuljs/commit/c798930))
<a name="1.1.4"></a>
## [1.1.4](https://github.com/istanbuljs/istanbuljs/compare/istanbul-reports@1.1.3...istanbul-reports@1.1.4) (2018-02-13)
### Bug Fixes
* changed column header from "Uncovered Lines" to "Uncovered Line #s" ([#138](https://github.com/istanbuljs/istanbuljs/issues/138)) ([7ba7760](https://github.com/istanbuljs/istanbuljs/commit/7ba7760))
<a name="1.1.3"></a>
## [1.1.3](https://github.com/istanbuljs/istanbuljs/compare/istanbul-reports@1.1.2...istanbul-reports@1.1.3) (2017-10-21)
**Note:** Version bump only for package istanbul-reports
<a name="1.1.2"></a>
## [1.1.2](https://github.com/istanbuljs/istanbuljs/compare/istanbul-reports@1.1.1...istanbul-reports@1.1.2) (2017-08-26)
### Bug Fixes
* prevent branch highlighting from extending pass the end of a line ([#80](https://github.com/istanbuljs/istanbuljs/issues/80)) ([f490377](https://github.com/istanbuljs/istanbuljs/commit/f490377))
<a name="1.1.1"></a>
## [1.1.1](https://github.com/istanbuljs/istanbuljs/compare/istanbul-reports@1.1.0...istanbul-reports@1.1.1) (2017-05-27)
<a name="1.1.0"></a>
# [1.1.0](https://github.com/istanbuljs/istanbul-reports/compare/istanbul-reports@1.0.2...istanbul-reports@1.1.0) (2017-04-29)
### Features
* once 100% line coverage is achieved, missing branch coverage is now shown in text report ([#45](https://github.com/istanbuljs/istanbuljs/issues/45)) ([8a809f8](https://github.com/istanbuljs/istanbul-reports/commit/8a809f8))
<a name="1.0.2"></a>
## [1.0.2](https://github.com/istanbuljs/istanbul-reports/compare/istanbul-reports@1.0.1...istanbul-reports@1.0.2) (2017-03-27)
### Bug Fixes
* **windows:** preserve escape char of json-summary key path ([4d71d5e](https://github.com/istanbuljs/istanbul-reports/commit/4d71d5e))
<a name="1.0.1"></a>
## [1.0.1](https://github.com/istanbuljs/istanbul-reports/compare/v1.0.0...v1.0.1) (2017-01-29)
### Bug Fixes
* add files key to package.json ([#17](https://github.com/istanbuljs/istanbul-reports/issues/17)) ([141f801](https://github.com/istanbuljs/istanbul-reports/commit/141f801))
<a name="1.0.0"></a>
# [1.0.0](https://github.com/istanbuljs/istanbul-reports/compare/v1.0.0-alpha.8...v1.0.0) (2016-10-17)
### Bug Fixes
* fail gracefully if structuredText[startLine] is undefined ([#10](https://github.com/istanbuljs/istanbul-reports/issues/10)) ([bed1d13](https://github.com/istanbuljs/istanbul-reports/commit/bed1d13))
* preserve escape char of json key path on Windows ([#12](https://github.com/istanbuljs/istanbul-reports/issues/12)) ([4e5266e](https://github.com/istanbuljs/istanbul-reports/commit/4e5266e))
* skip branch if meta does not exist (fixes speedskater/babel-plugin-rewire[#165](https://github.com/istanbuljs/istanbul-reports/issues/165)) ([#11](https://github.com/istanbuljs/istanbul-reports/issues/11)) ([62bae2f](https://github.com/istanbuljs/istanbul-reports/commit/62bae2f))
* Teamcity reporter modified to send proper coverage values ([#8](https://github.com/istanbuljs/istanbul-reports/issues/8)) ([4147f50](https://github.com/istanbuljs/istanbul-reports/commit/4147f50))

24
node_modules/istanbul-reports/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,24 @@
Copyright 2012-2015 Yahoo! Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the Yahoo! Inc. nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

14
node_modules/istanbul-reports/README.md generated vendored Normal file
View File

@@ -0,0 +1,14 @@
istanbul-reports
================
[![Greenkeeper badge](https://badges.greenkeeper.io/istanbuljs/istanbul-reports.svg)](https://greenkeeper.io/)
[![Build Status](https://travis-ci.org/istanbuljs/istanbul-reports.svg?branch=master)](https://travis-ci.org/istanbuljs/istanbul-reports)
* node.getRelativeName
* context.getSource(filePath)
* context.classForPercent(type, percent)
* context.console.colorize(str, class)
* context.writer
* context.console.write
* context.console.println

19
node_modules/istanbul-reports/index.js generated vendored Normal file
View File

@@ -0,0 +1,19 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var path = require('path');
module.exports = {
create: function (name, cfg) {
cfg = cfg || {};
var Cons = require(path.join(__dirname, 'lib', name));
return new Cons(cfg);
}
};

164
node_modules/istanbul-reports/lib/clover/index.js generated vendored Normal file
View File

@@ -0,0 +1,164 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
function CloverReport(opts) {
this.cw = null;
this.xml = null;
this.projectRoot = opts.projectRoot || process.cwd();
this.file = opts.file || 'clover.xml';
}
function asJavaPackage(node) {
return node.getRelativeName().
replace(/\//g, '.').
replace(/\\/g, '.').
replace(/\.$/, '');
}
function asClassName(node) {
return node.getRelativeName().replace(/.*[\\\/]/, '');
}
CloverReport.prototype.onStart = function (root, context) {
this.cw = context.writer.writeFile(this.file);
this.xml = context.getXMLWriter(this.cw);
this.writeRootStats(root, context);
};
CloverReport.prototype.onEnd = function () {
this.xml.closeAll();
this.cw.close();
};
CloverReport.prototype.getTreeStats = function (node, context) {
var state = {
packages: 0,
files: 0,
classes: 0,
},
visitor = {
onSummary: function (node, state) {
var metrics = node.getCoverageSummary(true);
if (metrics) {
state.packages += 1;
}
},
onDetail: function (node, state) {
state.classes += 1;
state.files += 1;
}
};
node.visit(context.getVisitor(visitor), state);
return state;
};
CloverReport.prototype.writeRootStats = function (node, context) {
var metrics = node.getCoverageSummary(),
attrs = {
statements: metrics.lines.total,
coveredstatements: metrics.lines.covered,
conditionals: metrics.branches.total,
coveredconditionals: metrics.branches.covered,
methods: metrics.functions.total,
coveredmethods: metrics.functions.covered,
elements: metrics.lines.total + metrics.branches.total + metrics.functions.total,
coveredelements: metrics.lines.covered + metrics.branches.covered + metrics.functions.covered,
complexity: 0,
loc: metrics.lines.total,
ncloc: metrics.lines.total // what? copied as-is from old report
},
treeStats;
this.cw.println('<?xml version="1.0" encoding="UTF-8"?>');
this.xml.openTag('coverage', {
generated: Date.now().toString(),
clover: '3.2.0'
});
this.xml.openTag('project', {
timestamp: Date.now().toString(),
name: 'All files',
});
treeStats = this.getTreeStats(node, context);
Object.keys(treeStats).forEach(function (k) {
attrs[k] = treeStats[k];
});
this.xml.openTag('metrics', attrs);
};
CloverReport.prototype.writeMetrics = function (metrics) {
this.xml.inlineTag('metrics', {
statements: metrics.lines.total,
coveredstatements: metrics.lines.covered,
conditionals: metrics.branches.total,
coveredconditionals: metrics.branches.covered,
methods: metrics.functions.total,
coveredmethods: metrics.functions.covered
});
};
CloverReport.prototype.onSummary = function (node) {
if (node.isRoot()) {
return;
}
var metrics = node.getCoverageSummary(true);
if (!metrics) {
return;
}
this.xml.openTag('package', {
name: asJavaPackage(node)
});
this.writeMetrics(metrics);
};
CloverReport.prototype.onSummaryEnd = function (node) {
if (node.isRoot()) {
return;
}
this.xml.closeTag('package');
};
CloverReport.prototype.onDetail = function (node) {
var that = this,
fileCoverage = node.getFileCoverage(),
metrics = node.getCoverageSummary(),
branchByLine = fileCoverage.getBranchCoverageByLine(),
lines;
this.xml.openTag('file', {
name: asClassName(node),
path: fileCoverage.path
});
this.writeMetrics(metrics);
lines = fileCoverage.getLineCoverage();
Object.keys(lines).forEach(function (k) {
var attrs = {
num: k,
count: lines[k],
type: 'stmt'
},
branchDetail = branchByLine[k];
if (branchDetail) {
attrs.type = 'cond';
attrs.truecount = branchDetail.covered;
attrs.falsecount = branchDetail.total - branchDetail.covered;
}
that.xml.inlineTag('line', attrs);
});
this.xml.closeTag('file');
};
module.exports = CloverReport;

142
node_modules/istanbul-reports/lib/cobertura/index.js generated vendored Normal file
View File

@@ -0,0 +1,142 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var path = require('path');
function CoberturaReport(opts) {
this.cw = null;
this.xml = null;
this.projectRoot = opts.projectRoot || process.cwd();
this.file = opts.file || 'cobertura-coverage.xml';
}
function asJavaPackage(node) {
return node.getRelativeName().
replace(/\//g, '.').
replace(/\\/g, '.').
replace(/\.$/, '');
}
function asClassName(node) {
return node.getRelativeName().replace(/.*[\\\/]/, '');
}
CoberturaReport.prototype.onStart = function (root, context) {
this.cw = context.writer.writeFile(this.file);
this.xml = context.getXMLWriter(this.cw);
this.writeRootStats(root);
};
CoberturaReport.prototype.onEnd = function () {
this.xml.closeAll();
this.cw.close();
};
CoberturaReport.prototype.writeRootStats = function (node) {
var metrics = node.getCoverageSummary();
this.cw.println('<?xml version="1.0" ?>');
this.cw.println('<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">');
this.xml.openTag('coverage', {
'lines-valid': metrics.lines.total,
'lines-covered': metrics.lines.covered,
'line-rate': metrics.lines.pct / 100.0,
'branches-valid': metrics.branches.total,
'branches-covered': metrics.branches.covered,
'branch-rate': metrics.branches.pct / 100.0,
timestamp: Date.now().toString(),
complexity: '0',
version: '0.1'
});
this.xml.openTag('sources');
this.xml.inlineTag('source', null, this.projectRoot);
this.xml.closeTag('sources');
this.xml.openTag('packages');
};
CoberturaReport.prototype.onSummary = function (node) {
if (node.isRoot()) {
return;
}
var metrics = node.getCoverageSummary(true);
if (!metrics) {
return;
}
this.xml.openTag('package', {
name: asJavaPackage(node),
'line-rate': metrics.lines.pct / 100.0,
'branch-rate': metrics.branches.pct / 100.0
});
this.xml.openTag('classes');
};
CoberturaReport.prototype.onSummaryEnd = function (node) {
if (node.isRoot()) {
return;
}
this.xml.closeTag('classes');
this.xml.closeTag('package');
};
CoberturaReport.prototype.onDetail = function (node) {
var that = this,
fileCoverage = node.getFileCoverage(),
metrics = node.getCoverageSummary(),
branchByLine = fileCoverage.getBranchCoverageByLine(),
fnMap,
lines;
this.xml.openTag('class', {
name: asClassName(node),
filename: path.relative(this.projectRoot, fileCoverage.path),
'line-rate': metrics.lines.pct / 100.0,
'branch-rate': metrics.branches.pct / 100.0
});
this.xml.openTag('methods');
fnMap = fileCoverage.fnMap;
Object.keys(fnMap).forEach(function (k) {
var name = fnMap[k].name,
hits = fileCoverage.f[k];
that.xml.openTag('method', {
name: name,
hits: hits,
signature: '()V' //fake out a no-args void return
});
that.xml.openTag('lines');
//Add the function definition line and hits so that jenkins cobertura plugin records method hits
that.xml.inlineTag('line', {
number: fnMap[k].decl.start.line,
hits: hits
});
that.xml.closeTag('lines');
that.xml.closeTag('method');
});
this.xml.closeTag('methods');
this.xml.openTag('lines');
lines = fileCoverage.getLineCoverage();
Object.keys(lines).forEach(function (k) {
var attrs = {
number: k,
hits: lines[k],
branch: 'false'
},
branchDetail = branchByLine[k];
if (branchDetail) {
attrs.branch = true;
attrs['condition-coverage'] = branchDetail.coverage +
'% (' + branchDetail.covered + '/' + branchDetail.total + ')';
}
that.xml.inlineTag('line', attrs);
});
this.xml.closeTag('lines');
this.xml.closeTag('class');
};
module.exports = CoberturaReport;

227
node_modules/istanbul-reports/lib/html/annotator.js generated vendored Normal file
View File

@@ -0,0 +1,227 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
"use strict";
var InsertionText = require('./insertion-text'),
lt = '\u0001',
gt = '\u0002',
RE_LT = /</g,
RE_GT = />/g,
RE_AMP = /&/g,
RE_lt = /\u0001/g,
RE_gt = /\u0002/g;
function title(str) {
return ' title="' + str + '" ';
}
function customEscape(text) {
text = String(text);
return text.replace(RE_AMP, '&amp;')
.replace(RE_LT, '&lt;')
.replace(RE_GT, '&gt;')
.replace(RE_lt, '<')
.replace(RE_gt, '>');
}
function annotateLines(fileCoverage, structuredText) {
var lineStats = fileCoverage.getLineCoverage();
if (!lineStats) {
return;
}
Object.keys(lineStats).forEach(function (lineNumber) {
var count = lineStats[lineNumber];
if (structuredText[lineNumber]) {
structuredText[lineNumber].covered = count > 0 ? 'yes' : 'no';
structuredText[lineNumber].hits = count;
}
});
}
function annotateStatements(fileCoverage, structuredText) {
var statementStats = fileCoverage.s,
statementMeta = fileCoverage.statementMap;
Object.keys(statementStats).forEach(function (stName) {
var count = statementStats[stName],
meta = statementMeta[stName],
type = count > 0 ? 'yes' : 'no',
startCol = meta.start.column,
endCol = meta.end.column + 1,
startLine = meta.start.line,
endLine = meta.end.line,
openSpan = lt + 'span class="' + (meta.skip ? 'cstat-skip' : 'cstat-no') + '"' + title('statement not covered') + gt,
closeSpan = lt + '/span' + gt,
text;
if (type === 'no' && structuredText[startLine]) {
if (endLine !== startLine) {
endCol = structuredText[startLine].text.originalLength();
}
text = structuredText[startLine].text;
text.wrap(startCol,
openSpan,
startCol < endCol ? endCol : text.originalLength(),
closeSpan);
}
});
}
function annotateFunctions(fileCoverage, structuredText) {
var fnStats = fileCoverage.f,
fnMeta = fileCoverage.fnMap;
if (!fnStats) {
return;
}
Object.keys(fnStats).forEach(function (fName) {
var count = fnStats[fName],
meta = fnMeta[fName],
type = count > 0 ? 'yes' : 'no',
startCol = meta.decl.start.column,
endCol = meta.decl.end.column + 1,
startLine = meta.decl.start.line,
endLine = meta.decl.end.line,
openSpan = lt + 'span class="' + (meta.skip ? 'fstat-skip' : 'fstat-no') + '"' + title('function not covered') + gt,
closeSpan = lt + '/span' + gt,
text;
if (type === 'no' && structuredText[startLine]) {
if (endLine !== startLine) {
endCol = structuredText[startLine].text.originalLength();
}
text = structuredText[startLine].text;
text.wrap(startCol,
openSpan,
startCol < endCol ? endCol : text.originalLength(),
closeSpan);
}
});
}
function annotateBranches(fileCoverage, structuredText) {
var branchStats = fileCoverage.b,
branchMeta = fileCoverage.branchMap;
if (!branchStats) {
return;
}
Object.keys(branchStats).forEach(function (branchName) {
var branchArray = branchStats[branchName],
sumCount = branchArray.reduce(function (p, n) {
return p + n;
}, 0),
metaArray = branchMeta[branchName].locations,
i,
count,
meta,
type,
startCol,
endCol,
startLine,
endLine,
openSpan,
closeSpan,
text;
// only highlight if partial branches are missing or if there is a
// single uncovered branch.
if (sumCount > 0 || (sumCount === 0 && branchArray.length === 1)) {
for (i = 0; i < branchArray.length && i < metaArray.length; i += 1) {
count = branchArray[i];
meta = metaArray[i];
type = count > 0 ? 'yes' : 'no';
startCol = meta.start.column;
endCol = meta.end.column + 1;
startLine = meta.start.line;
endLine = meta.end.line;
openSpan = lt + 'span class="branch-' + i + ' ' +
(meta.skip ? 'cbranch-skip' : 'cbranch-no') + '"'
+ title('branch not covered') + gt;
closeSpan = lt + '/span' + gt;
if (count === 0 && structuredText[startLine]) { //skip branches taken
if (endLine !== startLine) {
endCol = structuredText[startLine].text.originalLength();
}
text = structuredText[startLine].text;
if (branchMeta[branchName].type === 'if') {
// 'if' is a special case
// since the else branch might not be visible, being non-existent
text.insertAt(startCol, lt + 'span class="' +
(meta.skip ? 'skip-if-branch' : 'missing-if-branch') + '"' +
title((i === 0 ? 'if' : 'else') + ' path not taken') + gt +
(i === 0 ? 'I' : 'E') + lt + '/span' + gt, true, false);
} else {
text.wrap(startCol,
openSpan,
startCol < endCol ? endCol : text.originalLength(),
closeSpan);
}
}
}
}
});
}
function annotateSourceCode(fileCoverage, sourceStore) {
var codeArray,
lineCoverageArray;
try {
var sourceText = sourceStore.getSource(fileCoverage.path),
code = sourceText.split(/(?:\r?\n)|\r/),
count = 0,
structured = code.map(function (str) {
count += 1;
return {
line: count,
covered: 'neutral',
hits: 0,
text: new InsertionText(str, true)
};
});
structured.unshift({line: 0, covered: null, text: new InsertionText("")});
annotateLines(fileCoverage, structured);
//note: order is important, since statements typically result in spanning the whole line and doing branches late
//causes mismatched tags
annotateBranches(fileCoverage, structured);
annotateFunctions(fileCoverage, structured);
annotateStatements(fileCoverage, structured);
structured.shift();
codeArray = structured.map(function (item) {
return customEscape(item.text.toString()) || '&nbsp;';
});
lineCoverageArray = structured.map(function (item) {
return {
covered: item.covered,
hits: item.hits > 0 ? item.hits + 'x' : '&nbsp;'
};
});
return {
annotatedCode: codeArray,
lineCoverage: lineCoverageArray,
maxLines: structured.length
};
} catch (ex) {
codeArray = [ ex.message ];
lineCoverageArray = [ { covered: 'no', hits: 0 } ];
String(ex.stack || '').split(/\r?\n/).forEach(function (line) {
codeArray.push(line);
lineCoverageArray.push({ covered: 'no', hits: 0 });
});
return {
annotatedCode: codeArray,
lineCoverage: lineCoverageArray,
maxLines: codeArray.length
};
}
}
module.exports = {
annotateSourceCode: annotateSourceCode
};

223
node_modules/istanbul-reports/lib/html/assets/base.css generated vendored Normal file
View File

@@ -0,0 +1,223 @@
body, html {
margin:0; padding: 0;
height: 100%;
}
body {
font-family: Helvetica Neue, Helvetica, Arial;
font-size: 14px;
color:#333;
}
.small { font-size: 12px; }
*, *:after, *:before {
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
h1 { font-size: 20px; margin: 0;}
h2 { font-size: 14px; }
pre {
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
a { color:#0074D9; text-decoration:none; }
a:hover { text-decoration:underline; }
.strong { font-weight: bold; }
.space-top1 { padding: 10px 0 0 0; }
.pad2y { padding: 20px 0; }
.pad1y { padding: 10px 0; }
.pad2x { padding: 0 20px; }
.pad2 { padding: 20px; }
.pad1 { padding: 10px; }
.space-left2 { padding-left:55px; }
.space-right2 { padding-right:20px; }
.center { text-align:center; }
.clearfix { display:block; }
.clearfix:after {
content:'';
display:block;
height:0;
clear:both;
visibility:hidden;
}
.fl { float: left; }
@media only screen and (max-width:640px) {
.col3 { width:100%; max-width:100%; }
.hide-mobile { display:none!important; }
}
.quiet {
color: #7f7f7f;
color: rgba(0,0,0,0.5);
}
.quiet a { opacity: 0.7; }
.fraction {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-size: 10px;
color: #555;
background: #E8E8E8;
padding: 4px 5px;
border-radius: 3px;
vertical-align: middle;
}
div.path a:link, div.path a:visited { color: #333; }
table.coverage {
border-collapse: collapse;
margin: 10px 0 0 0;
padding: 0;
}
table.coverage td {
margin: 0;
padding: 0;
vertical-align: top;
}
table.coverage td.line-count {
text-align: right;
padding: 0 5px 0 20px;
}
table.coverage td.line-coverage {
text-align: right;
padding-right: 10px;
min-width:20px;
}
table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 100%;
}
.missing-if-branch {
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
}
.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
}
.coverage-summary {
border-collapse: collapse;
width: 100%;
}
.coverage-summary tr { border-bottom: 1px solid #bbb; }
.keyline-all { border: 1px solid #ddd; }
.coverage-summary td, .coverage-summary th { padding: 10px; }
.coverage-summary tbody { border: 1px solid #bbb; }
.coverage-summary td { border-right: 1px solid #bbb; }
.coverage-summary td:last-child { border-right: none; }
.coverage-summary th {
text-align: left;
font-weight: normal;
white-space: nowrap;
}
.coverage-summary th.file { border-right: none !important; }
.coverage-summary th.pct { }
.coverage-summary th.pic,
.coverage-summary th.abs,
.coverage-summary td.pct,
.coverage-summary td.abs { text-align: right; }
.coverage-summary td.file { white-space: nowrap; }
.coverage-summary td.pic { min-width: 120px !important; }
.coverage-summary tfoot td { }
.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
.coverage-summary .sorted .sorter {
background-position: 0 -20px;
}
.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
}
.status-line { height: 10px; }
/* yellow */
.cbranch-no { background: yellow !important; color: #111; }
/* dark red */
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
.low .chart { border:1px solid #C21F39 }
.highlighted,
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
background: #C21F39 !important;
}
/* medium red */
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
/* light red */
.low, .cline-no { background:#FCE1E5 }
/* light green */
.high, .cline-yes { background:rgb(230,245,208) }
/* medium green */
.cstat-yes { background:rgb(161,215,106) }
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }
.medium .chart { border:1px solid #666; }
.medium .cover-fill { background: #666; }
.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }
span.cline-neutral { background: #eaeaea; }
.medium { background: #eaeaea; }
.coverage-summary td.empty {
opacity: .5;
padding-top: 4px;
padding-bottom: 4px;
line-height: 1;
color: #888;
}
.cover-fill, .cover-empty {
display:inline-block;
height: 12px;
}
.chart {
line-height: 0;
}
.cover-empty {
background: white;
}
.cover-full {
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }
.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -48px;
}
.footer, .push {
height: 48px;
}

View File

@@ -0,0 +1,63 @@
var jumpToCode = (function init () {
// Classes of code we would like to highlight
var missingCoverageClasses = [ '.cbranch-no', '.cstat-no', '.fstat-no' ];
// We don't want to select elements that are direct descendants of another match
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
// Selecter that finds elements on the page to which we can jump
var selector = notSelector + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
// The NodeList of matching elements
var missingCoverageElements = document.querySelectorAll(selector);
var currentIndex;
function toggleClass(index) {
missingCoverageElements.item(currentIndex).classList.remove('highlighted');
missingCoverageElements.item(index).classList.add('highlighted');
}
function makeCurrent(index) {
toggleClass(index);
currentIndex = index;
missingCoverageElements.item(index)
.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });
}
function goToPrevious() {
var nextIndex = 0;
if (typeof currentIndex !== 'number' || currentIndex === 0) {
nextIndex = missingCoverageElements.length - 1;
} else if (missingCoverageElements.length > 1) {
nextIndex = currentIndex - 1;
}
makeCurrent(nextIndex);
}
function goToNext() {
var nextIndex = 0;
if (typeof currentIndex === 'number' && currentIndex < (missingCoverageElements.length - 1)) {
nextIndex = currentIndex + 1;
}
makeCurrent(nextIndex);
}
return function jump(event) {
switch (event.which) {
case 78: // n
case 74: // j
goToNext();
break;
case 66: // b
case 75: // k
case 80: // p
goToPrevious();
break;
}
};
}());
window.addEventListener('keydown', jumpToCode);

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

158
node_modules/istanbul-reports/lib/html/assets/sorter.js generated vendored Normal file
View File

@@ -0,0 +1,158 @@
var addSorting = (function () {
"use strict";
var cols,
currentSort = {
index: 0,
desc: false
};
// returns the summary table element
function getTable() { return document.querySelector('.coverage-summary'); }
// returns the thead element of the summary table
function getTableHeader() { return getTable().querySelector('thead tr'); }
// returns the tbody element of the summary table
function getTableBody() { return getTable().querySelector('tbody'); }
// returns the th element for nth column
function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; }
// loads all columns
function loadColumns() {
var colNodes = getTableHeader().querySelectorAll('th'),
colNode,
cols = [],
col,
i;
for (i = 0; i < colNodes.length; i += 1) {
colNode = colNodes[i];
col = {
key: colNode.getAttribute('data-col'),
sortable: !colNode.getAttribute('data-nosort'),
type: colNode.getAttribute('data-type') || 'string'
};
cols.push(col);
if (col.sortable) {
col.defaultDescSort = col.type === 'number';
colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>';
}
}
return cols;
}
// attaches a data attribute to every tr element with an object
// of data values keyed by column name
function loadRowData(tableRow) {
var tableCols = tableRow.querySelectorAll('td'),
colNode,
col,
data = {},
i,
val;
for (i = 0; i < tableCols.length; i += 1) {
colNode = tableCols[i];
col = cols[i];
val = colNode.getAttribute('data-value');
if (col.type === 'number') {
val = Number(val);
}
data[col.key] = val;
}
return data;
}
// loads all row data
function loadData() {
var rows = getTableBody().querySelectorAll('tr'),
i;
for (i = 0; i < rows.length; i += 1) {
rows[i].data = loadRowData(rows[i]);
}
}
// sorts the table using the data for the ith column
function sortByIndex(index, desc) {
var key = cols[index].key,
sorter = function (a, b) {
a = a.data[key];
b = b.data[key];
return a < b ? -1 : a > b ? 1 : 0;
},
finalSorter = sorter,
tableBody = document.querySelector('.coverage-summary tbody'),
rowNodes = tableBody.querySelectorAll('tr'),
rows = [],
i;
if (desc) {
finalSorter = function (a, b) {
return -1 * sorter(a, b);
};
}
for (i = 0; i < rowNodes.length; i += 1) {
rows.push(rowNodes[i]);
tableBody.removeChild(rowNodes[i]);
}
rows.sort(finalSorter);
for (i = 0; i < rows.length; i += 1) {
tableBody.appendChild(rows[i]);
}
}
// removes sort indicators for current column being sorted
function removeSortIndicators() {
var col = getNthColumn(currentSort.index),
cls = col.className;
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
col.className = cls;
}
// adds sort indicators for current column being sorted
function addSortIndicators() {
getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted';
}
// adds event listeners for all sorter widgets
function enableUI() {
var i,
el,
ithSorter = function ithSorter(i) {
var col = cols[i];
return function () {
var desc = col.defaultDescSort;
if (currentSort.index === i) {
desc = !currentSort.desc;
}
sortByIndex(i, desc);
removeSortIndicators();
currentSort.index = i;
currentSort.desc = desc;
addSortIndicators();
};
};
for (i =0 ; i < cols.length; i += 1) {
if (cols[i].sortable) {
// add the click event handler on the th so users
// dont have to click on those tiny arrows
el = getNthColumn(i).querySelector('.sorter').parentElement;
if (el.addEventListener) {
el.addEventListener('click', ithSorter(i));
} else {
el.attachEvent('onclick', ithSorter(i));
}
}
}
}
// adds sorting functionality to the UI
return function () {
if (!getTable()) {
return;
}
cols = loadColumns();
loadData(cols);
addSortIndicators();
enableUI();
};
})();
window.addEventListener('load', addSorting);

View File

@@ -0,0 +1 @@
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}

File diff suppressed because one or more lines are too long

80
node_modules/istanbul-reports/lib/html/helpers.js generated vendored Normal file
View File

@@ -0,0 +1,80 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
function registerHelpers(handlebars) {
handlebars.registerHelper('show_picture', function (opts) {
var num = Number(opts.fn(this)),
rest,
cls = '';
if (isFinite(num)) {
if (num === 100) {
cls = ' cover-full';
}
num = Math.floor(num);
rest = 100 - num;
return '<div class="cover-fill' + cls + '" style="width: ' + num + '%;"></div>' +
'<div class="cover-empty" style="width:' + rest + '%;"></div>';
} else {
return '';
}
});
handlebars.registerHelper('if_has_ignores', function (metrics, opts) {
return (metrics.statements.skipped +
metrics.functions.skipped +
metrics.branches.skipped) === 0 ? '' : opts.fn(this);
});
handlebars.registerHelper('show_ignores', function (metrics) {
var statements = metrics.statements.skipped,
functions = metrics.functions.skipped,
branches = metrics.branches.skipped,
result;
if (statements === 0 && functions === 0 && branches === 0) {
return '<span class="ignore-none">none</span>';
}
result = [];
if (statements > 0) {
result.push(statements === 1 ? '1 statement' : statements + ' statements');
}
if (functions > 0) {
result.push(functions === 1 ? '1 function' : functions + ' functions');
}
if (branches > 0) {
result.push(branches === 1 ? '1 branch' : branches + ' branches');
}
return result.join(', ');
});
handlebars.registerHelper('show_lines', function (opts) {
var maxLines = Number(opts.fn(this)),
i,
array = [];
for (i = 0; i < maxLines; i += 1) {
var nextNum = i + 1;
array[i] = "<a name='L" + nextNum + "'></a><a href='#L" + nextNum + "'>" + nextNum + "</a>";
}
return array.join('\n');
});
handlebars.registerHelper('show_line_execution_counts', function (context) {
var array = [];
context.forEach(function (data) {
array.push('<span class="cline-any cline-' + data.covered + '">' + data.hits + '</span>');
});
return array.join('\n');
});
handlebars.registerHelper('show_code', function (context /*, opts */) {
return context.join('\n');
});
}
module.exports = {
registerHelpers: registerHelpers
};

244
node_modules/istanbul-reports/lib/html/index.js generated vendored Normal file
View File

@@ -0,0 +1,244 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
/*jshint maxlen: 300 */
var fs = require('fs'),
path = require('path'),
handlebars = require('handlebars').create(),
annotator = require('./annotator'),
helpers = require('./helpers'),
templateFor = function (name) {
return handlebars.compile(fs.readFileSync(path.resolve(__dirname, 'templates', name + '.txt'), 'utf8'));
},
headerTemplate = templateFor('head'),
footerTemplate = templateFor('foot'),
detailTemplate = handlebars.compile([
'<tr>',
'<td class="line-count quiet">{{#show_lines}}{{maxLines}}{{/show_lines}}</td>',
'<td class="line-coverage quiet">{{#show_line_execution_counts lineCoverage}}{{maxLines}}{{/show_line_execution_counts}}</td>',
'<td class="text"><pre class="prettyprint lang-js">{{#show_code annotatedCode}}{{/show_code}}</pre></td>',
'</tr>\n'
].join('')),
summaryTableHeader = [
'<div class="pad1">',
'<table class="coverage-summary">',
'<thead>',
'<tr>',
' <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>',
' <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>',
' <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>',
' <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>',
' <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>',
' <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>',
' <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>',
' <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>',
' <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>',
' <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>',
'</tr>',
'</thead>',
'<tbody>'
].join('\n'),
summaryLineTemplate = handlebars.compile([
'<tr>',
'<td class="file {{reportClasses.statements}}" data-value="{{file}}"><a href="{{output}}">{{file}}</a></td>',
'<td data-value="{{metrics.statements.pct}}" class="pic {{reportClasses.statements}}"><div class="chart">{{#show_picture}}{{metrics.statements.pct}}{{/show_picture}}</div></td>',
'<td data-value="{{metrics.statements.pct}}" class="pct {{reportClasses.statements}}">{{metrics.statements.pct}}%</td>',
'<td data-value="{{metrics.statements.total}}" class="abs {{reportClasses.statements}}">{{metrics.statements.covered}}/{{metrics.statements.total}}</td>',
'<td data-value="{{metrics.branches.pct}}" class="pct {{reportClasses.branches}}">{{metrics.branches.pct}}%</td>',
'<td data-value="{{metrics.branches.total}}" class="abs {{reportClasses.branches}}">{{metrics.branches.covered}}/{{metrics.branches.total}}</td>',
'<td data-value="{{metrics.functions.pct}}" class="pct {{reportClasses.functions}}">{{metrics.functions.pct}}%</td>',
'<td data-value="{{metrics.functions.total}}" class="abs {{reportClasses.functions}}">{{metrics.functions.covered}}/{{metrics.functions.total}}</td>',
'<td data-value="{{metrics.lines.pct}}" class="pct {{reportClasses.lines}}">{{metrics.lines.pct}}%</td>',
'<td data-value="{{metrics.lines.total}}" class="abs {{reportClasses.lines}}">{{metrics.lines.covered}}/{{metrics.lines.total}}</td>',
'</tr>\n'
].join('\n\t')),
summaryTableFooter = [
'</tbody>',
'</table>',
'</div>'
].join('\n'),
emptyClasses = {
statements: 'empty',
lines: 'empty',
functions: 'empty',
branches: 'empty'
};
helpers.registerHelpers(handlebars);
var standardLinkMapper = {
getPath: function (node) {
if (typeof node === 'string') {
return node;
}
var filePath = node.getQualifiedName();
if (node.isSummary()) {
if (filePath !== '') {
filePath += "/index.html";
} else {
filePath = "index.html";
}
} else {
filePath += ".html";
}
return filePath;
},
relativePath: function (source, target) {
var targetPath = this.getPath(target),
sourcePath = path.dirname(this.getPath(source));
return path.relative(sourcePath, targetPath);
},
assetPath: function (node, name) {
return this.relativePath(this.getPath(node), name);
}
};
function getBreadcrumbHtml(node, linkMapper) {
var parent = node.getParent(),
nodePath = [],
linkPath;
while (parent) {
nodePath.push(parent);
parent = parent.getParent();
}
linkPath = nodePath.map(function (ancestor) {
var target = linkMapper.relativePath(node, ancestor),
name = ancestor.getRelativeName() || 'All files';
return '<a href="' + target + '">' + name + '</a>';
});
linkPath.reverse();
return linkPath.length > 0 ? linkPath.join(' / ') + ' ' +
node.getRelativeName() : 'All files';
}
function fillTemplate(node, templateData, linkMapper, context) {
var summary = node.getCoverageSummary();
templateData.entity = node.getQualifiedName() || 'All files';
templateData.metrics = summary;
templateData.reportClass = context.classForPercent('statements', summary.statements.pct);
templateData.pathHtml = getBreadcrumbHtml(node, linkMapper);
templateData.base = {
css: linkMapper.assetPath(node, 'base.css')
};
templateData.sorter = {
js: linkMapper.assetPath(node, 'sorter.js'),
image: linkMapper.assetPath(node, 'sort-arrow-sprite.png')
};
templateData.blockNavigation = {
js: linkMapper.assetPath(node, 'block-navigation.js'),
};
templateData.prettify = {
js: linkMapper.assetPath(node, 'prettify.js'),
css: linkMapper.assetPath(node, 'prettify.css')
};
}
function HtmlReport(opts) {
this.verbose = opts.verbose;
this.linkMapper = opts.linkMapper || standardLinkMapper;
this.subdir = opts.subdir || '';
this.date = Date();
this.skipEmpty = opts.skipEmpty;
}
HtmlReport.prototype.getTemplateData = function () {
return { datetime: this.date };
};
HtmlReport.prototype.getWriter = function (context) {
if (!this.subdir) {
return context.writer;
}
return context.writer.writerForDir(this.subdir);
};
HtmlReport.prototype.onStart = function (root, context) {
var that = this,
copyAssets = function (subdir, writer) {
var srcDir = path.resolve(__dirname, 'assets', subdir);
fs.readdirSync(srcDir).forEach(function (f) {
var resolvedSource = path.resolve(srcDir, f),
resolvedDestination = '.',
stat = fs.statSync(resolvedSource),
dest;
if (stat.isFile()) {
dest = resolvedDestination + '/' + f;
if (this.verbose) {
console.log('Write asset: ' + dest);
}
writer.copyFile(resolvedSource, dest);
}
});
};
['.', 'vendor'].forEach(function (subdir) {
copyAssets(subdir, that.getWriter(context));
});
};
function fixPct(metrics) {
Object.keys(emptyClasses).forEach(function(key) {
metrics[key].pct = 0;
});
return metrics;
}
HtmlReport.prototype.onSummary = function (node, context) {
var linkMapper = this.linkMapper,
templateData = this.getTemplateData(),
children = node.getChildren(),
skipEmpty = this.skipEmpty,
cw;
fillTemplate(node, templateData, linkMapper, context);
cw = this.getWriter(context).writeFile(linkMapper.getPath(node));
cw.write(headerTemplate(templateData));
cw.write(summaryTableHeader);
children.forEach(function (child) {
var metrics = child.getCoverageSummary(),
isEmpty = metrics.isEmpty();
if (skipEmpty && isEmpty) { return; }
var reportClasses = isEmpty ? emptyClasses : {
statements: context.classForPercent('statements', metrics.statements.pct),
lines: context.classForPercent('lines', metrics.lines.pct),
functions: context.classForPercent('functions', metrics.functions.pct),
branches: context.classForPercent('branches', metrics.branches.pct)
},
data = {
metrics: isEmpty ? fixPct(metrics) : metrics,
reportClasses: reportClasses,
file: child.getRelativeName(),
output: linkMapper.relativePath(node, child)
};
cw.write(summaryLineTemplate(data) + '\n');
});
cw.write(summaryTableFooter);
cw.write(footerTemplate(templateData));
cw.close();
};
HtmlReport.prototype.onDetail = function (node, context) {
var linkMapper = this.linkMapper,
templateData = this.getTemplateData(),
cw;
fillTemplate(node, templateData, linkMapper, context);
cw = this.getWriter(context).writeFile(linkMapper.getPath(node));
cw.write(headerTemplate(templateData));
cw.write('<pre><table class="coverage">\n');
cw.write(detailTemplate(annotator.annotateSourceCode(node.getFileCoverage(), context)));
cw.write('</table></pre>\n');
cw.write(footerTemplate(templateData));
cw.close();
};
module.exports = HtmlReport;

View File

@@ -0,0 +1,108 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
function InsertionText(text, consumeBlanks) {
this.text = text;
this.origLength = text.length;
this.offsets = [];
this.consumeBlanks = consumeBlanks;
this.startPos = this.findFirstNonBlank();
this.endPos = this.findLastNonBlank();
}
var WHITE_RE = /[ \f\n\r\t\v\u00A0\u2028\u2029]/;
InsertionText.prototype = {
findFirstNonBlank: function () {
var pos = -1,
text = this.text,
len = text.length,
i;
for (i = 0; i < len; i += 1) {
if (!text.charAt(i).match(WHITE_RE)) {
pos = i;
break;
}
}
return pos;
},
findLastNonBlank: function () {
var text = this.text,
len = text.length,
pos = text.length + 1,
i;
for (i = len - 1; i >= 0; i -= 1) {
if (!text.charAt(i).match(WHITE_RE)) {
pos = i;
break;
}
}
return pos;
},
originalLength: function () {
return this.origLength;
},
insertAt: function (col, str, insertBefore, consumeBlanks) {
consumeBlanks = typeof consumeBlanks === 'undefined' ? this.consumeBlanks : consumeBlanks;
col = col > this.originalLength() ? this.originalLength() : col;
col = col < 0 ? 0 : col;
if (consumeBlanks) {
if (col <= this.startPos) {
col = 0;
}
if (col > this.endPos) {
col = this.origLength;
}
}
var len = str.length,
offset = this.findOffset(col, len, insertBefore),
realPos = col + offset,
text = this.text;
this.text = text.substring(0, realPos) + str + text.substring(realPos);
return this;
},
findOffset: function (pos, len, insertBefore) {
var offsets = this.offsets,
offsetObj,
cumulativeOffset = 0,
i;
for (i = 0; i < offsets.length; i += 1) {
offsetObj = offsets[i];
if (offsetObj.pos < pos || (offsetObj.pos === pos && !insertBefore)) {
cumulativeOffset += offsetObj.len;
}
if (offsetObj.pos >= pos) {
break;
}
}
if (offsetObj && offsetObj.pos === pos) {
offsetObj.len += len;
} else {
offsets.splice(i, 0, { pos: pos, len: len });
}
return cumulativeOffset;
},
wrap: function (startPos, startText, endPos, endText, consumeBlanks) {
this.insertAt(startPos, startText, true, consumeBlanks);
this.insertAt(endPos, endText, false, consumeBlanks);
return this;
},
wrapLine: function (startText, endText) {
this.wrap(0, startText, this.originalLength(), endText);
},
toString: function () {
return this.text;
}
};
module.exports = InsertionText;

View File

@@ -0,0 +1,21 @@
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at {{datetime}}
</div>
</div>
{{#if prettify}}
<script src="{{prettify.js}}"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
{{/if}}
<script src="{{sorter.js}}"></script>
<script src="{{blockNavigation.js}}"></script>
</body>
</html>

View File

@@ -0,0 +1,63 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for {{entity}}</title>
<meta charset="utf-8" />
{{#if prettify}}
<link rel="stylesheet" href="{{prettify.css}}" />
{{/if}}
<link rel="stylesheet" href="{{base.css}}" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url({{sorter.image}});
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>
{{{pathHtml}}}
</h1>
<div class='clearfix'>
{{#with metrics.statements}}
<div class='fl pad1y space-right2'>
<span class="strong">{{pct}}% </span>
<span class="quiet">Statements</span>
<span class='fraction'>{{covered}}/{{total}}</span>
</div>
{{/with}}
{{#with metrics.branches}}
<div class='fl pad1y space-right2'>
<span class="strong">{{pct}}% </span>
<span class="quiet">Branches</span>
<span class='fraction'>{{covered}}/{{total}}</span>
</div>
{{/with}}
{{#with metrics.functions}}
<div class='fl pad1y space-right2'>
<span class="strong">{{pct}}% </span>
<span class="quiet">Functions</span>
<span class='fraction'>{{covered}}/{{total}}</span>
</div>
{{/with}}
{{#with metrics.lines}}
<div class='fl pad1y space-right2'>
<span class="strong">{{pct}}% </span>
<span class="quiet">Lines</span>
<span class='fraction'>{{covered}}/{{total}}</span>
</div>
{{/with}}
{{#if_has_ignores metrics}}
<div class='fl pad1y'>
<span class="strong">{{#show_ignores metrics}}{{/show_ignores}}</span>
<span class="quiet">Ignored</span> &nbsp;&nbsp;&nbsp;&nbsp;
</div>
{{/if_has_ignores}}
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line {{reportClass}}'></div>

View File

@@ -0,0 +1,48 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
"use strict";
function JsonSummaryReport(opts) {
this.file = opts.file || 'coverage-summary.json';
this.contentWriter = null;
this.first = true;
}
JsonSummaryReport.prototype.onStart = function (root, context) {
this.contentWriter = context.writer.writeFile(this.file);
this.contentWriter.write("{");
};
JsonSummaryReport.prototype.writeSummary = function (filePath, sc) {
var cw = this.contentWriter;
if (this.first) {
this.first = false;
} else {
cw.write(",");
}
cw.write(JSON.stringify(filePath));
cw.write(': ');
cw.write(JSON.stringify(sc));
cw.println("");
};
JsonSummaryReport.prototype.onSummary = function (node) {
if (!node.isRoot()) {
return;
}
this.writeSummary("total", node.getCoverageSummary());
};
JsonSummaryReport.prototype.onDetail = function (node) {
this.writeSummary(node.getFileCoverage().path, node.getCoverageSummary());
};
JsonSummaryReport.prototype.onEnd = function () {
var cw = this.contentWriter;
cw.println("}");
cw.close();
};
module.exports = JsonSummaryReport;

39
node_modules/istanbul-reports/lib/json/index.js generated vendored Normal file
View File

@@ -0,0 +1,39 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
"use strict";
function JsonReport(opts) {
this.file = opts.file || 'coverage-final.json';
this.first = true;
}
JsonReport.prototype.onStart = function (root, context) {
this.contentWriter = context.writer.writeFile(this.file);
this.contentWriter.write("{");
};
JsonReport.prototype.onDetail = function (node) {
var fc = node.getFileCoverage(),
key = fc.path,
cw = this.contentWriter;
if (this.first) {
this.first = false;
} else {
cw.write(",");
}
cw.write(JSON.stringify(key));
cw.write(': ');
cw.write(JSON.stringify(fc));
cw.println("");
};
JsonReport.prototype.onEnd = function () {
var cw = this.contentWriter;
cw.println("}");
cw.close();
};
module.exports = JsonReport;

29
node_modules/istanbul-reports/lib/lcov/index.js generated vendored Normal file
View File

@@ -0,0 +1,29 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var LcovOnlyReport = require('../lcovonly'),
HtmlReport = require('../html');
function LcovReport() {
this.lcov = new LcovOnlyReport({file: 'lcov.info'});
this.html = new HtmlReport({ subdir: 'lcov-report'});
}
['Start', 'End', 'Summary', 'SummaryEnd', 'Detail'].forEach(function (what) {
var meth = 'on' + what;
LcovReport.prototype[meth] = function () {
var args = Array.prototype.slice.call(arguments),
lcov = this.lcov,
html = this.html;
if (lcov[meth]) {
lcov[meth].apply(lcov, args);
}
if (html[meth]) {
html[meth].apply(html, args);
}
};
});
module.exports = LcovReport;

69
node_modules/istanbul-reports/lib/lcovonly/index.js generated vendored Normal file
View File

@@ -0,0 +1,69 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
"use strict";
function LcovOnlyReport(opts) {
this.file = opts.file || 'lcov.info';
this.contentWriter = null;
}
LcovOnlyReport.prototype.onStart = function (root, context) {
this.contentWriter = context.writer.writeFile(this.file);
};
LcovOnlyReport.prototype.onDetail = function (node) {
var fc = node.getFileCoverage(),
writer = this.contentWriter,
functions = fc.f,
functionMap = fc.fnMap,
lines = fc.getLineCoverage(),
branches = fc.b,
branchMap = fc.branchMap,
summary = node.getCoverageSummary();
writer.println('TN:'); //no test name
writer.println('SF:' + fc.path);
Object.keys(functions).forEach(function (key) {
var meta = functionMap[key];
writer.println('FN:' + [meta.decl.start.line, meta.name].join(','));
});
writer.println('FNF:' + summary.functions.total);
writer.println('FNH:' + summary.functions.covered);
Object.keys(functions).forEach(function (key) {
var stats = functions[key],
meta = functionMap[key];
writer.println('FNDA:' + [stats, meta.name].join(','));
});
Object.keys(lines).forEach(function (key) {
var stat = lines[key];
writer.println('DA:' + [key, stat].join(','));
});
writer.println('LF:' + summary.lines.total);
writer.println('LH:' + summary.lines.covered);
Object.keys(branches).forEach(function (key) {
var branchArray = branches[key],
meta = branchMap[key],
line = meta.loc.start.line,
i = 0;
branchArray.forEach(function (b) {
writer.println('BRDA:' + [line, key, i, b].join(','));
i += 1;
});
});
writer.println('BRF:' + summary.branches.total);
writer.println('BRH:' + summary.branches.covered);
writer.println('end_of_record');
};
LcovOnlyReport.prototype.onEnd = function () {
this.contentWriter.close();
};
module.exports = LcovOnlyReport;

9
node_modules/istanbul-reports/lib/none/index.js generated vendored Normal file
View File

@@ -0,0 +1,9 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
function NoneReport() {
}
module.exports = NoneReport;

45
node_modules/istanbul-reports/lib/teamcity/index.js generated vendored Normal file
View File

@@ -0,0 +1,45 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
"use strict";
function TeamcityReport(opts) {
opts = opts || {};
this.file = opts.file || null;
this.blockName = opts.blockName || 'Code Coverage Summary';
}
function lineForKey(value, teamcityVar) {
return '##teamcity[buildStatisticValue key=\'' + teamcityVar + '\' value=\'' + value + '\']';
}
TeamcityReport.prototype.onStart = function (node, context) {
var metrics = node.getCoverageSummary(),
cw;
cw = context.writer.writeFile(this.file);
cw.println('');
cw.println('##teamcity[blockOpened name=\''+ this.blockName +'\']');
//Statements Covered
cw.println(lineForKey(metrics.statements.covered, 'CodeCoverageAbsBCovered'));
cw.println(lineForKey(metrics.statements.total, 'CodeCoverageAbsBTotal'));
//Branches Covered
cw.println(lineForKey(metrics.branches.covered, 'CodeCoverageAbsRCovered'));
cw.println(lineForKey(metrics.branches.total, 'CodeCoverageAbsRTotal'));
//Functions Covered
cw.println(lineForKey(metrics.functions.covered, 'CodeCoverageAbsMCovered'));
cw.println(lineForKey(metrics.functions.total, 'CodeCoverageAbsMTotal'));
//Lines Covered
cw.println(lineForKey(metrics.lines.covered, 'CodeCoverageAbsLCovered'));
cw.println(lineForKey(metrics.lines.total, 'CodeCoverageAbsLTotal'));
cw.println('##teamcity[blockClosed name=\''+ this.blockName +'\']');
cw.close();
};
module.exports = TeamcityReport;

14
node_modules/istanbul-reports/lib/text-lcov/index.js generated vendored Normal file
View File

@@ -0,0 +1,14 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var util = require('util'),
LcovOnly = require('../lcovonly');
function TextLcov(opts) {
opts.file = '-';
LcovOnly.call(this, opts);
}
util.inherits(TextLcov, LcovOnly);
module.exports = TextLcov;

View File

@@ -0,0 +1,49 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
"use strict";
function TextSummaryReport(opts) {
opts = opts || {};
this.file = opts.file || null;
}
function lineForKey(summary, key) {
var metrics = summary[key],
skipped,
result;
key = key.substring(0, 1).toUpperCase() + key.substring(1);
if (key.length < 12) {
key += ' '.substring(0, 12 - key.length);
}
result = [key, ':', metrics.pct + '%', '(', metrics.covered + '/' + metrics.total, ')'].join(' ');
skipped = metrics.skipped;
if (skipped > 0) {
result += ', ' + skipped + ' ignored';
}
return result;
}
TextSummaryReport.prototype.onStart = function (node, context) {
var summary = node.getCoverageSummary(),
cw,
printLine = function (key) {
var str = lineForKey(summary, key),
clazz = context.classForPercent(key, summary[key].pct);
cw.println(cw.colorize(str, clazz));
};
cw = context.writer.writeFile(this.file);
cw.println('');
cw.println('=============================== Coverage summary ===============================');
printLine('statements');
printLine('branches');
printLine('functions');
printLine('lines');
cw.println('================================================================================');
cw.close();
};
module.exports = TextSummaryReport;

201
node_modules/istanbul-reports/lib/text/index.js generated vendored Normal file
View File

@@ -0,0 +1,201 @@
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
"use strict";
var PCT_COLS = 9,
MISSING_COL = 18,
TAB_SIZE = 1,
DELIM = ' |',
COL_DELIM = '-|';
function padding(num, ch) {
var str = '',
i;
ch = ch || ' ';
for (i = 0; i < num; i += 1) {
str += ch;
}
return str;
}
function fill(str, width, right, tabs) {
tabs = tabs || 0;
str = String(str);
var leadingSpaces = tabs * TAB_SIZE,
remaining = width - leadingSpaces,
leader = padding(leadingSpaces),
fmtStr = '',
fillStr,
strlen = str.length;
if (remaining > 0) {
if (remaining >= strlen) {
fillStr = padding(remaining - strlen);
fmtStr = right ? fillStr + str : str + fillStr;
} else {
fmtStr = str.substring(strlen - remaining);
fmtStr = '... ' + fmtStr.substring(4);
}
}
return leader + fmtStr;
}
function formatName(name, maxCols, level) {
return fill(name, maxCols, false, level);
}
function formatPct(pct, width) {
return fill(pct, width || PCT_COLS, true, 0);
}
function nodeName(node) {
return node.getRelativeName() || 'All files';
}
function depthFor(node) {
var ret = 0;
node = node.getParent();
while (node) {
ret += 1;
node = node.getParent();
}
return ret;
}
function findNameWidth(node, context) {
var last = 0,
compareWidth = function (node) {
var depth = depthFor(node),
idealWidth = TAB_SIZE * depth + nodeName(node).length;
if (idealWidth > last) {
last = idealWidth;
}
},
visitor = {
onSummary: function (node) {
compareWidth(node);
},
onDetail: function (node) {
compareWidth(node);
}
};
node.visit(context.getVisitor(visitor));
return last;
}
function makeLine(nameWidth) {
var name = padding(nameWidth, '-'),
pct = padding(PCT_COLS, '-'),
elements = [];
elements.push(name);
elements.push(pct);
elements.push(pct);
elements.push(pct);
elements.push(pct);
elements.push(padding(MISSING_COL, '-'));
return elements.join(COL_DELIM) + COL_DELIM;
}
function tableHeader(maxNameCols) {
var elements = [];
elements.push(formatName('File', maxNameCols, 0));
elements.push(formatPct('% Stmts'));
elements.push(formatPct('% Branch'));
elements.push(formatPct('% Funcs'));
elements.push(formatPct('% Lines'));
elements.push(formatPct('Uncovered Line #s', MISSING_COL));
return elements.join(' |') + ' |';
}
function missingLines (node, colorizer) {
var missingLines = node.isSummary() ? [] : node.getFileCoverage().getUncoveredLines();
return colorizer(formatPct(missingLines.join(','), MISSING_COL), 'low');
}
function missingBranches (node, colorizer) {
var branches = node.isSummary() ? {} : node.getFileCoverage().getBranchCoverageByLine(),
missingLines = Object.keys(branches).filter(function (key) {
return branches[key].coverage < 100;
}).map(function (key) {
return key;
});
return colorizer(formatPct(missingLines.join(','), MISSING_COL), 'medium');
}
function tableRow(node, context, colorizer, maxNameCols, level, skipEmpty) {
var name = nodeName(node),
metrics = node.getCoverageSummary(),
isEmpty = metrics.isEmpty();
if (skipEmpty && isEmpty) { return ''; }
var mm = {
statements: isEmpty ? 0 : metrics.statements.pct,
branches: isEmpty ? 0 : metrics.branches.pct,
functions: isEmpty ? 0 : metrics.functions.pct,
lines: isEmpty ? 0 : metrics.lines.pct,
},
colorize = isEmpty ? function(str){ return str; } : function (str, key) {
return colorizer(str, context.classForPercent(key, mm[key]));
},
elements = [];
elements.push(colorize(formatName(name, maxNameCols, level),'statements'));
elements.push(colorize(formatPct(mm.statements),'statements'));
elements.push(colorize(formatPct(mm.branches), 'branches'));
elements.push(colorize(formatPct(mm.functions), 'functions'));
elements.push(colorize(formatPct(mm.lines), 'lines'));
if (mm.lines === 100) {
elements.push(missingBranches(node, colorizer));
} else {
elements.push(missingLines(node, colorizer));
}
return elements.join(DELIM) + DELIM;
}
function TextReport(opts) {
opts = opts || {};
this.file = opts.file || null;
this.maxCols = opts.maxCols || 0;
this.cw = null;
this.skipEmpty = opts.skipEmpty;
}
TextReport.prototype.onStart = function (root, context) {
var line,
statsWidth = 4 * (PCT_COLS + 2) + MISSING_COL,
maxRemaining;
this.cw = context.writer.writeFile(this.file);
this.nameWidth = findNameWidth(root, context);
if (this.maxCols > 0) {
maxRemaining = this.maxCols - statsWidth - 2;
if (this.nameWidth > maxRemaining) {
this.nameWidth = maxRemaining;
}
}
line = makeLine(this.nameWidth);
this.cw.println(line);
this.cw.println(tableHeader(this.nameWidth));
this.cw.println(line);
};
TextReport.prototype.onSummary = function (node, context) {
var nodeDepth = depthFor(node);
var row = tableRow(node, context, this.cw.colorize.bind(this.cw),this.nameWidth, nodeDepth, this.skipEmpty);
if (row) { this.cw.println(row); }
};
TextReport.prototype.onDetail = function (node, context) {
return this.onSummary(node, context);
};
TextReport.prototype.onEnd = function () {
this.cw.println(makeLine(this.nameWidth));
this.cw.close();
};
module.exports = TextReport;

104
node_modules/istanbul-reports/package.json generated vendored Normal file
View File

@@ -0,0 +1,104 @@
{
"_args": [
[
"istanbul-reports@^1.3.0",
"/home/bernhard/freifunk-app/node_modules/istanbul-api"
]
],
"_from": "istanbul-reports@>=1.3.0 <2.0.0",
"_id": "istanbul-reports@1.3.0",
"_inCache": true,
"_installable": true,
"_location": "/istanbul-reports",
"_nodeVersion": "8.8.1",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/istanbul-reports_1.3.0_1520633656601_0.0046326192783465725"
},
"_npmUser": {
"email": "ben@npmjs.com",
"name": "bcoe"
},
"_npmVersion": "5.4.2",
"_phantomChildren": {},
"_requested": {
"name": "istanbul-reports",
"raw": "istanbul-reports@^1.3.0",
"rawSpec": "^1.3.0",
"scope": null,
"spec": ">=1.3.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/istanbul-api"
],
"_resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz",
"_shasum": "2f322e81e1d9520767597dca3c20a0cce89a3554",
"_shrinkwrap": null,
"_spec": "istanbul-reports@^1.3.0",
"_where": "/home/bernhard/freifunk-app/node_modules/istanbul-api",
"author": {
"email": "kananthmail-github@yahoo.com",
"name": "Krishnan Anantheswaran"
},
"bugs": {
"url": "https://github.com/istanbuljs/istanbuljs/issues"
},
"dependencies": {
"handlebars": "^4.0.3"
},
"description": "istanbul reports",
"devDependencies": {
"chai": "^3.5.0",
"is-windows": "^1.0.1",
"istanbul-lib-coverage": "^1.2.0",
"istanbul-lib-report": "^1.1.4",
"jshint": "^2.8.0",
"mocha": "^3.1.2"
},
"directories": {},
"dist": {
"fileCount": 28,
"integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==",
"shasum": "2f322e81e1d9520767597dca3c20a0cce89a3554",
"tarball": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz",
"unpackedSize": 87807
},
"files": [
"index.js",
"lib"
],
"homepage": "https://github.com/istanbuljs/istanbuljs",
"keywords": [
"istanbul",
"reports"
],
"license": "BSD-3-Clause",
"main": "index.js",
"maintainers": [
{
"name": "bcoe",
"email": "ben@npmjs.com"
},
{
"name": "gotwarlost",
"email": "kananthmail-github@yahoo.com"
},
{
"name": "jakxz",
"email": "jgkurian@me.com"
}
],
"name": "istanbul-reports",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git"
},
"scripts": {
"pretest": "jshint --exclude=**/prettify.js index.js lib/ test/",
"test": "mocha --recursive"
},
"version": "1.3.0"
}