MCPcopy
hub / github.com/microsoft/vscode-js-debug / DisableSourceMapUI

Class DisableSourceMapUI

src/ui/disableSourceMapUI.ts:14–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12
13@injectable()
14export class DisableSourceMapUI implements IExtensionContribution {
15 public register(context: ExtensionContext) {
16 context.subscriptions.push(
17 vscode.debug.onDidReceiveDebugSessionCustomEvent(evt => {
18 if (evt.event !== 'suggestDisableSourcemap' || !isDebugType(evt.session.type)) {
19 return;
20 }
21
22 const body = evt.body as Dap.SuggestDisableSourcemapEventParams;
23 this.unmap(evt.session, body.source).catch(err =>
24 vscode.window.showErrorMessage(err.message)
25 );
26 }),
27 );
28 }
29
30 private async unmap(session: vscode.DebugSession, source: Dap.Source) {
31 const autoUnmap = readConfig(vscode.workspace, Configuration.UnmapMissingSources);
32 if (autoUnmap || (await this.prompt())) {
33 await session.customRequest('disableSourcemap', { source });
34 }
35 }
36
37 private async prompt() {
38 const always = l10n.t('Always');
39 const alwayInWorkspace = l10n.t('Always in this Workspace');
40 const yes = l10n.t('Yes');
41
42 const result = await vscode.window.showInformationMessage(
43 l10n.t(
44 'This is a missing file path referenced by a sourcemap. Would you like to debug the compiled version instead?',
45 ),
46 always,
47 alwayInWorkspace,
48 l10n.t('No'),
49 yes,
50 );
51
52 switch (result) {
53 case always:
54 writeConfig(
55 vscode.workspace,
56 Configuration.UnmapMissingSources,
57 true,
58 vscode.ConfigurationTarget.Global,
59 );
60 return true;
61 case alwayInWorkspace:
62 writeConfig(
63 vscode.workspace,
64 Configuration.UnmapMissingSources,
65 true,
66 vscode.ConfigurationTarget.Workspace,
67 );
68 return true;
69 case yes:
70 return true;
71 default:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected