babel-plugin-espower
Advanced tools
Comparing version 0.4.1 to 1.0.0
@@ -0,1 +1,10 @@ | ||
## [1.0.0](https://github.com/power-assert-js/babel-plugin-espower/releases/tag/v1.0.0) (2015-05-25) | ||
#### Features | ||
* use `process.cwd()` for `sourceRoot` option value ([71016432](https://github.com/power-assert-js/babel-plugin-espower/commit/71016432565568e2b7325b11cf07ae90d029c45b)) | ||
* update espower to 1.0.0 ([337cdfd2](https://github.com/power-assert-js/babel-plugin-espower/commit/337cdfd26a2868addd1aabdd7787733a79eab11a)) | ||
### [0.4.1](https://github.com/power-assert-js/babel-plugin-espower/releases/tag/v0.4.1) (2015-05-21) | ||
@@ -22,2 +31,47 @@ | ||
#### Breaking Changes | ||
* function returned by `babel-plugin-espower/create` takes babel instance as a first argument. | ||
If you are customizing babel-plugin-espower using `babel-plugin-espower/create`, you may have to migrate. | ||
To migrate, change your code from the following: | ||
``` | ||
var babel = require('babel-core'); | ||
var createEspowerPlugin = require('babel-plugin-espower/create'); | ||
var transformed = babel.transform(jsCode, { | ||
plugins: [ | ||
createEspowerPlugin({ | ||
patterns: [ | ||
'assert.isNull(object, [message])', | ||
'assert.same(actual, expected, [message])', | ||
'assert.near(actual, expected, delta, [message])' | ||
] | ||
}) | ||
] | ||
}); | ||
``` | ||
To: | ||
``` | ||
var babel = require('babel-core'); | ||
var createEspowerPlugin = require('babel-plugin-espower/create'); | ||
var transformed = babel.transform(jsCode, { | ||
plugins: [ | ||
createEspowerPlugin(babel, { | ||
patterns: [ | ||
'assert.isNull(object, [message])', | ||
'assert.same(actual, expected, [message])', | ||
'assert.near(actual, expected, delta, [message])' | ||
] | ||
}) | ||
] | ||
}); | ||
``` | ||
([39eb684b](https://github.com/power-assert-js/babel-plugin-espower/commit/39eb684b733729a0b0d6752bd52a008c5b08159b)) | ||
### [0.3.1](https://github.com/power-assert-js/babel-plugin-espower/releases/tag/v0.3.1) (2015-05-18) | ||
@@ -24,0 +78,0 @@ |
'use strict'; | ||
var find = require('array-find'); | ||
module.exports = function (babel) { | ||
@@ -10,7 +12,6 @@ var types = babel.types; | ||
var parentNode = traversalPath.parent; | ||
var candidateKeys = types.VISITOR_KEYS[parentNode.type].filter(function (key) { | ||
var currentTraversingKey = find(types.VISITOR_KEYS[parentNode.type], function (key) { | ||
return parentNode[key] === traversalPath.container; // searching for current key in parentNode | ||
}); | ||
if (candidateKeys.length === 1) { | ||
var currentTraversingKey = candidateKeys[0]; // ex. 'arguments' in CallExpression | ||
if (currentTraversingKey) { // ex. 'arguments' in CallExpression | ||
ancestors.push(currentTraversingKey); | ||
@@ -17,0 +18,0 @@ } |
@@ -6,7 +6,8 @@ 'use strict'; | ||
var extend = require('xtend'); | ||
var find = require('array-find'); | ||
function enterTraversalPath (traversalPath, currentNode, parentNode, scope, file, matchers, esTreePath) { | ||
function enterTraversalPath (traversalPath, currentNode, parentNode, scope, file, matchers, esTreePath, options) { | ||
var treePath; | ||
var currentKey = traversalPath.key; | ||
var assertionVisitor = traversalPath.state.data['espowerAssertionVisitor']; | ||
var assertionVisitor = file.get('espowerAssertionVisitor'); | ||
if (assertionVisitor) { | ||
@@ -25,13 +26,13 @@ if (assertionVisitor.toBeSkipped(currentNode, parentNode, currentKey)) { | ||
} else if (currentNode.type === 'CallExpression') { | ||
var candidates = matchers.filter(function (matcher) { return matcher.test(currentNode); }); | ||
if (candidates.length === 1) { | ||
var matcher = find(matchers, function (m) { return m.test(currentNode); }); | ||
if (matcher) { | ||
// entering assertion | ||
var espowerOptions = { | ||
var espowerOptions = extend(espower.defaultOptions(), { | ||
path: file.opts.filename, // or opts.sourceFileName? | ||
sourceMap: file.opts.inputSourceMap | ||
}; | ||
}, options); | ||
treePath = esTreePath(traversalPath); | ||
assertionVisitor = new espower.AssertionVisitor(candidates[0], treePath, espowerOptions); | ||
assertionVisitor = new espower.AssertionVisitor(matcher, treePath, espowerOptions); | ||
assertionVisitor.enter(currentNode, parentNode); | ||
traversalPath.state.data['espowerAssertionVisitor'] = assertionVisitor; | ||
file.set('espowerAssertionVisitor', assertionVisitor); | ||
} | ||
@@ -41,7 +42,7 @@ } | ||
function exitTraversalPath (traversalPath, currentNode, parentNode, scope, file, esTreePath) { | ||
function exitTraversalPath (traversalPath, currentNode, parentNode, scope, file, esTreePath, options) { | ||
var currentKey = traversalPath.key; | ||
var resultTree = currentNode; | ||
var isTreeModified = false; | ||
var assertionVisitor = traversalPath.state.data['espowerAssertionVisitor']; | ||
var assertionVisitor = file.get('espowerAssertionVisitor'); | ||
if (!assertionVisitor) { | ||
@@ -54,3 +55,3 @@ return; | ||
assertionVisitor.leave(currentNode, parentNode); | ||
delete traversalPath.state.data['espowerAssertionVisitor']; | ||
delete file.data.espowerAssertionVisitor; | ||
return; | ||
@@ -83,3 +84,6 @@ } | ||
var esTreePath = require('./babel-estree-path')(babel); | ||
var opts = extend(espower.defaultOptions(), { visitorKeys: babel.types.VISITOR_KEYS }, options); | ||
var opts = extend(espower.defaultOptions(), { | ||
visitorKeys: babel.types.VISITOR_KEYS, | ||
sourceRoot: process.cwd() | ||
}, options); | ||
var matchers = opts.patterns.map(function (pattern) { return escallmatch(pattern, opts); }); | ||
@@ -89,6 +93,6 @@ return Object.keys(babel.types.VISITOR_KEYS).reduce(function (handlers, nodeType) { | ||
enter: function (currentNode, parentNode, scope, file) { | ||
enterTraversalPath(this, currentNode, parentNode, scope, file, matchers, esTreePath); | ||
enterTraversalPath(this, currentNode, parentNode, scope, file, matchers, esTreePath, opts); | ||
}, | ||
exit: function (currentNode, parentNode, scope, file) { | ||
exitTraversalPath(this, currentNode, parentNode, scope, file, esTreePath); | ||
exitTraversalPath(this, currentNode, parentNode, scope, file, esTreePath, opts); | ||
} | ||
@@ -95,0 +99,0 @@ }; |
{ | ||
"name": "babel-plugin-espower", | ||
"description": "Babel plugin for power-assert", | ||
"version": "0.4.1", | ||
"version": "1.0.0", | ||
"author": { | ||
@@ -12,4 +12,5 @@ "name": "Takuto Wada", | ||
"dependencies": { | ||
"escallmatch": "^1.4.0", | ||
"espower": "^0.11.0", | ||
"array-find": "^1.0.0", | ||
"escallmatch": "^1.4.1", | ||
"espower": "^1.0.0", | ||
"xtend": "^4.0.0" | ||
@@ -19,3 +20,2 @@ }, | ||
"babel": "^5.2.0", | ||
"espurify": "^1.2.0", | ||
"mocha": "^2.2.4" | ||
@@ -46,6 +46,3 @@ }, | ||
], | ||
"license": { | ||
"type": "MIT", | ||
"url": "http://twada.mit-license.org/" | ||
}, | ||
"license": "MIT", | ||
"main": "index.js", | ||
@@ -52,0 +49,0 @@ "repository": { |
@@ -38,3 +38,3 @@ babel-plugin-espower | ||
Please note that `babel-plugin-espower` is a beta version product. Pull-requests, issue reports and patches are always welcomed. See [power-assert](http://github.com/power-assert-js/power-assert) project for more documentation. | ||
Pull-requests, issue reports and patches are always welcomed. See [power-assert](http://github.com/power-assert-js/power-assert) project for more documentation. | ||
@@ -57,3 +57,3 @@ | ||
``` | ||
$ ./node_modules/.bin/babel --plugins babel-plugin-espower /path/to/test/some_test.js > /path/to/build/some_test.js | ||
$ $(npm bin)/babel --plugins babel-plugin-espower /path/to/test/some_test.js > /path/to/build/some_test.js | ||
``` | ||
@@ -64,3 +64,3 @@ | ||
``` | ||
$ ./node_modules/.bin/babel --plugins espower /path/to/test/some_test.js > /path/to/build/some_test.js | ||
$ $(npm bin)/babel --plugins espower /path/to/test/some_test.js > /path/to/build/some_test.js | ||
``` | ||
@@ -94,3 +94,3 @@ | ||
``` | ||
$ ./node_modules/.bin/mocha --require ./babel_hook /path/to/test/demo_test.js | ||
$ $(npm bin)/mocha --require ./babel_hook /path/to/test/demo_test.js | ||
``` | ||
@@ -134,3 +134,3 @@ | ||
``` | ||
$ ./node_modules/.bin/babel --plugins espower /path/to/test/demo_test.js > /path/to/build/demo_test.js | ||
$ $(npm bin)/babel --plugins espower /path/to/test/demo_test.js > /path/to/build/demo_test.js | ||
``` | ||
@@ -141,3 +141,3 @@ | ||
``` | ||
$ ./node_modules/.bin/mocha /path/to/build/demo_test.js | ||
$ $(npm bin)/mocha /path/to/build/demo_test.js | ||
@@ -207,2 +207,4 @@ ES6 demo | ||
### var plugin = createEspowerPlugin(babel, [options]) | ||
You can customize assertion patterns via [Babel API](http://babeljs.io/docs/usage/api/), | ||
@@ -216,3 +218,3 @@ | ||
plugins: [ | ||
createEspowerPlugin({ | ||
createEspowerPlugin(babel, { | ||
patterns: [ | ||
@@ -236,3 +238,3 @@ 'assert.isNull(object, [message])', | ||
plugins: [ | ||
createEspowerPlugin({ | ||
createEspowerPlugin(babel, { | ||
patterns: [ | ||
@@ -249,3 +251,11 @@ 'assert.isNull(object, [message])', | ||
#### options | ||
| type | default value | | ||
|:---------|:--------------| | ||
| `object` | (return value of `espower.defaultOptions()` with default `visitorKeys`, `path`, `sourceRoot` and `sourceMap`) | | ||
Configuration options for internal `espower` module. If not passed, default options will be used (return value of `espower.defaultOptions()` with default `visitorKeys`, `path`, `sourceRoot` and `sourceMap`. `visitorKeys` is value of `babel.types.VISITOR_KEYS`. `path` is filename passed to babel. `sourceRoot` is be return value of `process.cwd()`, `sourceMap` is babel's internal SourceMap object). | ||
CHANGELOG | ||
@@ -252,0 +262,0 @@ --------------------------------------- |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
18980
2
137
0
277
4
+ Addedarray-find@^1.0.0
+ Addedarray-find@1.0.0(transitive)
+ Addedespower@1.3.2(transitive)
+ Addedis-url@1.2.4(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedsource-map@0.5.7(transitive)
- Removedamdefine@1.0.1(transitive)
- Removedespower@0.11.0(transitive)
- Removedestraverse@3.1.0(transitive)
- Removedsource-map@0.4.4(transitive)
Updatedescallmatch@^1.4.1
Updatedespower@^1.0.0