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
diff options
context:
space:
mode:
authorJohannes <johannes.ewald@roomieplanet.de>2012-06-21 02:24:09 +0400
committerJohannes <johannes.ewald@roomieplanet.de>2012-06-21 02:24:09 +0400
commit0c860734dc28a679d9214ee9c5b5ff95e00eed55 (patch)
tree2b76efd42c12f331b79e61fb88ac480119d971c3 /lib/rewire.js
parentce972e2b1a9a43f6c19a68a5701b1b3b1bcc67f8 (diff)
removed "use strict"; to avoid influencing not-strict modules
Diffstat (limited to 'lib/rewire.js')
-rw-r--r--lib/rewire.js16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/rewire.js b/lib/rewire.js
index ae23fb1..2a51e26 100644
--- a/lib/rewire.js
+++ b/lib/rewire.js
@@ -1,9 +1,9 @@
-"use strict"; // run code in ES5 strict mode
-
var Module = require("module"),
+ fs = require("fs"),
__get__ = require("./__get__.js"),
__set__ = require("./__set__.js"),
getImportGlobalsSrc = require("./getImportGlobalsSrc.js"),
+ detectStrictMode = require("./detectStrictMode.js"),
moduleWrapper0 = Module.wrapper[0], // caching original wrapper
moduleWrapper1 = Module.wrapper[1], // caching original wrapper
@@ -21,7 +21,8 @@ function rewire(parentModule, filename, cache) {
var testModule,
nodeRequire,
prepend,
- append;
+ append,
+ src;
/**
* Proxies the first require call in order to draw back all changes.
@@ -63,7 +64,14 @@ function rewire(parentModule, filename, cache) {
append = "module.exports.__set__ = " + __set__.toString() + "; ";
append += "module.exports.__get__ = " + __get__.toString() + "; ";
- // Apply prepend and append
+ // Check if the module uses the strict mode.
+ // If so we must ensure that "use strict"; stays at the beginning of the module.
+ src = fs.readFileSync(filename, "utf8");
+ if (detectStrictMode(src) === true) {
+ prepend = ' "use strict"; ' + prepend;
+ }
+
+ // Apply prepend and appends
Module.wrapper[0] = moduleWrapper0 + prepend;
Module.wrapper[1] = append + moduleWrapper1;