mirror of https://github.com/nodejs/node.git
module: add sourceURL magic comment hinting generated source
Source map is not necessary in strip-only mode. However, to map the source file in debuggers to the original TypeScript source, add a sourceURL magic comment to hint that it is a generated source. PR-URL: https://github.com/nodejs/node/pull/54402 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Kohei Ueno <kohei.ueno119@gmail.com> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
parent
68e94c1e75
commit
5376e6906e
|
@ -371,7 +371,10 @@ function stripTypeScriptTypes(source, filename) {
|
|||
const base64SourceMap = Buffer.from(map).toString('base64');
|
||||
return `${code}\n\n//# sourceMappingURL=data:application/json;base64,${base64SourceMap}`;
|
||||
}
|
||||
return code;
|
||||
// Source map is not necessary in strip-only mode. However, to map the source
|
||||
// file in debuggers to the original TypeScript source, add a sourceURL magic
|
||||
// comment to hint that it is a generated source.
|
||||
return `${code}\n\n//# sourceURL=${filename}`;
|
||||
}
|
||||
|
||||
function isUnderNodeModules(filename) {
|
||||
|
|
|
@ -271,6 +271,14 @@ class InspectorSession {
|
|||
`break on ${url}:${line}`);
|
||||
}
|
||||
|
||||
waitForPauseOnStart() {
|
||||
return this
|
||||
.waitForNotification(
|
||||
(notification) =>
|
||||
notification.method === 'Debugger.paused' && notification.params.reason === 'Break on start',
|
||||
'break on start');
|
||||
}
|
||||
|
||||
pausedDetails() {
|
||||
return this._pausedDetails;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
'use strict';
|
||||
|
||||
const common = require('../common');
|
||||
common.skipIfInspectorDisabled();
|
||||
if (!process.config.variables.node_use_amaro) common.skip('Requires Amaro');
|
||||
|
||||
const { NodeInstance } = require('../common/inspector-helper.js');
|
||||
const fixtures = require('../common/fixtures');
|
||||
const assert = require('assert');
|
||||
|
||||
const scriptPath = fixtures.path('typescript/ts/test-typescript.ts');
|
||||
|
||||
async function runTest() {
|
||||
const child = new NodeInstance(
|
||||
['--inspect-brk=0', '--experimental-strip-types'],
|
||||
undefined,
|
||||
scriptPath);
|
||||
|
||||
const session = await child.connectInspectorSession();
|
||||
|
||||
const commands = [
|
||||
{ 'method': 'Debugger.enable' },
|
||||
{ 'method': 'Runtime.enable' },
|
||||
{ 'method': 'Runtime.runIfWaitingForDebugger' },
|
||||
];
|
||||
|
||||
await session.send(commands);
|
||||
|
||||
const scriptParsed = await session.waitForNotification((notification) => {
|
||||
if (notification.method !== 'Debugger.scriptParsed') return false;
|
||||
|
||||
return notification.params.url === scriptPath;
|
||||
});
|
||||
// Verify that the script has a sourceURL, hinting that it is a generated source.
|
||||
assert(scriptParsed.params.hasSourceURL);
|
||||
|
||||
await session.waitForPauseOnStart();
|
||||
await session.runToCompletion();
|
||||
|
||||
assert.strictEqual((await child.expectShutdown()).exitCode, 0);
|
||||
}
|
||||
|
||||
runTest().then(common.mustCall());
|
Loading…
Reference in New Issue