Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/rewire.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJeroen Valcke <valcke_jeroen@hotmail.com>2017-10-19 11:24:01 +0300
committerJeroen Valcke <valcke_jeroen@hotmail.com>2017-10-19 11:24:01 +0300
commit1ef610465275414b830879719417da1ed91f3203 (patch)
tree4b747f837a81c58d220f0e22f6e3cf391b097727 /lib
parentfff5037950f78b4164c299560f761bd5e3dc9e06 (diff)
Add optional babel const to let parser.
Diffstat (limited to 'lib')
-rw-r--r--lib/index.js6
-rw-r--r--lib/moduleEnv.js20
-rw-r--r--lib/rewire.js16
3 files changed, 35 insertions, 7 deletions
diff --git a/lib/index.js b/lib/index.js
index 11229ff..765de10 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -7,10 +7,10 @@ var rewireModule = require("./rewire.js");
* @param {!String} filename Path to the module that shall be rewired. Use it exactly like require().
* @return {*} the rewired module
*/
-function rewire(filename) {
- return rewireModule(module.parent, filename);
+function rewire(filename, opts) {
+ return rewireModule(module.parent, filename, opts);
}
module.exports = rewire;
-delete require.cache[__filename]; // deleting self from module cache so the parent module is always up to date \ No newline at end of file
+delete require.cache[__filename]; // deleting self from module cache so the parent module is always up to date
diff --git a/lib/moduleEnv.js b/lib/moduleEnv.js
index 8ad7891..29c407c 100644
--- a/lib/moduleEnv.js
+++ b/lib/moduleEnv.js
@@ -2,6 +2,7 @@
var Module = require("module"),
fs = require("fs"),
+ babelCore = require("babel-core"),
coffee;
// caching original wrapper
@@ -11,18 +12,34 @@ var moduleWrapper0 = Module.wrapper[0],
nodeRequire,
currentModule;
-function load(targetModule) {
+function load(targetModule, isTransform) {
nodeRequire = targetModule.require;
targetModule.require = requireProxy;
currentModule = targetModule;
registerExtensions();
+
targetModule.load(targetModule.id);
// This is only necessary if nothing has been required within the module
reset();
}
+function compile(targetModule, src, filename) {
+ nodeRequire = targetModule.require;
+ targetModule.require = requireProxy;
+ targetModule.filename = filename;
+ currentModule = targetModule;
+
+ var convertedSrc = babelCore.transform(stripBOM(src), {
+ plugins: ["transform-es2015-constants"]
+ });
+
+ targetModule._compile(convertedSrc.code, filename);
+
+ reset();
+}
+
function reset() {
Module.wrapper[0] = moduleWrapper0;
Module.wrapper[1] = moduleWrapper1;
@@ -91,4 +108,5 @@ try {
}
exports.load = load;
+exports.compile = compile;
exports.inject = inject;
diff --git a/lib/rewire.js b/lib/rewire.js
index c52bbeb..1d240d4 100644
--- a/lib/rewire.js
+++ b/lib/rewire.js
@@ -1,5 +1,6 @@
var Module = require("module"),
fs = require("fs"),
+ path = require("path"),
getImportGlobalsSrc = require("./getImportGlobalsSrc.js"),
getDefinePropertySrc = require("./getDefinePropertySrc.js"),
detectStrictMode = require("./detectStrictMode.js"),
@@ -8,11 +9,15 @@ var Module = require("module"),
/**
* Does actual rewiring the module. For further documentation @see index.js
*/
-function internalRewire(parentModulePath, targetPath) {
+function internalRewire(parentModulePath, targetPath, opts) {
var targetModule,
prelude,
appendix,
- src;
+ src,
+ isTransform;
+
+ opts = typeof opts === "object" ? opts : {};
+ isTransform = !!opts.convertConst;
// Checking params
if (typeof targetPath !== "string") {
@@ -54,7 +59,12 @@ function internalRewire(parentModulePath, targetPath) {
}
moduleEnv.inject(prelude, appendix);
- moduleEnv.load(targetModule);
+
+ if(isTransform) {
+ moduleEnv.compile(targetModule, src, targetPath);
+ } else {
+ moduleEnv.load(targetModule);
+ }
return targetModule.exports;
}