microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
1.12.2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/debugger/jsDebugConfigAdapter.ts

88lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
4import { IAttachRequestArgs } from "./debugSessionBase";
5
6export class JsDebugConfigAdapter {
7 public static createDebuggingConfigForPureRN(
8 attachArgs: IAttachRequestArgs,
9 cdpProxyPort: number,
10 sessionId: string,
11 ): any {
12 return Object.assign({}, JsDebugConfigAdapter.getExistingExtraArgs(attachArgs), {
13 type: "pwa-node",
14 request: "attach",
15 name: "Attach",
16 continueOnAttach: true,
17 port: cdpProxyPort,
18 // The unique identifier of the debug session. It is used to distinguish React Native extension's
19 // debug sessions from other ones. So we can save and process only the extension's debug sessions
20 // in vscode.debug API methods "onDidStartDebugSession" and "onDidTerminateDebugSession".
21 rnDebugSessionId: sessionId,
22 // Fixes https://github.com/microsoft/vscode/issues/102042
23 resolveSourceMapLocations: ["!**/debuggerWorker.js"],
24 });
25 }
26
27 public static createDebuggingConfigForRNHermes(
28 attachArgs: IAttachRequestArgs,
29 cdpProxyPort: number,
30 sessionId: string,
31 ): any {
32 return Object.assign({}, JsDebugConfigAdapter.getExistingExtraArgs(attachArgs), {
33 type: "pwa-node",
34 request: "attach",
35 name: "Attach",
36 continueOnAttach: true,
37 port: cdpProxyPort,
38 // The unique identifier of the debug session. It is used to distinguish React Native extension's
39 // debug sessions from other ones. So we can save and process only the extension's debug sessions
40 // in vscode.debug API methods "onDidStartDebugSession" and "onDidTerminateDebugSession".
41 rnDebugSessionId: sessionId,
42 // We need to provide js-debug with the "**" pattern, so that it can get source maps over a http URL.
43 // We need to allow "**/node_modules/expo/**" path, since Expo source maps URL contains it.
44 resolveSourceMapLocations: ["**", "!**/node_modules/!(expo)/**"],
45 });
46 }
47
48 public static createChromeDebuggingConfig(
49 attachArgs: IAttachRequestArgs,
50 cdpProxyPort: number,
51 pwaSessionName: string,
52 sessionId: string,
53 ): any {
54 const extraArgs: any = {};
55
56 return Object.assign({}, this.getExistingExtraArgs(attachArgs), extraArgs, {
57 type: pwaSessionName,
58 request: "attach",
59 name: "Attach",
60 port: cdpProxyPort,
61 webRoot: attachArgs.cwd,
62 rnDebugSessionId: sessionId,
63 });
64 }
65
66 private static getExistingExtraArgs(attachArgs: IAttachRequestArgs): any {
67 const existingExtraArgs: any = {};
68 if (attachArgs.env) {
69 existingExtraArgs.env = attachArgs.env;
70 }
71 if (attachArgs.envFile) {
72 existingExtraArgs.envFile = attachArgs.envFile;
73 }
74 existingExtraArgs.sourceMaps = attachArgs.sourceMaps;
75 existingExtraArgs.sourceMapRenames = attachArgs.sourceMapRenames;
76 if (attachArgs.sourceMapPathOverrides) {
77 existingExtraArgs.sourceMapPathOverrides = attachArgs.sourceMapPathOverrides;
78 }
79 if (attachArgs.skipFiles) {
80 existingExtraArgs.skipFiles = attachArgs.skipFiles;
81 }
82 if (attachArgs.jsDebugTrace) {
83 existingExtraArgs.trace = attachArgs.jsDebugTrace;
84 }
85
86 return existingExtraArgs;
87 }
88}
89