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

Power Assert feature instrumentor based on the Mozilla JavaScript AST


Version published
Weekly downloads
23K
decreased by-16.71%
Maintainers
1
Weekly downloads
 
Created
Source

espower

Build Status NPM version Dependency Status Coverage Status License Built with Gulp

Power Assert feature instrumentor based on the Mozilla JavaScript AST.

DESCRIPTION

espower is a core module of power-assert family.

espower detects and manipulates assertion expression (JavaScript Code) in original AST represented as Mozilla JavaScript AST, to instrument power-assert feature into returned new AST object. Mozilla JavaScript AST in, Mozilla JavaScript AST out.

Please note that espower is a beta version product. Pull-requests, issue reports and patches are always welcomed. See power-assert project for more documentation.

CHANGELOG

See CHANGELOG

API

var modifiedAst = espower(originalAst, [options])

return type
object

espower function manipulates originalAst then returns modifiedAst that is also an AST node object defined in Mozilla JavaScript AST spec. If destructive option is falsy, originalAst will be unchanged. If destructive option is truthy, originalAst will be manipulated directly and returned modifiedAst will be the same instance of originalAst.

originalAst
typedefault value
objectN/A

originalAst should be an AST node object defined in Mozilla JavaScript AST spec.

options
typedefault value
object(return value of espower.defaultOptions())

Configuration options. If not passed, default options will be used.

options.destructive
typedefault value
booleanfalse

Modify originalAst destructively or not.

If false, espower clones originalAst deeply, so originalAst will be unchanged. If true, originalAst will be manipulated directly and returned modifiedAst will be the same instance of originalAst.

options.patterns
typedefault value
Array of stringobjects shown below
[
    'assert(value, [message])',
    'assert.ok(value, [message])',
    'assert.equal(actual, expected, [message])',
    'assert.notEqual(actual, expected, [message])',
    'assert.strictEqual(actual, expected, [message])',
    'assert.notStrictEqual(actual, expected, [message])',
    'assert.deepEqual(actual, expected, [message])',
    'assert.notDeepEqual(actual, expected, [message])'
]

Target patterns for power assert feature instrumentation.

If callee name (for example, assert.equal) matches exactly and number of arguments is satisfied, then the assertion will be modified. Detection is done by escallmatch. Any arguments enclosed in bracket (for example, [message]) means optional parameters. Without bracket means mandatory parameters.

(optional) options.path
typedefault value
stringN/A

Filepath of originalAst. If passed, espower stores filepath information for reporting. This property is optional.

var options = espower.defaultOptions();

Returns default options object for espower function. In other words, returns

{
    destructive: false,
    patterns: [
        'assert(value, [message])',
        'assert.ok(value, [message])',
        'assert.equal(actual, expected, [message])',
        'assert.notEqual(actual, expected, [message])',
        'assert.strictEqual(actual, expected, [message])',
        'assert.notStrictEqual(actual, expected, [message])',
        'assert.deepEqual(actual, expected, [message])',
        'assert.notDeepEqual(actual, expected, [message])'
    ]
}

EXAMPLE

For given test file example_test.js below,

var assert = require('power-assert'),
    truthy = 'true',
    falsy = 'false';
assert(falsy);
assert.equal(truthy, falsy);

Apply espower then generate modified code to console,

var espower = require('espower'),
    esprima = require('esprima'),
    escodegen = require('escodegen'),
    fs = require('fs'),
    path = require('path');

var filepath = path.join(__dirname, 'example_test.js');
var jsAst = esprima.parse(fs.readFileSync(filepath), {tolerant: true, loc: true, tokens: true});
var modifiedAst = espower(jsAst, {path: filepath});

console.log(escodegen.generate(modifiedAst));

Output:

var assert = require('power-assert'), truthy = 'true', falsy = 'false';
assert(assert._expr(assert._capt(falsy, 'arguments/0'), {
    content: 'assert(falsy)',
    filepath: '/path/to/example_test.js',
    line: 4
}));
assert.equal(assert._expr(assert._capt(truthy, 'arguments/0'), {
    content: 'assert.equal(truthy, falsy)',
    filepath: '/path/to/example_test.js',
    line: 5
}), assert._expr(assert._capt(falsy, 'arguments/1'), {
    content: 'assert.equal(truthy, falsy)',
    filepath: '/path/to/example_test.js',
    line: 5
}));

INSTALL

via npm

Install

$ npm install --save-dev espower

via bower

Install

$ bower install --save-dev espower

Then load (espower function is exported)

<script type="text/javascript" src="./path/to/bower_components/espower/build/espower.js"></script>

AUTHOR

LICENSE

Licensed under the MIT license.

Keywords

FAQs

Package last updated on 12 Aug 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

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