source-map-support
Advanced tools
Comparing version 0.1.6 to 0.1.7
{ | ||
"name": "source-map-support", | ||
"description": "Fixes stack traces for files with source maps", | ||
"version": "0.1.6", | ||
"version": "0.1.7", | ||
"main": "./source-map-support.js", | ||
@@ -6,0 +6,0 @@ "scripts": { |
@@ -14,9 +14,20 @@ var SourceMapConsumer = require('source-map').SourceMapConsumer; | ||
// Support source map URLs relative to the source URL | ||
var dir = path.dirname(position.source); | ||
sourceMappingURL = path.resolve(dir, sourceMappingURL); | ||
// Read the contents of the source map | ||
var sourceMapData; | ||
var dataUrlPrefix = "data:application/json;base64,"; | ||
if (sourceMappingURL.slice(0, dataUrlPrefix.length).toLowerCase() == dataUrlPrefix) { | ||
// Support source map URL as a data url | ||
sourceMapData = new Buffer(sourceMappingURL.slice(dataUrlPrefix.length), "base64").toString(); | ||
} | ||
else { | ||
// Support source map URLs relative to the source URL | ||
var dir = path.dirname(position.source); | ||
sourceMappingURL = path.resolve(dir, sourceMappingURL); | ||
// Parse the source map | ||
if (fs.existsSync(sourceMappingURL)) { | ||
var sourceMapData = fs.readFileSync(sourceMappingURL, 'utf8'); | ||
if (fs.existsSync(sourceMappingURL)) { | ||
sourceMapData = fs.readFileSync(sourceMappingURL, 'utf8'); | ||
} | ||
} | ||
if (sourceMapData) { | ||
sourceMap = { | ||
@@ -23,0 +34,0 @@ url: sourceMappingURL, |
14
test.js
@@ -32,2 +32,4 @@ require('./source-map-support').install(); | ||
} | ||
// Check once with a separate source map | ||
fs.writeFileSync('.generated.js.map', sourceMap); | ||
@@ -44,2 +46,14 @@ fs.writeFileSync('.generated.js', 'exports.test = function() {' + | ||
fs.unlinkSync('.generated.js.map'); | ||
// Check again with an inline source map (in a data URL) | ||
fs.writeFileSync('.generated.js', 'exports.test = function() {' + | ||
source.join('\n') + '};//@ sourceMappingURL=data:application/json;base64,' + | ||
new Buffer(sourceMap.toString()).toString('base64')); | ||
try { | ||
delete require.cache[require.resolve('./.generated')]; | ||
require('./.generated').test(); | ||
} catch (e) { | ||
compareLines(e.stack.split('\n'), expected); | ||
} | ||
fs.unlinkSync('.generated.js'); | ||
} | ||
@@ -46,0 +60,0 @@ |
16758
368