From 430e99a2e0ffa6b0c9f9c20d7bf69f8d78b04f50 Mon Sep 17 00:00:00 2001 From: guybedford Date: Wed, 25 May 2016 14:16:49 +0200 Subject: [PATCH] source map extraction to only use // comments, node 6 support --- lib/builder.js | 24 +++++++++++++----------- package.json | 1 - 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/builder.js b/lib/builder.js index 50908e1..c383fd2 100644 --- a/lib/builder.js +++ b/lib/builder.js @@ -5,7 +5,6 @@ var asp = require('bluebird').promisify; var fs = require('fs'); var path = require('path'); -var sourceMappingURL = require('source-map-url'); var dataUriToBuffer = require('data-uri-to-buffer'); var extend = require('./utils').extend; @@ -192,23 +191,24 @@ Builder.prototype.reset = function(baseLoader) { }); }) })) + + // support picking up source URLs during fetch to set as metadata.sourceMap .then(function (source) { - var metadata = load.metadata; - if (metadata.sourceMap) + if (load.metadata.sourceMap) return source; - var sourceMap = sourceMappingURL.getFrom(source); + var sourceMap = source.match(/\s*\/\/\s*[#@] sourceMappingURL=([^\s'"]*)/m); if (!sourceMap) return source; - source = sourceMappingURL.removeFrom(source); - if (sourceMap.startsWith('data:')) { + if (sourceMap[1].startsWith('data:')) { // inline source map - metadata.sourceMap = JSON.parse(dataUriToBuffer(sourceMap).toString('utf8')); + load.metadata.sourceMap = JSON.parse(dataUriToBuffer(sourceMap[1]).toString('utf8')); return source; - } else { + } + else { // relative path to the .map file - var sourceMapPath = path.join(path.dirname(fromFileURL(load.address)), sourceMap); + var sourceMapPath = path.join(path.dirname(fromFileURL(load.address)), sourceMap[1]); return asp(fs.readFile)(sourceMapPath, 'utf8').then(function (sourceMap) { - metadata.sourceMap = JSON.parse(sourceMap); + load.metadata.sourceMap = JSON.parse(sourceMap); return source; }); } @@ -306,7 +306,9 @@ function executeConfigFile(saveForReset, ignoreBaseURL, configPath, source) { // and prevent that code from adding anything to the real global var context = Object.create(global); context.SystemJS = context.System = configLoader; - context.global = context.GLOBAL = context.root = context; + context.global = context; + if (process.versions.node && process.versions.node.split('.')[0] <= 6) + context.GLOBAL = context.root = context; // make require available too, make it look as if config file was // loaded like a module var Module = require('module'); diff --git a/package.json b/package.json index 8c380c3..f4b429a 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ "mkdirp": "^0.5.1", "rollup": "^0.25.0", "source-map": "^0.5.3", - "source-map-url": "^0.4.0", "systemjs": "^0.19.28", "traceur": "0.0.105", "uglify-js": "^2.6.1"