gecko-dev/devtools/shared/wasm-source-map.js
Julian Descottes 640fe52298 Bug 1454696 - Run eslint --fix for prefer-const;r=yulia
MozReview-Commit-ID: F6xUXCgdRE4

--HG--
extra : rebase_source : 65de1b0aba412d9044b5196115f74276caa058f2
2018-06-01 12:36:09 +02:00

115 lines
2.5 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
/**
* SourceMapConsumer for WebAssembly source maps. It transposes columns with
* lines, which allows mapping data to be used with SpiderMonkey Debugger API.
*/
class WasmRemap {
/**
* @param map SourceMapConsumer
*/
constructor(map) {
this._map = map;
this.version = map.version;
this.file = map.file;
this._computeColumnSpans = false;
}
get sources() {
return this._map.sources;
}
get sourceRoot() {
return this._map.sourceRoot;
}
/**
* @param url string
*/
set sourceRoot(url) { // important, since sources are using this.
this._map.sourceRoot = url;
}
get names() {
return this._map.names;
}
get sourcesContent() {
return this._map.sourcesContent;
}
get mappings() {
throw new Error("not supported");
}
computeColumnSpans() {
this._computeColumnSpans = true;
}
originalPositionFor(generatedPosition) {
const result = this._map.originalPositionFor({
line: 1,
column: generatedPosition.line,
bias: generatedPosition.bias
});
return result;
}
_remapGeneratedPosition(position) {
const generatedPosition = {
line: position.column,
column: 0,
};
if (this._computeColumnSpans) {
generatedPosition.lastColumn = Infinity;
}
return generatedPosition;
}
generatedPositionFor(originalPosition) {
const position = this._map.generatedPositionFor(originalPosition);
return this._remapGeneratedPosition(position);
}
allGeneratedPositionsFor(originalPosition) {
const positions = this._map.allGeneratedPositionsFor(originalPosition);
return positions.map((position) => {
return this._remapGeneratedPosition(position);
});
}
hasContentsOfAllSources() {
return this._map.hasContentsOfAllSources();
}
sourceContentFor(source, returnNullOnMissing) {
return this._map.sourceContentFor(source, returnNullOnMissing);
}
eachMapping(callback, context, order) {
this._map.eachMapping((entry) => {
const {
source,
generatedColumn,
originalLine,
originalColumn,
name
} = entry;
callback({
source,
generatedLine: generatedColumn,
generatedColumn: 0,
originalLine,
originalColumn,
name,
});
}, context, order);
}
}
exports.WasmRemap = WasmRemap;