monaco-languageclient 10.0.0 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +5 -6
- package/lib/common/logging.d.ts.map +1 -1
- package/lib/common/logging.js.map +1 -1
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +0 -4
- package/lib/common/utils.js.map +1 -1
- package/lib/debugger/index.d.ts +38 -0
- package/lib/debugger/index.d.ts.map +1 -0
- package/lib/debugger/index.js +109 -0
- package/lib/debugger/index.js.map +1 -0
- package/lib/editorApp/editorApp.d.ts +2 -2
- package/lib/editorApp/editorApp.d.ts.map +1 -1
- package/lib/editorApp/editorApp.js +3 -3
- package/lib/editorApp/editorApp.js.map +1 -1
- package/lib/fs/definitions.d.ts +1 -6
- package/lib/fs/definitions.d.ts.map +1 -1
- package/lib/fs/definitions.js +1 -11
- package/lib/fs/definitions.js.map +1 -1
- package/lib/fs/endpoints/defaultEndpoint.d.ts +1 -2
- package/lib/fs/endpoints/defaultEndpoint.d.ts.map +1 -1
- package/lib/fs/endpoints/defaultEndpoint.js +0 -5
- package/lib/fs/endpoints/defaultEndpoint.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/vscode/apiWrapper.d.ts +2 -6
- package/lib/vscode/apiWrapper.d.ts.map +1 -1
- package/lib/vscode/apiWrapper.js +10 -14
- package/lib/vscode/apiWrapper.js.map +1 -1
- package/lib/vscode/config.d.ts +2 -3
- package/lib/vscode/config.d.ts.map +1 -1
- package/lib/vscode/locales.d.ts +2 -1
- package/lib/vscode/locales.d.ts.map +1 -1
- package/lib/vscode/locales.js +3 -6
- package/lib/vscode/locales.js.map +1 -1
- package/lib/vscode/utils.d.ts +2 -2
- package/lib/vscode/utils.d.ts.map +1 -1
- package/lib/vscode/utils.js +2 -2
- package/lib/vscode/utils.js.map +1 -1
- package/lib/vscode/viewsService.d.ts.map +1 -1
- package/lib/vscode/viewsService.js.map +1 -1
- package/lib/worker/fakeWorker.d.ts.map +1 -1
- package/lib/worker/fakeWorker.js.map +1 -1
- package/lib/worker/workerFactory.d.ts.map +1 -1
- package/lib/worker/workerFactory.js.map +1 -1
- package/lib/worker/workerLoaders.d.ts +1 -1
- package/lib/worker/workerLoaders.d.ts.map +1 -1
- package/lib/worker/workerLoaders.js +0 -4
- package/lib/worker/workerLoaders.js.map +1 -1
- package/lib/wrapper/lcconfig.js +0 -4
- package/lib/wrapper/lcconfig.js.map +1 -1
- package/lib/wrapper/lcmanager.d.ts.map +1 -1
- package/lib/wrapper/lcmanager.js +0 -4
- package/lib/wrapper/lcmanager.js.map +1 -1
- package/lib/wrapper/lcwrapper.d.ts.map +1 -1
- package/lib/wrapper/lcwrapper.js.map +1 -1
- package/package.json +45 -38
- package/src/debugger/index.ts +168 -0
- package/src/editorApp/editorApp.ts +3 -3
- package/src/fs/definitions.ts +1 -6
- package/src/fs/endpoints/defaultEndpoint.ts +1 -2
- package/src/vscode/apiWrapper.ts +14 -21
- package/src/vscode/config.ts +3 -3
- package/src/vscode/locales.ts +3 -2
- package/src/vscode/utils.ts +2 -2
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/* --------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2024 TypeFox and others.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
|
+
* ------------------------------------------------------------------------------------------ */
|
|
5
|
+
|
|
6
|
+
import { RegisteredMemoryFile } from '@codingame/monaco-vscode-files-service-override';
|
|
7
|
+
import type { Logger } from 'monaco-languageclient/common';
|
|
8
|
+
import type { ExtensionConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
9
|
+
import * as vscode from 'vscode';
|
|
10
|
+
import { Uri } from 'vscode';
|
|
11
|
+
|
|
12
|
+
// This is derived from:
|
|
13
|
+
// https://github.com/CodinGame/monaco-vscode-api/blob/main/demo/src/features/debugger.ts
|
|
14
|
+
// The client configuration is generic and can be used for a another language
|
|
15
|
+
|
|
16
|
+
export type FileDefinition = {
|
|
17
|
+
path: string;
|
|
18
|
+
code: string;
|
|
19
|
+
uri: Uri;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type InitMessage = {
|
|
23
|
+
id: 'init',
|
|
24
|
+
files: Record<string, FileDefinition>
|
|
25
|
+
defaultFile: string;
|
|
26
|
+
debuggerExecCall: string;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export type ConfigParams = {
|
|
30
|
+
extensionName: string;
|
|
31
|
+
version: string;
|
|
32
|
+
publisher: string;
|
|
33
|
+
languageId: string;
|
|
34
|
+
documentSelector: string[];
|
|
35
|
+
homeDir: string;
|
|
36
|
+
workspaceRoot: string;
|
|
37
|
+
workspaceFile: Uri;
|
|
38
|
+
htmlContainer: HTMLElement;
|
|
39
|
+
protocol: 'ws' | 'wss';
|
|
40
|
+
hostname: string;
|
|
41
|
+
port: number;
|
|
42
|
+
files: Map<string, FileDefinition>;
|
|
43
|
+
defaultFile: string;
|
|
44
|
+
helpContainerCmd: string;
|
|
45
|
+
debuggerExecCall: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const provideDebuggerExtensionConfig = (config: ConfigParams): ExtensionConfig => {
|
|
49
|
+
const filesOrContents = new Map<string, string | URL>();
|
|
50
|
+
filesOrContents.set('./extension.js', '// nothing');
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
config: {
|
|
54
|
+
name: config.extensionName,
|
|
55
|
+
publisher: config.publisher,
|
|
56
|
+
version: config.version,
|
|
57
|
+
engines: {
|
|
58
|
+
vscode: '*'
|
|
59
|
+
},
|
|
60
|
+
// A browser field is mandatory for the extension to be flagged as `web`
|
|
61
|
+
browser: 'extension.js',
|
|
62
|
+
contributes: {
|
|
63
|
+
debuggers: [
|
|
64
|
+
{
|
|
65
|
+
type: config.languageId,
|
|
66
|
+
label: 'Test',
|
|
67
|
+
languages: [config.languageId]
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
breakpoints: [
|
|
71
|
+
{
|
|
72
|
+
language: config.languageId
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
activationEvents: [
|
|
77
|
+
'onDebug'
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
filesOrContents
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const configureDebugging = async (api: typeof vscode, config: ConfigParams, logger?: Logger) => {
|
|
85
|
+
class WebsocketDebugAdapter implements vscode.DebugAdapter {
|
|
86
|
+
private websocket: WebSocket;
|
|
87
|
+
|
|
88
|
+
constructor(websocket: WebSocket) {
|
|
89
|
+
this.websocket = websocket;
|
|
90
|
+
this.websocket.onmessage = (message) => {
|
|
91
|
+
this._onDidSendMessage.fire(JSON.parse(message.data));
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
_onDidSendMessage = new api.EventEmitter<vscode.DebugProtocolMessage>();
|
|
96
|
+
onDidSendMessage = this._onDidSendMessage.event;
|
|
97
|
+
|
|
98
|
+
handleMessage(message: vscode.DebugProtocolMessage): void {
|
|
99
|
+
// path with on Windows (Chrome/Firefox) arrive here with \\ and not like expected with /
|
|
100
|
+
// Chrome on Ubuntu behaves as expected
|
|
101
|
+
const msg = JSON.stringify(message).replaceAll('\\\\', '/');
|
|
102
|
+
this.websocket.send(msg);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
dispose() {
|
|
106
|
+
this.websocket.close();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
api.debug.registerDebugAdapterDescriptorFactory(config.languageId, {
|
|
111
|
+
async createDebugAdapterDescriptor() {
|
|
112
|
+
const websocket = new WebSocket(`${config.protocol}://${config.hostname}:${config.port}`);
|
|
113
|
+
|
|
114
|
+
await new Promise((resolve, reject) => {
|
|
115
|
+
websocket.onopen = resolve;
|
|
116
|
+
websocket.onerror = () =>
|
|
117
|
+
reject(new Error(`Unable to connect to debugger server. Run "${config.helpContainerCmd}"`));
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
const adapter = new WebsocketDebugAdapter(websocket);
|
|
121
|
+
|
|
122
|
+
const initMessage: InitMessage = {
|
|
123
|
+
id: 'init',
|
|
124
|
+
files: {},
|
|
125
|
+
// the default file is the one that will be used by the debugger
|
|
126
|
+
defaultFile: config.defaultFile,
|
|
127
|
+
debuggerExecCall: config.debuggerExecCall
|
|
128
|
+
};
|
|
129
|
+
for (const [name, fileDef] of config.files.entries()) {
|
|
130
|
+
logger?.info(`Found: ${name} Sending file: ${fileDef.path}`);
|
|
131
|
+
initMessage.files[name] = {
|
|
132
|
+
path: fileDef.path,
|
|
133
|
+
code: fileDef.code,
|
|
134
|
+
uri: fileDef.uri
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
websocket.send(JSON.stringify(initMessage));
|
|
138
|
+
|
|
139
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
140
|
+
adapter.onDidSendMessage((message: any) => {
|
|
141
|
+
if (message.type === 'event' && message.event === 'output') {
|
|
142
|
+
logger?.info('OUTPUT', message.body.output);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
return new api.DebugAdapterInlineImplementation(adapter);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export const createDebugLaunchConfigFile = (workspacePath: string, type: string) => {
|
|
151
|
+
return new RegisteredMemoryFile(
|
|
152
|
+
Uri.file(`${workspacePath}/.vscode/launch.json`),
|
|
153
|
+
JSON.stringify(
|
|
154
|
+
{
|
|
155
|
+
version: '0.2.0',
|
|
156
|
+
configurations: [
|
|
157
|
+
{
|
|
158
|
+
name: 'Debugger: Lauch',
|
|
159
|
+
type,
|
|
160
|
+
request: 'attach',
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
null,
|
|
165
|
+
2
|
|
166
|
+
)
|
|
167
|
+
);
|
|
168
|
+
};
|
|
@@ -416,11 +416,11 @@ export class EditorApp {
|
|
|
416
416
|
}
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
updateLayout() {
|
|
419
|
+
updateLayout(dimension?: monaco.editor.IDimension, postponeRendering?: boolean) {
|
|
420
420
|
if (this.isDiffEditor()) {
|
|
421
|
-
this.diffEditor?.layout();
|
|
421
|
+
this.diffEditor?.layout(dimension, postponeRendering);
|
|
422
422
|
} else {
|
|
423
|
-
this.editor?.layout();
|
|
423
|
+
this.editor?.layout(dimension, postponeRendering);
|
|
424
424
|
}
|
|
425
425
|
}
|
|
426
426
|
|
package/src/fs/definitions.ts
CHANGED
|
@@ -50,12 +50,7 @@ export interface StatsRequestResult {
|
|
|
50
50
|
mtime: number
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
export
|
|
54
|
-
DRIVER,
|
|
55
|
-
FOLLOWER,
|
|
56
|
-
LOCAL,
|
|
57
|
-
EMPTY
|
|
58
|
-
}
|
|
53
|
+
export type EndpointType = 'DRIVER' | 'FOLLOWER' | 'LOCAL' | 'EMPTY';
|
|
59
54
|
|
|
60
55
|
export interface FileSystemCapabilities {
|
|
61
56
|
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import type { Logger } from 'monaco-languageclient/common';
|
|
7
|
-
import type { DirectoryListingRequest, DirectoryListingRequestResult, FileReadRequest, FileReadRequestResult, FileSystemEndpoint, FileUpdate, FileUpdateResult, StatsRequest, StatsRequestResult } from '../definitions.js';
|
|
8
|
-
import { EndpointType } from '../definitions.js';
|
|
7
|
+
import type { DirectoryListingRequest, DirectoryListingRequestResult, EndpointType, FileReadRequest, FileReadRequestResult, FileSystemEndpoint, FileUpdate, FileUpdateResult, StatsRequest, StatsRequestResult } from '../definitions.js';
|
|
9
8
|
|
|
10
9
|
export class EmptyFileSystemEndpoint implements FileSystemEndpoint {
|
|
11
10
|
|
package/src/vscode/apiWrapper.ts
CHANGED
|
@@ -17,14 +17,10 @@ import 'vscode/localExtensionHost';
|
|
|
17
17
|
import type { ExtensionConfig, MonacoVscodeApiConfig, ViewsConfig } from './config.js';
|
|
18
18
|
import { configureExtHostWorker, getEnhancedMonacoEnvironment, mergeServices, reportServiceLoading, useOpenEditorStub } from './utils.js';
|
|
19
19
|
|
|
20
|
-
export interface ViewsConfigRuntime extends ViewsConfig {
|
|
21
|
-
htmlContainer: HTMLElement;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
20
|
export interface MonacoVscodeApiConfigRuntime extends MonacoVscodeApiConfig {
|
|
25
21
|
serviceOverrides: monaco.editor.IEditorOverrideServices;
|
|
26
22
|
logLevel: LogLevel | number;
|
|
27
|
-
viewsConfig:
|
|
23
|
+
viewsConfig: ViewsConfig;
|
|
28
24
|
}
|
|
29
25
|
|
|
30
26
|
export interface StartInstructions {
|
|
@@ -40,17 +36,18 @@ export class MonacoVscodeApiWrapper {
|
|
|
40
36
|
private apiConfig: MonacoVscodeApiConfigRuntime;
|
|
41
37
|
|
|
42
38
|
constructor(apiConfig: MonacoVscodeApiConfig) {
|
|
43
|
-
const
|
|
39
|
+
const viewsConfigType = apiConfig.viewsConfig.$type;
|
|
40
|
+
if ((viewsConfigType === 'ViewsService' || viewsConfigType === 'WorkbenchService') &&
|
|
41
|
+
apiConfig.viewsConfig.htmlContainer === undefined) {
|
|
42
|
+
|
|
43
|
+
throw new Error(`View Service Type "${viewsConfigType}" requires a HTMLElement.`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
this.apiConfig = {
|
|
44
47
|
...apiConfig,
|
|
45
48
|
serviceOverrides: apiConfig.serviceOverrides ?? {},
|
|
46
49
|
logLevel: apiConfig.logLevel ?? LogLevel.Off,
|
|
47
50
|
};
|
|
48
|
-
if (intermediate.viewsConfig.htmlContainer === 'ReactPlaceholder') {
|
|
49
|
-
// this is temporary and must be overriden at start by react component with
|
|
50
|
-
// correct react dom element
|
|
51
|
-
intermediate.viewsConfig.htmlContainer = document.body;
|
|
52
|
-
}
|
|
53
|
-
this.apiConfig = intermediate as MonacoVscodeApiConfigRuntime;
|
|
54
51
|
this.logger.setLevel(this.apiConfig.logLevel);
|
|
55
52
|
}
|
|
56
53
|
|
|
@@ -66,10 +63,6 @@ export class MonacoVscodeApiWrapper {
|
|
|
66
63
|
return this.apiConfig;
|
|
67
64
|
}
|
|
68
65
|
|
|
69
|
-
getHtmlContainer() {
|
|
70
|
-
return this.apiConfig.viewsConfig.htmlContainer;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
66
|
protected configureMonacoWorkers() {
|
|
74
67
|
if (typeof this.apiConfig.monacoWorkerFactory === 'function') {
|
|
75
68
|
this.apiConfig.monacoWorkerFactory(this.logger);
|
|
@@ -100,7 +93,7 @@ export class MonacoVscodeApiWrapper {
|
|
|
100
93
|
|
|
101
94
|
protected async configureViewsServices() {
|
|
102
95
|
const viewsConfigType = this.apiConfig.viewsConfig.$type;
|
|
103
|
-
if (this.apiConfig.$type === 'classic' && (viewsConfigType === 'ViewsService' || viewsConfigType === '
|
|
96
|
+
if (this.apiConfig.$type === 'classic' && (viewsConfigType === 'ViewsService' || viewsConfigType === 'WorkbenchService')) {
|
|
104
97
|
throw new Error(`View Service Type "${viewsConfigType}" cannot be used with classic configuration.`);
|
|
105
98
|
}
|
|
106
99
|
|
|
@@ -111,12 +104,12 @@ export class MonacoVscodeApiWrapper {
|
|
|
111
104
|
...getViewsServiceOverride(this.apiConfig.viewsConfig.openEditorFunc ?? useOpenEditorStub)
|
|
112
105
|
});
|
|
113
106
|
envEnhanced.viewServiceType = 'ViewsService';
|
|
114
|
-
} else if (viewsConfigType === '
|
|
107
|
+
} else if (viewsConfigType === 'WorkbenchService') {
|
|
115
108
|
const getWorkbenchServiceOverride = (await import('@codingame/monaco-vscode-workbench-service-override')).default;
|
|
116
109
|
mergeServices(this.apiConfig.serviceOverrides, {
|
|
117
110
|
...getWorkbenchServiceOverride()
|
|
118
111
|
});
|
|
119
|
-
envEnhanced.viewServiceType = '
|
|
112
|
+
envEnhanced.viewServiceType = 'WorkbenchService';
|
|
120
113
|
} else {
|
|
121
114
|
const getEditorServiceOverride = (await import('@codingame/monaco-vscode-editor-service-override')).default;
|
|
122
115
|
mergeServices(this.apiConfig.serviceOverrides, {
|
|
@@ -241,7 +234,7 @@ export class MonacoVscodeApiWrapper {
|
|
|
241
234
|
this.checkServiceConsistency();
|
|
242
235
|
}
|
|
243
236
|
|
|
244
|
-
if (this.apiConfig.viewsConfig.$type === 'ViewsService' || this.apiConfig.viewsConfig.$type === '
|
|
237
|
+
if (this.apiConfig.viewsConfig.$type === 'ViewsService' || this.apiConfig.viewsConfig.$type === 'WorkbenchService') {
|
|
245
238
|
await initialize(services, this.apiConfig.viewsConfig.htmlContainer, this.apiConfig.workspaceConfig, this.apiConfig.envOptions);
|
|
246
239
|
} else {
|
|
247
240
|
await initialize(services, undefined, this.apiConfig.workspaceConfig, this.apiConfig.envOptions);
|
|
@@ -308,7 +301,7 @@ export class MonacoVscodeApiWrapper {
|
|
|
308
301
|
this.logger.debug('markGlobalInitDone');
|
|
309
302
|
}
|
|
310
303
|
|
|
311
|
-
overrideViewsConfig(viewsConfigOverride:
|
|
304
|
+
overrideViewsConfig(viewsConfigOverride: ViewsConfig) {
|
|
312
305
|
const orgViewsConfig = this.apiConfig.viewsConfig;
|
|
313
306
|
this.apiConfig.viewsConfig = {
|
|
314
307
|
$type: viewsConfigOverride.$type,
|
package/src/vscode/config.ts
CHANGED
|
@@ -13,9 +13,9 @@ import type { Logger } from 'monaco-languageclient/common';
|
|
|
13
13
|
|
|
14
14
|
export type OverallConfigType = 'extended' | 'classic';
|
|
15
15
|
|
|
16
|
-
export type ViewsConfigTypes = 'EditorService' | 'ViewsService' | '
|
|
16
|
+
export type ViewsConfigTypes = 'EditorService' | 'ViewsService' | 'WorkbenchService';
|
|
17
17
|
|
|
18
|
-
export type HtmlContainerConfig = HTMLElement
|
|
18
|
+
// export type HtmlContainerConfig = HTMLElement;
|
|
19
19
|
|
|
20
20
|
export interface MonacoEnvironmentEnhanced extends monaco.Environment {
|
|
21
21
|
vscodeApiInitialising?: boolean;
|
|
@@ -31,7 +31,7 @@ export interface UserConfiguration {
|
|
|
31
31
|
|
|
32
32
|
export interface ViewsConfig {
|
|
33
33
|
$type: ViewsConfigTypes;
|
|
34
|
-
htmlContainer
|
|
34
|
+
htmlContainer?: HTMLElement;
|
|
35
35
|
openEditorFunc?: OpenEditor;
|
|
36
36
|
htmlAugmentationInstructions?: (htmlContainer: HTMLElement | null | undefined) => void;
|
|
37
37
|
viewsInitFunc?: () => Promise<void>;
|
package/src/vscode/locales.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import type { LocalizationOptions } from '@codingame/monaco-vscode-localization-service-override';
|
|
7
|
+
import { type Logger } from 'monaco-languageclient/common';
|
|
7
8
|
|
|
8
9
|
export const createDefaultLocaleConfiguration = (): LocalizationOptions => {
|
|
9
10
|
return {
|
|
@@ -116,13 +117,13 @@ const localeLoader: Partial<Record<string, () => Promise<void>>> = {
|
|
|
116
117
|
|
|
117
118
|
export const locales = Object.keys(localeLoader);
|
|
118
119
|
|
|
119
|
-
export const initLocaleLoader = async (locale = new URLSearchParams(window.location.search).get('locale')) => {
|
|
120
|
+
export const initLocaleLoader = async (locale = new URLSearchParams(window.location.search).get('locale'), logger?: Logger) => {
|
|
120
121
|
if (locale !== null) {
|
|
121
122
|
const loader = localeLoader[locale];
|
|
122
123
|
if (loader) {
|
|
123
124
|
await loader();
|
|
124
125
|
} else {
|
|
125
|
-
|
|
126
|
+
logger?.error(`Unknown locale ${locale}`);
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
129
|
};
|
package/src/vscode/utils.ts
CHANGED
|
@@ -60,7 +60,7 @@ export const configureExtHostWorker = async (enableExtHostWorker: boolean, userS
|
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
62
|
|
|
63
|
-
export const useOpenEditorStub: OpenEditor = async (modelRef, options, sideBySide) => {
|
|
64
|
-
|
|
63
|
+
export const useOpenEditorStub: OpenEditor = async (modelRef, options, sideBySide, logger?: Logger) => {
|
|
64
|
+
logger?.info('Received open editor call with parameters: ', modelRef, options, sideBySide);
|
|
65
65
|
return undefined;
|
|
66
66
|
};
|