Socket
Socket
Sign inDemoInstall

css-revealer

Package Overview
Dependencies
37
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.4 to 1.0.6

18

index.js
'use strict';
var _ = require('lodash');
var R = require('ramda');
var glob = require('glob');
var async = require('async');
var readFile = require('./lib/util').readFile;
var concat = require('./lib/util').concat;
var propEq = require('./lib/util').propEq;
var isFunction = require('./lib/util').isFunction;
var parseStylesheet = require('./lib/parseStylesheet');

@@ -25,5 +23,5 @@ var formatResult = require('./lib/formatResult');

getStylesheetList: _.partial(async.concat, stylesheets, glob),
getStylesheetList: R.curry(async.concat)(stylesheets, glob),
getTemplateList: _.partial(async.concat, templates, glob),
getTemplateList: R.curry(async.concat)(templates, glob),

@@ -35,3 +33,3 @@ readStylesheets: ['getStylesheetList', function(callback, results){

concatStylesheets: ['readStylesheets', function(callback, results){
callback(null, results.readStylesheets.reduce(concat, ''));
callback(null, results.readStylesheets.reduce(R.concat, ''));
}],

@@ -47,3 +45,3 @@

{ used: [], unused: [] },
_.partial(checkTemplate, results.parseStylesheets),
R.curry(checkTemplate)(results.parseStylesheets),
callback

@@ -55,3 +53,3 @@ );

callback(null, results.parseStylesheets.reduce(function(memo, selector){
var matchingOccurrence = _.find(results.checkTemplates.used, propEq('selector', selector));
var matchingOccurrence = R.find(R.propEq('selector', selector))(results.checkTemplates.used);
if (matchingOccurrence) {

@@ -67,3 +65,3 @@ memo.used.push(matchingOccurrence);

formatResult: ['sortResult', function(callback, results){
var formatter = _.isFunction(format) ? format : formatResult[format];
var formatter = isFunction(format) ? format : formatResult[format];
callback(null, formatter(results.sortResult));

@@ -70,0 +68,0 @@ }]

'use strict';
var async = require('async');
var _ = require('lodash');
var propEq = require('./util').propEq;
var R = require('ramda');
var readFile = require('./util').readFile;

@@ -12,9 +10,9 @@ var isSelectorInString = require('./isSelectorInString');

var readTemplate = _.partial(readFile, templatePath);
var readTemplate = R.partial(readFile, templatePath);
var findOccurrences = function(templateString, callback){
var usedInTemplate = _.partial(isSelectorInString, _, templateString);
var usedInTemplate = R.curry(isSelectorInString)(R.__, templateString);
var occurrences = selectors.reduce(function(memo, selector){
var occurrences = R.reduce(function(memo, selector){
if (usedInTemplate(selector)) {

@@ -27,3 +25,3 @@ memo.push({

return memo;
}, []);
}, [], selectors);

@@ -36,10 +34,7 @@ callback(null, occurrences);

var findIndexInOccurrences = _.partial(_.findIndex, occurrences);
var spliceFromOccurrences = _.bind([].splice, occurrences, _, 1);
result.used = result.used.map(function(used){
var indexInOccurrences = findIndexInOccurrences(propEq('selector', used.selector));
var indexInOccurrences = R.findIndex(R.propEq('selector', used.selector))(occurrences);
if (indexInOccurrences !== -1) {
used.occurrences = used.occurrences.concat(occurrences[indexInOccurrences].occurrences);
spliceFromOccurrences(indexInOccurrences);
occurrences = R.remove(indexInOccurrences, 1, occurrences);
}

@@ -46,0 +41,0 @@ return used;

'use strict';
var _ = require('lodash');
var R = require('ramda');
exports.json = function(result){
return JSON.stringify(result, null, 2);
};
exports.json = R.curry(JSON.stringify)(R.__, null, 2);

@@ -15,15 +13,15 @@ exports.markdown = function(result){

markdown += _.reduce(result.used, function(memo, occurrence){
markdown += R.reduce(function(memo, occurrence){
memo += '\n#### `' + occurrence.selector + '`\n\n';
memo += _.reduce(occurrence.occurrences, function(memo, occurrence){
memo += R.reduce(function(memo, occurrence){
return memo + '* ' + occurrence + '\n';
}, '');
}, '', occurrence.occurrences);
return memo;
}, '');
}, '', result.used);
markdown += '\n### Unused\n\n';
markdown += result.unused.reduce(function(memo, selector){
markdown += R.reduce(function(memo, selector){
return memo + '* `' + selector + '`\n';
}, '');
}, '', result.unused);

@@ -30,0 +28,0 @@ return markdown;

'use strict';
var _ = require('lodash');
var R = require('ramda');
var escape = require('escape-regexp');

@@ -8,16 +8,6 @@

var isId = function isId(selector) {
return /^#/.test(selector);
};
var isId = R.test(/^#/);
var isClass = R.test(/^\./);
var sanitise = R.compose(escape, R.replace(/^([#.])/, ''));
var isClass = function isClass(selector) {
return /^\./.test(selector);
};
var clean = function clean(selector) {
return selector.replace(/^(?:#|.)/, '');
};
var sanitise = _.compose(escape, clean);
if (isId(selector)) {

@@ -24,0 +14,0 @@ return new RegExp('id="[^"]*' + sanitise(selector)).test(string);

'use strict';
var _ = require('lodash');
var R = require('ramda');
var css = require('css');
var prop = require('./util').prop;
var propEq = require('./util').propEq;
var match = require('./util').match;
module.exports = function parse(stylesheet) {
return _.chain(css.parse(stylesheet))
.at('stylesheet')
.map(prop('rules'))
.flatten()
.filter(propEq('type', 'rule'))
.map(prop('selectors'))
.flatten()
.map(match(/([.#][^.#: ]+)/g))
.flatten()
.uniq()
.value();
};
module.exports = R.compose(
R.uniq,
R.chain(R.match(/([.#][^.#: ]+)/g)),
R.chain(R.prop('selectors')),
R.filter(R.propEq('type', 'rule')),
R.prop('rules'),
R.prop('stylesheet'),
R.curryN(1, css.parse)
);
'use strict';
var fs = require('fs');
var _ = require('lodash');
var R = require('ramda');
exports.readFile = _.curry(fs.readFile, _, { encoding: 'utf-8' });
exports.readFile = R.curry(fs.readFile)(R.__, { encoding: 'utf-8' });
exports.concat = _.curry(function(listA, listB){
return listA.concat(listB);
});
exports.prop = _.curry(function(key, object){
return object[key];
});
exports.propEq = _.curry(function(key, value, object){
return object[key] === value;
});
exports.replace = _.curry(function(pattern, substr, string){
return string.replace(pattern, substr);
});
exports.match = _.curry(function(pattern, string){
return string.match(pattern);
});
exports.isFunction = function(obj){
return Object.prototype.toString.call(obj) === '[object Function]';
};
{
"name": "css-revealer",
"version": "1.0.4",
"version": "1.0.6",
"description": "Reveal CSS selector usage within HTML templates.",

@@ -31,4 +31,4 @@ "bin": {

"escape-regexp": "0.0.1",
"lodash": "^3.10.0",
"glob": "^5.0.13",
"ramda": "^0.15.1",
"yargs": "^3.14.0"

@@ -35,0 +35,0 @@ },

'use strict';
var _ = require('lodash');
var R = require('ramda');
var path = require('path');
var fs = require('fs');
var readFile = _.partial(fs.readFileSync, _, { encoding: 'utf-8' });
var getLibPath = _.partial(path.join, __dirname, '../../lib');
var readFile = R.curry(fs.readFileSync)(R.__, { encoding: 'utf-8' });
var getLibPath = R.curryN(3, path.join)(__dirname, '../../lib');
global.getFixturePath = _.partial(path.join, __dirname, '../fixtures');
global.readFixture = _.compose(readFile, getFixturePath);
global.requireFixture = _.compose(require, getFixturePath);
global.requireLib = _.compose(require, getLibPath);
global.getFixturePath = R.curryN(3, path.join)(__dirname, '../fixtures');
global.readFixture = R.compose(readFile, getFixturePath);
global.requireFixture = R.compose(require, getFixturePath);
global.requireLib = R.compose(require, getLibPath);
'use strict';
var test = require('tape');
var _ = require('lodash');
var R = require('ramda');
var cssRevealer = require('../..');
var formatResult = requireLib('formatResult');
var replace = requireLib('util').replace;

@@ -66,3 +65,3 @@ test('should handle arrays of glob patterns', function(t){

var customFormatter = _.compose(replace(/test\/fixtures\//g, ''), formatResult.markdown);
var customFormatter = R.compose(R.replace(/test\/fixtures\//g, ''), formatResult.markdown);
var expected = readFixture('customFormat.md');

@@ -69,0 +68,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc