babel-generator: Expose raw mappings
Exposes raw mappings when source map generation is enabled. To avoid the cost of source map generation for consumers of the raw mappings only, `.map` is changed to a getter that generates the source map lazily on first access.
This commit is contained in:
@@ -58,6 +58,69 @@ describe("generation", function () {
|
||||
]
|
||||
}, "sourcemap was incorrectly generated");
|
||||
|
||||
chai.expect(generated.rawMappings).to.deep.equal([
|
||||
{ name: undefined,
|
||||
generated: { line: 1, column: 0 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 0 } },
|
||||
{ name: "hi",
|
||||
generated: { line: 1, column: 9 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 9 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 1, column: 11 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 0 } },
|
||||
{ name: "msg",
|
||||
generated: { line: 1, column: 12 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 13 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 1, column: 15 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 0 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 1, column: 17 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 18 } },
|
||||
{ name: "console",
|
||||
generated: { line: 2, column: 0 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 20 } },
|
||||
{ name: "log",
|
||||
generated: { line: 2, column: 10 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 28 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 2, column: 13 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 20 } },
|
||||
{ name: "msg",
|
||||
generated: { line: 2, column: 14 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 32 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 2, column: 17 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 20 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 3, column: 0 },
|
||||
source: "a.js",
|
||||
original: { line: 1, column: 39 } },
|
||||
{ name: "hi",
|
||||
generated: { line: 5, column: 0 },
|
||||
source: "b.js",
|
||||
original: { line: 1, column: 0 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 5, column: 3 },
|
||||
source: "b.js",
|
||||
original: { line: 1, column: 3 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 5, column: 10 },
|
||||
source: "b.js",
|
||||
original: { line: 1, column: 0 } },
|
||||
], "raw mappings were incorrectly generated");
|
||||
|
||||
chai.expect(generated.code).to.equal(
|
||||
"function hi(msg) {\n console.log(msg);\n}\n\nhi('hello');",
|
||||
"code was incorrectly generated"
|
||||
@@ -92,11 +155,54 @@ describe("generation", function () {
|
||||
sourcesContent: [ "function foo() { bar; }\n" ]
|
||||
}, "sourcemap was incorrectly generated");
|
||||
|
||||
chai.expect(generated.rawMappings).to.deep.equal([
|
||||
{ name: undefined,
|
||||
generated: { line: 1, column: 0 },
|
||||
source: "inline",
|
||||
original: { line: 1, column: 0 } },
|
||||
{ name: "foo",
|
||||
generated: { line: 1, column: 9 },
|
||||
source: "inline",
|
||||
original: { line: 1, column: 9 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 1, column: 13 },
|
||||
source: "inline",
|
||||
original: { line: 1, column: 0 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 1, column: 16 },
|
||||
source: "inline",
|
||||
original: { line: 1, column: 15 } },
|
||||
{ name: "bar",
|
||||
generated: { line: 2, column: 0 },
|
||||
source: "inline",
|
||||
original: { line: 1, column: 17 } },
|
||||
{ name: undefined,
|
||||
generated: { line: 3, column: 0 },
|
||||
source: "inline",
|
||||
original: { line: 1, column: 23 } },
|
||||
], "raw mappings were incorrectly generated");
|
||||
|
||||
chai.expect(generated.code).to.equal(
|
||||
"function foo2() {\n bar2;\n}",
|
||||
"code was incorrectly generated"
|
||||
);
|
||||
});
|
||||
|
||||
it("lazy source map generation", function() {
|
||||
let code = "function hi (msg) { console.log(msg); }\n";
|
||||
|
||||
let ast = parse(code, { filename: "a.js" }).program;
|
||||
let generated = generate.default(ast, {
|
||||
sourceFileName: "a.js",
|
||||
sourceMaps: true,
|
||||
});
|
||||
|
||||
chai.expect(generated.rawMappings).to.be.an("array");
|
||||
|
||||
chai.expect(generated).ownPropertyDescriptor("map").not.to.have.property("value");
|
||||
|
||||
chai.expect(generated.map).to.be.an("object");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user