Socket
Socket
Sign inDemoInstall

espower

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

espower - npm Package Compare versions

Comparing version 0.2.1 to 0.3.0

coverage/blanket.js

10

bower.json
{
"name": "espower",
"version": "0.2.1",
"version": "0.3.0",
"main": "lib/espower.js",

@@ -13,6 +13,12 @@ "ignore": [

],
"dependencies": {
"estraverse": "~1.5.0"
},
"devDependencies": {
"esprima": "~1.0.4",
"escodegen": "~0.0.28"
"escodegen": "~0.0.28",
"mocha": "~1.14.0",
"requirejs": "~2.1.5",
"assert": "Jxck/assert"
}
}

72

Gruntfile.js
module.exports = function(grunt) {
var pkg = grunt.file.readJSON('package.json');
(function () {
var taskName;
for(taskName in pkg.devDependencies) {
if(taskName.substring(0, 6) === 'grunt-') {
grunt.loadNpmTasks(taskName);
}
}
})();
require('load-grunt-tasks')(grunt);
grunt.initConfig({
pkg: pkg,
bower: {
all: {
rjsConfig: 'test/rjsconfig.js',
options: {
baseUrl: 'test'
}
}
},
bump: {
options: {
files: ['package.json', 'bower.json'],
updateConfigs: ['pkg'],
commit: true,
commitMessage: '%VERSION%',
commitFiles: ['package.json', 'bower.json'], // '-a' for all files
createTag: true,
tagName: 'v%VERSION%',
tagMessage: '%VERSION%',
push: false,
pushTo: 'upstream',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' // options to use with '$ git describe'
}
},
connect: {
server: {
options: {
port: 9001,
base: '.',
keepalive: true
}
}
},
jshint: {

@@ -23,2 +48,16 @@ files: [

},
mocha: {
browser: {
src: ['test/test-browser.html'],
options: {
run: true
}
},
amd: {
src: ['test/test-amd.html'],
options: {
run: false
}
}
},
mochaTest: {

@@ -29,3 +68,12 @@ unit: {

},
src: ['test/**/*.js']
src: ['test/**/*_test.js']
},
coverage: {
options: {
reporter: 'mocha-lcov-reporter',
require: 'coverage/blanket',
quiet: true,
captureFile: 'coverage.lcov'
},
src: ['test/**/*_test.js']
}

@@ -36,3 +84,3 @@ },

files: ['test/**/*.js', 'lib/**/*.js'],
tasks: ['test']
tasks: ['unit']
}

@@ -42,3 +90,5 @@ }

grunt.registerTask('test', ['jshint', 'mochaTest:unit']);
grunt.registerTask('unit', ['jshint', 'mochaTest:unit']);
grunt.registerTask('test', ['jshint', 'mochaTest:unit', 'mocha:browser', 'mocha:amd']);
grunt.registerTask('coverage', ['mochaTest:coverage']);
};

@@ -10,9 +10,4 @@ /**

*
* A part of traverse function is:
* Copyright (C) 2012, 2011 Ariya Hidayat <ariya.hidayat@gmail.com> and other contributors.
* Released under the BSD license.
* https://github.com/ariya/esprima/raw/master/LICENSE.BSD
*
* A part of deepCopy function is:
* Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com> and other contributors.
* Copyright (C) 2012 Yusuke Suzuki (twitter: @Constellation) and other contributors.
* Released under the BSD license.

@@ -31,13 +26,14 @@ * https://github.com/Constellation/esmangle/raw/master/LICENSE.BSD

if (typeof define === 'function' && define.amd) {
define(factory);
define(['estraverse'], factory);
} else if (typeof exports === 'object') {
module.exports = factory();
module.exports = factory(require('estraverse'));
} else {
root.espower = factory();
root.espower = factory(root.estraverse);
}
}(this, function () {
}(this, function (estraverse) {
'use strict';
var deepCopy,
var syntax = estraverse.Syntax,
deepCopy,
handlers = {

@@ -61,3 +57,3 @@ Identifier: function (instrumentor, node) {

});
if (node.callee.type === 'MemberExpression') {
if (node.callee.type === syntax.MemberExpression) {
node.callee.object = instrumentor.captureRecursively(node.callee.object);

@@ -71,3 +67,3 @@ return instrumentor.captureNode('funcall', node, instrumentor.propertyLocationOf(node.callee));

UnaryExpression: function (instrumentor, node) {
if ((node.operator === 'typeof' || node.operator === 'delete') && node.argument.type === 'Identifier') {
if ((node.operator === 'typeof' || node.operator === 'delete') && node.argument.type === syntax.Identifier) {
// 'typeof Identifier' or 'delete Identifier' is not instrumented

@@ -94,3 +90,3 @@ } else {

node.properties.forEach(function (prop) {
if (prop.type === 'Property' && prop.kind === 'init') {
if (prop.type === syntax.Property && prop.kind === 'init') {
prop.value = instrumentor.captureRecursively(prop.value);

@@ -179,25 +175,24 @@ }

result = (this.options.destructive) ? ast : deepCopy(ast);
traverse(result, function (node) {
var expression, i, numTargetArgs;
if (typeof node.type === 'undefined') {
return;
estraverse.replace(result, {
enter: function (currentNode, parentNode) {
var numTargetArgs, indexOfCurrentArg;
if (!parentNode || parentNode.type !== syntax.CallExpression) {
return undefined;
}
if (parentNode.callee === currentNode) {
return undefined;
}
if (!isSupportedNodeType(currentNode)) {
return undefined;
}
numTargetArgs = numberOfTargetArguments(parentNode.callee, that.options);
if (numTargetArgs === 0) {
return undefined;
}
indexOfCurrentArg = parentNode.arguments.indexOf(currentNode);
if (indexOfCurrentArg < numTargetArgs) {
return that.instrumentArgument(parentNode, currentNode);
}
return undefined;
}
if (node.type === 'ExpressionStatement') {
expression = node.expression;
} else if (node.type === 'ReturnStatement') {
expression = node.argument;
} else {
return;
}
if (expression.type !== 'CallExpression') {
return;
}
numTargetArgs = numberOfTargetArguments(expression.callee, that.options);
if (numTargetArgs === 0) {
return;
}
for (i = 0; i < numTargetArgs; i += 1) {
that.instrumentArgument(i, expression);
}
return;
});

@@ -207,9 +202,5 @@ return result;

SourceInstrumentor.prototype.instrumentArgument = function (index, callExpression) {
var instrumentor = new LineInstrumentor(this.retrieveLineFor(callExpression), this.options),
targetNode = callExpression.arguments[index];
if (!isSupportedNodeType(targetNode)) {
return;
}
callExpression.arguments[index] = instrumentor.instrument(targetNode);
SourceInstrumentor.prototype.instrumentArgument = function (callExpression, argumentNode) {
var instrumentor = new LineInstrumentor(this.retrieveLineFor(callExpression), this.options);
return instrumentor.instrument(argumentNode);
};

@@ -325,3 +316,3 @@

exprArgs.push(n({
type: 'Literal',
type: syntax.Literal,
value: this.line

@@ -332,9 +323,9 @@ }));

location.properties.push(n({
type: 'Property',
type: syntax.Property,
key: n({
type: 'Identifier',
type: syntax.Identifier,
name: 'path'
}),
value: n({
type: 'Literal',
type: syntax.Literal,
value: this.options.path

@@ -346,12 +337,12 @@ }),

return n({
type: 'CallExpression',
type: syntax.CallExpression,
callee: n({
type: 'MemberExpression',
type: syntax.MemberExpression,
computed: false,
object: n({
type: 'Identifier',
type: syntax.Identifier,
name: this.options.powerAssertVariableName
}),
property: n({
type: 'Identifier',
type: syntax.Identifier,
name: '_expr'

@@ -367,12 +358,12 @@ })

return n({
type: 'CallExpression',
type: syntax.CallExpression,
callee: n({
type: 'MemberExpression',
type: syntax.MemberExpression,
computed: false,
object: n({
type: 'Identifier',
type: syntax.Identifier,
name: this.options.powerAssertVariableName
}),
property: n({
type: 'Identifier',
type: syntax.Identifier,
name: '_capt'

@@ -384,3 +375,3 @@ })

n({
type: 'Literal',
type: syntax.Literal,
value: kind

@@ -396,21 +387,21 @@ }),

return n({
type: 'ObjectExpression',
type: syntax.ObjectExpression,
properties: [
n({
type: 'Property',
type: syntax.Property,
key: n({
type: 'Identifier',
type: syntax.Identifier,
name: 'start'
}),
value: n({
type: 'ObjectExpression',
type: syntax.ObjectExpression,
properties: [
n({
type: 'Property',
type: syntax.Property,
key: n({
type: 'Identifier',
type: syntax.Identifier,
name: 'line'
}),
value: n({
type: 'Literal',
type: syntax.Literal,
value: node.loc.start.line

@@ -421,9 +412,9 @@ }),

n({
type: 'Property',
type: syntax.Property,
key: n({
type: 'Identifier',
type: syntax.Identifier,
name: 'column'
}),
value: n({
type: 'Literal',
type: syntax.Literal,
value: node.loc.start.column

@@ -455,3 +446,3 @@ }),

function detectTargetMemberExpression (callee, objName, propName) {
if (callee.type !== 'MemberExpression' || callee.computed !== false) {
if (callee.type !== syntax.MemberExpression || callee.computed !== false) {
return false;

@@ -461,3 +452,3 @@ }

prop = callee.property;
return ((obj.type === 'Identifier' && obj.name === objName) && (prop.type === 'Identifier' && prop.name === propName));
return ((obj.type === syntax.Identifier && obj.name === objName) && (prop.type === syntax.Identifier && prop.name === propName));
}

@@ -492,3 +483,3 @@

function isAssertFunctionCall (callee, options) {
return (callee.type === 'Identifier' && callee.name === options.powerAssertVariableName);
return (callee.type === syntax.Identifier && callee.name === options.powerAssertVariableName);
}

@@ -543,21 +534,2 @@

// borrowed from esprima example
// Executes visitor on the object and its children (recursively).
function traverse(object, visitor) {
var key, child;
if (visitor.call(null, object) === false) {
return;
}
for (key in object) {
if (object.hasOwnProperty(key)) {
child = object[key];
if (typeof child === 'object' && child !== null) {
traverse(child, visitor);
}
}
}
}
// borrowed from esmangle

@@ -617,5 +589,4 @@ deepCopy = (function () {

espower.deepCopy = deepCopy;
espower.traverse = traverse;
espower.defaultOptions = defaultOptions;
return espower;
}));
{
"name": "espower",
"description": "Power Assert feature instrumentor based on the Mozilla JavaScript AST",
"version": "0.2.1",
"version": "0.3.0",
"keywords": [

@@ -27,12 +27,26 @@ "test",

"scripts": {
"test": "grunt test"
"bower": "./node_modules/bower/bin/bower install",
"test": "grunt test",
"coveralls": "grunt coverage && cat ./coverage.lcov | ./node_modules/coveralls/bin/coveralls.js"
},
"dependencies": {
"estraverse": "~1.5.0"
},
"devDependencies": {
"esprima": "1.0.4",
"escodegen": "~0.0.28",
"esprima": "~1.0.4",
"escodegen": "~1.0.1",
"coffee-script-redux": "2.0.0-beta7",
"grunt": "~0.4.2",
"grunt-mocha-test": "~0.8.0",
"grunt-mocha-test": "~0.8.1",
"grunt-contrib-jshint": "~0.7.1",
"grunt-contrib-watch": "~0.5.3"
"grunt-contrib-watch": "~0.5.3",
"grunt-bump": "~0.0.13",
"mocha-lcov-reporter": "0.0.1",
"blanket": "~1.1.5",
"coveralls": "~2.6.0",
"load-grunt-tasks": "~0.2.1",
"bower": "~1.2.8",
"grunt-bower-requirejs": "~0.8.0",
"grunt-mocha": "~0.4.7",
"grunt-contrib-connect": "~0.5.0"
},

@@ -39,0 +53,0 @@ "licenses": [

@@ -7,2 +7,3 @@ espower

[![Dependency Status](https://gemnasium.com/twada/espower.png)](https://gemnasium.com/twada/espower)
[![Coverage Status](https://coveralls.io/repos/twada/espower/badge.png?branch=master)](https://coveralls.io/r/twada/espower?branch=master)

@@ -9,0 +10,0 @@

@@ -1,7 +0,36 @@

var espower = require('../lib/espower'),
esprima = require('esprima'),
escodegen = require('escodegen'),
assert = require('assert');
(function (root, factory) {
'use strict';
var dependencies = [
'../lib/espower',
'esprima',
'escodegen',
'estraverse',
'assert'
];
if (typeof define === 'function' && define.amd) {
define(dependencies, factory);
} else if (typeof exports === 'object') {
factory.apply(root, dependencies.map(function (path) { return require(path); }));
} else {
factory.apply(root, dependencies.map(function (path) {
var tokens = path.split('/');
return root[tokens[tokens.length - 1]];
}));
}
}(this, function (
espower,
esprima,
escodegen,
estraverse,
assert
) {
// see: https://github.com/Constellation/escodegen/issues/115
if (typeof define === 'function' && define.amd) {
escodegen = window.escodegen;
}
describe('espower.defaultOptions()', function () {

@@ -211,3 +240,3 @@ beforeEach(function () {

result = espower(tree, {destructive: false, source: jsCode, path: '/path/to/baz_test.js'});
espower.traverse(result, function (node) {
estraverse.traverse(result, function (node) {
if (typeof node.type === 'undefined') return;

@@ -219,1 +248,3 @@ assert.ok(node.loc !== 'undefined', 'type: ' + node.type);

});
}));

@@ -1,6 +0,33 @@

var espower = require('../lib/espower'),
esprima = require('esprima'),
escodegen = require('escodegen'),
assert = require('assert');
(function (root, factory) {
'use strict';
var dependencies = [
'../lib/espower',
'esprima',
'escodegen',
'assert'
];
if (typeof define === 'function' && define.amd) {
define(dependencies, factory);
} else if (typeof exports === 'object') {
factory.apply(root, dependencies.map(function (path) { return require(path); }));
} else {
factory.apply(root, dependencies.map(function (path) {
var tokens = path.split('/');
return root[tokens[tokens.length - 1]];
}));
}
}(this, function (
espower,
esprima,
escodegen,
assert
) {
// see: https://github.com/Constellation/escodegen/issues/115
if (typeof define === 'function' && define.amd) {
escodegen = window.escodegen;
}
describe('instrumentation spec', function () {

@@ -26,2 +53,8 @@ function inst (jsCode, expected, options) {

"assert.equal(1,0);");
inst("assert(false, 'message');",
"assert(false,'message');");
inst("assert(false, messageStr);",
"assert(false,messageStr);");
});

@@ -34,2 +67,5 @@

inst("assert(falsyStr, messageStr);",
"assert(assert._expr(assert._capt(falsyStr,'ident',{start:{line:1,column:7}}),{start:{line:1,column:7}},'assert(falsyStr, messageStr);'),messageStr);");
inst("return assert(falsyStr);",

@@ -40,2 +76,5 @@ "return assert(assert._expr(assert._capt(falsyStr,'ident',{start:{line:1,column:14}}),{start:{line:1,column:14}},'return assert(falsyStr);'));");

"assert.equal(assert._expr(assert._capt(str,'ident',{start:{line:1,column:13}}),{start:{line:1,column:13}},'assert.equal(str, anotherStr);'),assert._expr(assert._capt(anotherStr,'ident',{start:{line:1,column:18}}),{start:{line:1,column:18}},'assert.equal(str, anotherStr);'));");
inst("assert.equal(str, anotherStr, messageStr);",
"assert.equal(assert._expr(assert._capt(str,'ident',{start:{line:1,column:13}}),{start:{line:1,column:13}},'assert.equal(str, anotherStr, messageStr);'),assert._expr(assert._capt(anotherStr,'ident',{start:{line:1,column:18}}),{start:{line:1,column:18}},'assert.equal(str, anotherStr, messageStr);'),messageStr);");
});

@@ -250,1 +289,3 @@

});
}));

Sorry, the diff of this file is not supported yet

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