mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
* Improve support for \`debug-adapter-protocol\` * More improvements, fix formatting in debug console * Fix attaching * Prepare for source maps * Start of source map support, breakpoints work * Source map support * add some package.jsons * wip * Update package.json * More fixes * Make source maps safer if exception occurs * Check bun version if it fails * Fix console.log formatting * Fix source maps partly * More source map fixes * Prepare for extension * watch mode with dap * Improve preview code * Prepare for extension 2 --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
import { test, expect } from "bun:test";
|
|
import { readFileSync } from "node:fs";
|
|
import { SourceMap } from "./sourcemap";
|
|
|
|
test("works without source map", () => {
|
|
const sourceMap = getSourceMap("without-sourcemap.js");
|
|
expect(sourceMap.generatedLocation({ line: 7 })).toEqual({ line: 7, column: 0, verified: true });
|
|
expect(sourceMap.generatedLocation({ line: 7, column: 2 })).toEqual({ line: 7, column: 2, verified: true });
|
|
expect(sourceMap.originalLocation({ line: 11 })).toEqual({ line: 11, column: 0, verified: true });
|
|
expect(sourceMap.originalLocation({ line: 11, column: 2 })).toEqual({ line: 11, column: 2, verified: true });
|
|
});
|
|
|
|
test("works with source map", () => {
|
|
const sourceMap = getSourceMap("with-sourcemap.js");
|
|
// FIXME: Columns don't appear to be accurate for `generatedLocation`
|
|
expect(sourceMap.generatedLocation({ line: 3 })).toMatchObject({ line: 4, verified: true });
|
|
expect(sourceMap.generatedLocation({ line: 27 })).toMatchObject({ line: 20, verified: true });
|
|
expect(sourceMap.originalLocation({ line: 32 })).toEqual({ line: 43, column: 4, verified: true });
|
|
expect(sourceMap.originalLocation({ line: 13 })).toEqual({ line: 13, column: 6, verified: true });
|
|
});
|
|
|
|
function getSourceMap(filename: string): SourceMap {
|
|
const { pathname } = new URL(`./fixtures/${filename}`, import.meta.url);
|
|
const source = readFileSync(pathname, "utf-8");
|
|
const match = source.match(/\/\/# sourceMappingURL=(.*)$/m);
|
|
if (match) {
|
|
const [, url] = match;
|
|
return SourceMap(url);
|
|
}
|
|
return SourceMap();
|
|
}
|