New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

semicov

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

semicov - npm Package Compare versions

Comparing version 0.0.1 to 0.1.0

assets/bootstrap.css

109

index.js

@@ -6,5 +6,9 @@ var Module = require('module');

exports.addCoverage = function addCoverage(code, filename) {
filename = filename.replace(/\\/g, '\\\\');
if (!~filename.indexOf(addCoverage.subdir)) {
return code;
}
if (process.env.COVERAGE && !~filename.indexOf(process.env.COVERAGE)) {
return code;
}
var lines = code.split('\n');

@@ -28,3 +32,6 @@

exports.init = function init(subdir) {
var projectName;
exports.init = function init(subdir, name) {
projectName = name;
if (process.env.NOCOV || global.__cov) return;

@@ -71,20 +78,22 @@ if (!subdir) {

total_lines += cnt;
var html = '<div class="row">';
var html = '<div id="' + id + '" class="file"><div class="row" style="margin-left: 30px;">';
html += '<div class="span5">';
html += '<a href="#' + id +
'" class="filename" name="' + id +
'" onclick="var el = document.getElementById(\'' + id +
'\'); el.style.display = el.style.display ? \'\' : \'none\';">' + shortFileName +
'" class="filename trigger" name="' + id + '"' +
'>' + shortFileName +
'</a>';
html += '</div><div class="span6">';
var progressClass = 'progress-danger';
if (coveredPercentage > 30) progressClass = 'progress-warning';
if (coveredPercentage >= 80) progressClass = 'progress-success';
if (coveredPercentage > 30) {
progressClass = 'progress-warning';
}
if (coveredPercentage >= 80) {
progressClass = 'progress-success';
}
html += '<div class="progress ' + progressClass + '"> <div class="bar" style="width: ' + coveredPercentage +
'%"><strong>' + coveredPercentage +
'%</strong> [' + cnt + '/' +
code.length + ']</div></div></div>';
'%</strong> [' + covered + '/' + cnt + ']</div></div></div>';
html += '</div>';
html += '<div id="' + id + '" style="display:none;"><pre><ol>';
html += '<div class="file-contents"><pre><ol>';
code.forEach(function (line, i) {

@@ -97,3 +106,3 @@ html += '<li class="' + (__cov[file][i] ? 'covered' : (line.match(/;$/) && !line.match(/ \* /) ? 'uncovered' : '')) + '"><code>' + line + '</code>';

});
html += '</ol></pre></div>';
html += '</ol></pre></div></div>';

@@ -111,7 +120,49 @@ if (cnt > 1) {

var html = files.sort(function (x, y) {
var groups = {};
files.sort(byName).forEach(function (f) {
var group = f.name.replace(/\/[^\/]+$/, '');
if (!groups[group]) groups[group] = [];
groups[group].push(f);
});
var groupsListHTML = [];
var html = Object.keys(groups).map(function (g) {
var tltc = 0; // total lines to cover
var tlcd = 0; // total lines covered
var files = groups[g].sort(bySize).map(function (f) {
tltc += f.lines;
tlcd += f.covered;
return f.html;
}).join('\n');
var gid = g.toLowerCase().replace(/[^a-z]/i, '-');
var percentage = Math.round(100 * tlcd / tltc);
groupsListHTML.push('<li><a href="#' + gid + '">./' + g + ' (' + percentage + '%)</a></li>');
return '<div class="group-header row" id="' + gid + '"><div class="group-name span5">./' + g + '</div><div class="span6">' + progressBar(tlcd, tltc) + '</div></div>' + files;
}).join('\n');
function byName(x, y) {
return x.name > y.name ? -1 : 1;
}
function bySize(x, y) {
return y.lines - x.lines;
}).map(function (f) { return f.html }).join('\n');
}
fs.writeFileSync(cwd + '/coverage.html', fs.readFileSync(path.join(__dirname, 'coverage.html')).toString().replace('CODE', html.replace(/\$'/g, '&#36;\'')));
if (!fs.existsSync(cwd + '/coverage')) fs.mkdirSync(cwd + '/coverage');
fs.writeFileSync(cwd + '/coverage/index.html',
fs.readFileSync(path.join(__dirname, '/assets/coverage.html'))
.toString()
.replace('PROJECT', projectName || '')
.replace('PROGRESS', progressBar(total_covered, total_lines))
.replace('CODE', html.replace(/\$'/g, '&#36;\''))
.replace('GROUPS', groupsListHTML.join(''))
);
copy('bootstrap.css');
copy('style.css');
copy('coverage.js');
copy('bootstrap.js');
copy('jquery.min.js');
console.log('====================');

@@ -121,2 +172,24 @@ console.log('TOTAL COVERAGE:', Math.round((total_covered / (total_lines)) * 100) + '%');

function progressBar(x, total) {
var percentage = total === 0 ? 100 : Math.round((x / total) * 100);
var progressClass = 'progress-danger';
if (percentage > 30) {
progressClass = 'progress-warning';
}
if (percentage >= 80) {
progressClass = 'progress-success';
}
return '<div class="progress ' + progressClass + '"> <div class="bar" style="width: ' + percentage +
'%"><strong>' + percentage +
'%</strong> [' + x + '/' + total + ']</div></div>';
}
function copy(file) {
var source = path.join(__dirname, 'assets', file);
var destination = path.join(process.cwd(), 'coverage', file);
var contents = fs.readFileSync(source).toString();
fs.writeFileSync(destination, contents);
}
function syntax(code) {

@@ -132,9 +205,11 @@ var comments = [];

{ return safe[m]; })
.replace(/\/\*[\s\S]*?\*\//g, function(m)
.replace(/\/\/.*$/gm, function (m)
{ var l=comments.length; comments.push(m); return '~~~C'+l+'~~~'; })
.replace(/([^\\])((?:'(?:\\'|[^'\n])*')|(?:"(?:\\"|[^"\n])*"))/g, function(m, f, s)
.replace(/\/\*[\s\S]*?\*\//g, function (m)
{ var l=comments.length; comments.push(m); return '~~~C'+l+'~~~'; })
.replace(/([^\\])((?:'(?:\\'|[^'\n])*')|(?:"(?:\\"|[^"\n])*"))/g, function (m, f, s)
{ var l=strings.length; strings.push(s); return f+'~~~S'+l+'~~~'; })
// .replace(/\/(\\\/|[^\/\n])*\/[gim]{0,3}/g, function(m)
// { var l=res.length; res.push(m); return '~~~R'+l+'~~~'; })
.replace(/(var|function|typeof|new|return|if|for|in|while|break|do|continue|switch|case)([^a-z0-9\$_])/gi,
.replace(/(var|function|typeof|new|return|prototype|if|for|in|while|break|do|continue|switch|case)([^a-z0-9\$_])/gi,
'<span class="kwrd">$1</span>$2')

@@ -141,0 +216,0 @@ .replace(/(\{|\}|\]|\[|\|)/gi,

2

package.json
{
"author": "Anatoliy Chakkaev <rpm1602@gmail.com>",
"name": "semicov",
"version": "0.0.1",
"version": "0.1.0",
"main": "index.js",

@@ -6,0 +6,0 @@ "dependencies": {},

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc