"use strict";
|
var assert = require("power-assert");
|
var sourceMap = require("source-map");
|
var Generator = sourceMap.SourceMapGenerator;
|
var Consumer = sourceMap.SourceMapConsumer;
|
var transfer = require("../lib/multi-stage-sourcemap");
|
describe("multi-stage-sourcemap", function () {
|
var middleSource;
|
var lastSource;
|
beforeEach(function () {
|
// origin -> middle
|
middleSource = (function () {
|
var gen = new Generator({
|
file: 'middle.js',
|
sourceRoot: '/path/to/root'
|
});
|
gen.addMapping({
|
source: 'original.js',
|
original: { line: 1, column: 0 },
|
generated: { line: 2, column: 2 },
|
name: 'foo'
|
});
|
return gen.toString();
|
})();
|
// middle -> last
|
lastSource = (function () {
|
var gen = new Generator({
|
file: 'last.js',
|
sourceRoot: '/path/to/root'
|
});
|
gen.addMapping({
|
source: 'middle.js',
|
original: { line: 2, column: 2 },
|
generated: { line: 4, column: 4 },
|
name: 'bar'
|
});
|
return gen.toString();
|
})();
|
|
});
|
it("should convert js", function () {
|
// map result to origin
|
var resultMap = transfer({fromSourceMap: lastSource, toSourceMap: middleSource});
|
var resultSMC = new Consumer(resultMap);
|
var originalPosition = resultSMC.originalPositionFor({
|
line: 4,
|
column: 4
|
});
|
assert(originalPosition.source === '/path/to/root/original.js');
|
assert(originalPosition.line === 1);
|
assert(originalPosition.column === 0);
|
});
|
});
|