babel-plugin-transform-cjs-system-wrapper
Advanced tools
Comparing version 0.2.1 to 0.3.0
107
lib/index.js
@@ -11,9 +11,9 @@ 'use strict'; | ||
var requireIdentifier = t.identifier('$__require'); | ||
var requireIdentifier = t.identifier('require'); | ||
var buildTemplate = (0, _babelTemplate2.default)('\n SYSTEM_GLOBAL.registerDynamic(MODULE_NAME, [DEPS], true, BODY);\n '); | ||
var buildFactory = (0, _babelTemplate2.default)('\n (function ($__require, exports, module) {\n BODY\n return module.exports;\n })\n '); | ||
var buildFactory = (0, _babelTemplate2.default)('\n (function (require, exports, module) {\n BODY\n })\n '); | ||
var buildDefineGlobal = (0, _babelTemplate2.default)('\n var define, global = this || self, GLOBAL = global;\n '); | ||
var buildDefineGlobal = (0, _babelTemplate2.default)('\n var global = this || self, GLOBAL = global;\n '); | ||
@@ -24,6 +24,5 @@ var buildStaticFilePaths = (0, _babelTemplate2.default)('\n var __filename = FILENAME, __dirname = DIRNAME;\n '); | ||
var buildRequireResolveFacade = (0, _babelTemplate2.default)('\n $__require.resolve = function(request) {\n return SYSTEM_GLOBAL.get(\'@@cjs-helpers\').requireResolve(request, module.id);\n }\n '); | ||
var buildRequireResolveFacade = (0, _babelTemplate2.default)('\n require.resolve = function(request) {\n return SYSTEM_GLOBAL.get(\'@@cjs-helpers\').requireResolve(request, module.id);\n }\n '); | ||
return { | ||
inherits: require('babel-plugin-transform-cjs-system-require'), | ||
pre: function pre() { | ||
@@ -35,17 +34,43 @@ this.usesFilePaths = false; | ||
visitor: { | ||
CallExpression: function CallExpression(_ref2, _ref3) { | ||
var node = _ref2.node; | ||
var _ref3$opts = _ref3.opts; | ||
var opts = _ref3$opts === undefined ? {} : _ref3$opts; | ||
CallExpression: function CallExpression(path, _ref2) { | ||
var _ref2$opts = _ref2.opts; | ||
var opts = _ref2$opts === undefined ? {} : _ref2$opts; | ||
var callee = node.callee; | ||
var callee = path.node.callee; | ||
var args = path.node.arguments; | ||
var _opts$requireName = opts.requireName; | ||
var requireName = _opts$requireName === undefined ? 'require' : _opts$requireName; | ||
var map = opts.map; | ||
// test if require.resolve is present | ||
if (!this.usesRequireResolve && t.isMemberExpression(callee) && t.isIdentifier(callee.object, { name: opts.requireName || 'require' }) && t.isIdentifier(callee.property, { name: 'resolve' })) { | ||
if (!this.usesRequireResolve && t.isMemberExpression(callee) && t.isIdentifier(callee.object, { name: requireName }) && t.isIdentifier(callee.property, { name: 'resolve' })) { | ||
this.usesRequireResolve = true; | ||
} | ||
// found a require | ||
if (t.isIdentifier(callee, { name: requireName }) && args.length == 1) { | ||
// require('x'); | ||
if (t.isStringLiteral(args[0])) { | ||
var requiredModuleName = args[0].value; | ||
// mirror behaviour at https://github.com/systemjs/systemjs/blob/0.19.8/lib/cjs.js#L50 to remove trailing slash | ||
if (requiredModuleName[requiredModuleName.length - 1] == '/') { | ||
requiredModuleName = requiredModuleName.substr(0, requiredModuleName.length - 1); | ||
} | ||
if (typeof map === 'function') { | ||
requiredModuleName = map(requiredModuleName) || requiredModuleName; | ||
} | ||
args[0].value = requiredModuleName; | ||
} | ||
} | ||
}, | ||
MemberExpression: function MemberExpression(path, _ref4) { | ||
var _ref4$opts = _ref4.opts; | ||
var opts = _ref4$opts === undefined ? {} : _ref4$opts; | ||
MemberExpression: function MemberExpression(path, _ref3) { | ||
var _ref3$opts = _ref3.opts; | ||
var opts = _ref3$opts === undefined ? {} : _ref3$opts; | ||
var node = path.node; | ||
@@ -63,6 +88,11 @@ | ||
}, | ||
Identifier: function Identifier(_ref5) { | ||
var node = _ref5.node; | ||
ReferencedIdentifier: function ReferencedIdentifier(path, state) { | ||
if (path.node.name == 'define' && !path.scope.hasBinding('define') && (!t.isExpression(path.parentPath) || t.isUnaryExpression(path.parentPath) && path.parentPath.node.operator === 'typeof')) { | ||
path.replaceWith(t.identifier('undefined')); | ||
} | ||
}, | ||
Identifier: function Identifier(path) { | ||
var node = path.node; | ||
// test if file paths are used | ||
// test if file paths are used | ||
if (t.isIdentifier(node, { name: '__filename' }) || t.isIdentifier(node, { name: '__dirname' })) { | ||
@@ -74,7 +104,11 @@ this.usesFilePaths = true; | ||
Program: { | ||
exit: function exit(_ref6, _ref7) { | ||
var node = _ref6.node; | ||
var _ref7$opts = _ref7.opts; | ||
var opts = _ref7$opts === undefined ? {} : _ref7$opts; | ||
exit: function exit(path, _ref4) { | ||
var _ref4$opts = _ref4.opts; | ||
var opts = _ref4$opts === undefined ? {} : _ref4$opts; | ||
var _opts$requireName2 = opts.requireName; | ||
var requireName = _opts$requireName2 === undefined ? 'require' : _opts$requireName2; | ||
var _opts$mappedRequireNa = opts.mappedRequireName; | ||
var mappedRequireName = _opts$mappedRequireNa === undefined ? '$__require' : _opts$mappedRequireNa; | ||
opts.static = opts.static === true || false; | ||
@@ -95,3 +129,3 @@ | ||
if (this.usesRequireResolve && !opts.static) { | ||
node.body.unshift(buildRequireResolveFacade({ | ||
path.node.body.unshift(buildRequireResolveFacade({ | ||
SYSTEM_GLOBAL: systemGlobal | ||
@@ -102,3 +136,3 @@ })); | ||
if (this.usesFilePaths && !opts.static) { | ||
node.body.unshift(buildDynamicFilePaths({ | ||
path.node.body.unshift(buildDynamicFilePaths({ | ||
SYSTEM_GLOBAL: systemGlobal | ||
@@ -112,3 +146,3 @@ })); | ||
node.body.unshift(buildStaticFilePaths({ | ||
path.node.body.unshift(buildStaticFilePaths({ | ||
FILENAME: t.stringLiteral(filename), | ||
@@ -119,3 +153,3 @@ DIRNAME: t.stringLiteral(dirname) | ||
node.body.unshift(buildDefineGlobal()); | ||
path.node.body.unshift(buildDefineGlobal()); | ||
@@ -134,13 +168,13 @@ var globals = opts.globals; | ||
globals = t.variableDeclaration('var', globalAssignments); | ||
node.body.unshift(globals); | ||
path.node.body.unshift(globals); | ||
} | ||
var factory = buildFactory({ | ||
BODY: node.body | ||
BODY: path.node.body | ||
}); | ||
factory.expression.body.directives = node.directives; | ||
node.directives = []; | ||
factory.expression.body.directives = path.node.directives; | ||
path.node.directives = []; | ||
node.body = [buildTemplate({ | ||
path.node.body = [buildTemplate({ | ||
SYSTEM_GLOBAL: systemGlobal, | ||
@@ -151,2 +185,15 @@ MODULE_NAME: moduleName, | ||
})]; | ||
var remapFactoryScopedRequire = { | ||
FunctionExpression: function FunctionExpression(path) { | ||
if (path.node == factory.expression) { | ||
path.scope.rename(this.requireName, this.mappedRequireName); | ||
} | ||
} | ||
}; | ||
path.traverse(remapFactoryScopedRequire, { | ||
requireName: requireName, | ||
mappedRequireName: mappedRequireName | ||
}); | ||
} | ||
@@ -153,0 +200,0 @@ } |
{ | ||
"name": "babel-plugin-transform-cjs-system-wrapper", | ||
"version": "0.2.1", | ||
"version": "0.3.0", | ||
"description": "Wraps CommonJS scripts into System.registerDynamic(...", | ||
@@ -13,4 +13,3 @@ "repository": { | ||
"dependencies": { | ||
"babel-template": "^6.9.0", | ||
"babel-plugin-transform-cjs-system-require": "^0.1.1" | ||
"babel-template": "^6.9.0" | ||
}, | ||
@@ -17,0 +16,0 @@ "devDependencies": { |
@@ -37,7 +37,5 @@ # babel-plugin-transform-cjs-system-wrapper | ||
var f = $__require('foo'); | ||
var define, | ||
global = this, | ||
var global = this, | ||
GLOBAL = this; | ||
var foo = $__require('foo'); | ||
return module.exports; | ||
}); | ||
@@ -44,0 +42,0 @@ ``` |
$__System.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
module.exports = $__System._nodeRequire ? process : $__require('foo'); | ||
return module.exports; | ||
}); |
System._nodeRequire("foo"); | ||
SystemJS._nodeRequire("bar"); |
SystemJS.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
SystemJS._nodeRequire("foo"); | ||
SystemJS._nodeRequire("bar"); | ||
return module.exports; | ||
}); | ||
}); |
module.exports = { | ||
systemGlobal: 'SystemJS' | ||
}; |
System.registerDynamic(["foo", "bar"], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
return module.exports; | ||
}); | ||
}); |
module.exports = { | ||
deps: ['foo', 'bar'] | ||
}; |
System.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
@@ -9,3 +8,2 @@ var $__pathVars = System.get('@@cjs-helpers').getPathVars(module.id), | ||
console.log(__filename); | ||
return module.exports; | ||
}); | ||
}); |
System.registerDynamic([], true, function ($__require, exports, module) { | ||
var f = $__require("foo"), b = $__require("bar"); | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
return module.exports; | ||
}); | ||
}); |
@@ -0,0 +0,0 @@ module.exports = { |
System.registerDynamic("foobar", [], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
return module.exports; | ||
}); | ||
}); |
module.exports = { | ||
moduleName: 'foobar' | ||
}; |
System.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
@@ -8,3 +7,2 @@ var __filename = "", | ||
console.log(__filename); | ||
return module.exports; | ||
}); | ||
}); |
foo.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
return module.exports; | ||
}); | ||
}); |
module.exports = { | ||
systemGlobal: 'foo' | ||
}; |
@@ -5,6 +5,4 @@ System.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
return module.exports; | ||
}); | ||
}); |
System.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
@@ -8,3 +7,2 @@ var __filename = "path/to/foobar", | ||
console.log(__dirname); | ||
return module.exports; | ||
}); | ||
}); |
System.registerDynamic([], true, function ($__require, exports, module) { | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
"production"; | ||
return module.exports; | ||
}); | ||
}); |
@@ -6,4 +6,4 @@ 'use strict'; | ||
(function (require) { | ||
if (typeof require != 'undefined' && eval('typeof require') == 'undefined') { | ||
if (typeof require != 'undefined' && eval('typeof require') != 'undefined') { | ||
exports.cjs = true; | ||
@@ -23,2 +23,2 @@ } | ||
exports.env = process.env.NODE_ENV; | ||
exports.env = process.env.NODE_ENV; |
@@ -5,4 +5,3 @@ SystemJS.registerDynamic('foobar', ['bar'], true, function ($__require, exports, module) { | ||
var f = $__require('foo'); | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
@@ -19,5 +18,5 @@ var $__pathVars = SystemJS.get('@@cjs-helpers').getPathVars(module.id), | ||
(function ($__require) { | ||
(function (require) { | ||
if (typeof $__require != 'undefined' && eval('typeof require') == 'undefined') { | ||
if (typeof require != 'undefined' && eval('typeof require') != 'undefined') { | ||
exports.cjs = true; | ||
@@ -27,14 +26,13 @@ } | ||
if (false) { | ||
$__require('foo'); | ||
$__require('bar'); | ||
$__require('some' + 'expression'); | ||
require('foo'); | ||
require('bar'); | ||
require('some' + 'expression'); | ||
} | ||
})($__require); | ||
(function ($__require) { | ||
$__require.resolve('raboof'); | ||
(function (require) { | ||
require.resolve('raboof'); | ||
})($__require); | ||
exports.env = 'production'; | ||
return module.exports; | ||
}); |
@@ -0,0 +0,0 @@ module.exports = { |
@@ -5,7 +5,5 @@ System.registerDynamic('foobar', ['bar'], true, function ($__require, exports, module) { | ||
var f = $__require('foo'); | ||
var define, | ||
global = this || self, | ||
var global = this || self, | ||
GLOBAL = global; | ||
var foo = $__require('foo'); | ||
return module.exports; | ||
}); | ||
}); |
@@ -0,0 +0,0 @@ module.exports = { |
@@ -0,0 +0,0 @@ import path from 'path'; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
50162
1
60
418
102
6
3
- Removedbabel-plugin-transform-cjs-system-require@0.1.1(transitive)