UNPKG

ajsfw

Version:
63 lines (62 loc) 2.34 kB
"use strict"; 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;