microsoft/vscode-react-native
Publicmirrored from https://github.com/microsoft/vscode-react-nativeAvailable
src/debugger/jsDebugConfigAdapter.ts
65lines · modeblame
1bdccb66RedMickey6 years ago | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. |
| 2 | // Licensed under the MIT license. See LICENSE file in the project root for details. | |
| 3 | | |
| 4 | import { IAttachRequestArgs } from "./debugSessionBase"; | |
| 5 | | |
| 6 | export class JsDebugConfigAdapter { | |
34472878RedMickey5 years ago | 7 | public static createDebuggingConfigForPureRN( |
| 8 | attachArgs: IAttachRequestArgs, | |
| 9 | cdpProxyPort: number, | |
| 10 | sessionId: string, | |
| 11 | ): any { | |
1bdccb66RedMickey6 years ago | 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, | |
a32e1e1fYuri Skorokhodov5 years ago | 22 | // Fixes https://github.com/microsoft/vscode/issues/102042 |
34472878RedMickey5 years ago | 23 | resolveSourceMapLocations: ["!**/debuggerWorker.js"], |
1bdccb66RedMickey6 years ago | 24 | }); |
| 25 | } | |
| 26 | | |
34472878RedMickey5 years ago | 27 | public static createDebuggingConfigForRNHermes( |
| 28 | attachArgs: IAttachRequestArgs, | |
| 29 | cdpProxyPort: number, | |
| 30 | sessionId: string, | |
| 31 | ): any { | |
1bdccb66RedMickey6 years ago | 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, | |
2eb6cdb6RedMickey5 years ago | 42 | // We need to provide js-debug with the "**" pattern, so that it can get source maps over a http URL |
34472878RedMickey5 years ago | 43 | resolveSourceMapLocations: ["**", "!**/node_modules/**"], |
1bdccb66RedMickey6 years ago | 44 | }); |
| 45 | } | |
| 46 | | |
| 47 | private static getExistingExtraArgs(attachArgs: IAttachRequestArgs): any { | |
| 48 | let existingExtraArgs: any = {}; | |
| 49 | if (attachArgs.env) { | |
| 50 | existingExtraArgs.env = attachArgs.env; | |
| 51 | } | |
| 52 | if (attachArgs.envFile) { | |
| 53 | existingExtraArgs.envFile = attachArgs.envFile; | |
| 54 | } | |
4dfc9ffdRedMickey5 years ago | 55 | existingExtraArgs.sourceMaps = attachArgs.sourceMaps; |
1bdccb66RedMickey6 years ago | 56 | if (attachArgs.sourceMapPathOverrides) { |
| 57 | existingExtraArgs.sourceMapPathOverrides = attachArgs.sourceMapPathOverrides; | |
| 58 | } | |
| 59 | if (attachArgs.skipFiles) { | |
| 60 | existingExtraArgs.skipFiles = attachArgs.skipFiles; | |
| 61 | } | |
| 62 | | |
| 63 | return existingExtraArgs; | |
| 64 | } | |
| 65 | } |