ajsfw
Version:
Ajs Framework
63 lines (62 loc) • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var loadedFiles = {};
var loadingFiles = {};
function mapFile(srcUrl, line, column) {
function getFile(fileUrl, callback) {
if (fileUrl in loadedFiles) {
callback(loadedFiles[fileUrl]);
}
if (!(fileUrl in loadingFiles)) {
if (!loadingFiles.hasOwnProperty(fileUrl)) {
loadingFiles[fileUrl] = { callbacks: [] };
}
loadingFiles[fileUrl].callbacks.push(callback);
}
else {
loadingFiles[fileUrl].callbacks.push(callback);
return;
}
var req = new XMLHttpRequest();
req.addEventListener("load", function (evt) {
var request = evt.target;
var content = request.response;
loadedFiles[fileUrl] = content;
if (loadingFiles.hasOwnProperty(fileUrl)) {
for (var _i = 0, _a = loadingFiles[fileUrl].callbacks; _i < _a.length; _i++) {
var u = _a[_i];
u(content);
}
delete loadingFiles[fileUrl];
}
});
req.addEventListener("error", function (evt) {
document.write("Failed to load the '" + fileUrl + "' file.");
});
req.open("GET", fileUrl);
req.send();
}
var SourceMap = window.sourceMap;
var maps = {};
var mp = new Promise(function (resolve, reject) {
if (maps.hasOwnProperty(srcUrl)) {
resolve(maps[srcUrl].originalPositionFor({ line: line, column: column }));
}
else {
getFile(srcUrl, function (content) {
var mapFile = content.match(/\/\/\# sourceMappingURL\=.*/g);
var mapFileUrl;
if (mapFile.length > 1) {
mapFileUrl = mapFile[1].split("=")[1];
}
getFile(mapFileUrl, function (content) {
var smc = new SourceMap.SourceMapConsumer(content);
maps[srcUrl] = smc;
resolve(maps[srcUrl].originalPositionFor({ line: line, column: column }));
});
});
}
});
return mp;
}
exports.mapFile = mapFile;