Merge pull request #111 from tugend/master

Support for forcing the mode (auto, browser or node) (fix #102)
This commit is contained in:
Julien Fontanet 2015-10-23 09:10:38 +02:00
commit 35e442db95
2 changed files with 23 additions and 0 deletions

View File

@ -91,6 +91,15 @@ require('source-map-support').install({
});
```
The module will by default assume a browser environment if XMLHttpRequest and window are defined. If either of these do not exist it will instead assume a node environment.
In some rare cases, e.g. when running a browser emulation and where both variables are also set, you can explictly specify the environment to be either 'browser' or 'node'.
```js
require('source-map-support').install({
environment: 'node'
});
```
## Demos
#### Basic Demo

View File

@ -8,6 +8,9 @@ var alreadyInstalled = false;
// If true, the caches are reset before a stack trace formatting operation
var emptyCacheBetweenOperations = false;
// Supports {browser, node, auto}
var environment = "auto";
// Maps a file path to a string containing the file contents
var fileContentsCache = {};
@ -18,6 +21,10 @@ var sourceMapCache = {};
var reSourceMap = /^data:application\/json[^,]+base64,/;
function isInBrowser() {
if (environment === "browser")
return true;
if (environment === "node")
return false;
return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function'));
}
@ -403,9 +410,16 @@ exports.install = function(options) {
options = options || {};
var installHandler = 'handleUncaughtExceptions' in options ?
options.handleUncaughtExceptions : true;
emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ?
options.emptyCacheBetweenOperations : false;
if (options.environment) {
environment = options.environment;
if (["node", "browser", "auto"].indexOf(environment) === -1)
throw new Error("environment " + environment + " was unknown. Available options are {auto, browser, node}")
}
// Allow sources to be found by methods other than reading the files
// directly from disk.
if (options.retrieveFile)