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 ECMAScript AST


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

espower

Build Status NPM package Bower package Dependency Status Coverage Status Code Climate License Built with Gulp

Power Assert feature instrumentor based on the ECMAScript AST.

DESCRIPTION

espower is a core module of power-assert family.

espower detects and manipulates assertion expression (JavaScript Code) in the form of ECMAScript AST defined in The ESTree Spec (formerly known as Mozilla SpiderMonkey Parser API), to instrument power-assert feature into returned new AST object. AST in, AST out. Since 0.11.0, espower can transform ES6 AST as well.

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 The ESTree 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.

espower function throws EspowerError when

  • originalAst is already instrumented
  • originalAst does not contain location information
  • options argument is not valid
originalAst
typedefault value
objectN/A

originalAst should be an AST node object defined in The ESTree 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.

(optional) options.sourceMap
typedefault value
object or stringN/A

A raw (either as a string which can be JSON.parse'd, or an object) SourceMap associated with originalAst. This property is optional. If given, espower uses options.sourceMap to adjust information in the power-assert output.

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
use espower module on browser

espower function is exported

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

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 18 Apr 2015

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