monaco-editor-wrapper
Advanced tools
Comparing version 1.5.0 to 1.6.0
@@ -13,4 +13,4 @@ import 'monaco-editor/esm/vs/editor/editor.all.js'; | ||
import * as vscode from 'vscode'; | ||
import { MonacoLanguageClient, MessageWriter, MessageReader } from 'monaco-languageclient'; | ||
export declare type WebSocketConfigOptions = { | ||
import { MonacoLanguageClient, MessageTransports } from 'monaco-languageclient'; | ||
export type WebSocketConfigOptions = { | ||
wsSecured: boolean; | ||
@@ -21,3 +21,3 @@ wsHost: string; | ||
}; | ||
export declare type WorkerConfigOptions = { | ||
export type WorkerConfigOptions = { | ||
workerURL: string; | ||
@@ -27,3 +27,3 @@ workerType: 'classic' | 'module'; | ||
}; | ||
export declare type LanguageDescription = { | ||
export type LanguageDescription = { | ||
code: string; | ||
@@ -36,3 +36,3 @@ languageId: string; | ||
*/ | ||
export declare type LanguageExtensionConfig = { | ||
export type LanguageExtensionConfig = { | ||
id: string; | ||
@@ -93,6 +93,2 @@ extensions?: string[]; | ||
} | ||
export declare type WorkerCommunitcationConfig = { | ||
reader: MessageReader; | ||
writer: MessageWriter; | ||
}; | ||
export declare class MonacoEditorLanguageClientWrapper { | ||
@@ -104,3 +100,3 @@ private editor; | ||
private worker; | ||
private workerCommunitcationConfig; | ||
private messageTransports; | ||
private dispatchEvent; | ||
@@ -116,3 +112,4 @@ private id; | ||
updateTheme(): void; | ||
setWorker(worker: Worker, workerCommunitcationConfig?: WorkerCommunitcationConfig): void; | ||
setWorker(worker: Worker, messageTransports?: MessageTransports): void; | ||
getMessageTransports(): MessageTransports | undefined; | ||
isStarted(): boolean; | ||
@@ -123,3 +120,3 @@ startEditor(container?: HTMLElement, dispatchEvent?: (event: Event) => boolean): Promise<string>; | ||
private disposeDiffEditor; | ||
reportStatus(): void; | ||
reportStatus(): string[]; | ||
private disposeLanguageClient; | ||
@@ -126,0 +123,0 @@ private updateMainModel; |
@@ -172,8 +172,11 @@ import 'monaco-editor/esm/vs/editor/editor.all.js'; | ||
} | ||
setWorker(worker, workerCommunitcationConfig) { | ||
setWorker(worker, messageTransports) { | ||
this.worker = worker; | ||
if (workerCommunitcationConfig) { | ||
this.workerCommunitcationConfig = workerCommunitcationConfig; | ||
if (messageTransports) { | ||
this.messageTransports = messageTransports; | ||
} | ||
} | ||
getMessageTransports() { | ||
return this.messageTransports; | ||
} | ||
isStarted() { | ||
@@ -221,2 +224,4 @@ const haveEditor = this.editor !== undefined || this.diffEditor !== undefined; | ||
dispose() { | ||
this.disposeEditor(); | ||
this.disposeDiffEditor(); | ||
if (this.editorConfig.isUseLanguageClient()) { | ||
@@ -226,4 +231,2 @@ return this.disposeLanguageClient(); | ||
else { | ||
this.disposeEditor(); | ||
this.disposeDiffEditor(); | ||
return Promise.resolve('Monaco editor has been disposed'); | ||
@@ -250,11 +253,12 @@ } | ||
reportStatus() { | ||
console.log(`Editor ${this.editor}`); | ||
console.log(`DiffEditor ${this.diffEditor}`); | ||
console.log(`LanguageClient ${this.languageClient}`); | ||
console.log(`Worker ${this.worker}`); | ||
const status = []; | ||
status.push('Wrapper status:'); | ||
status.push(`Editor: ${this.editor}`); | ||
status.push(`DiffEditor: ${this.diffEditor}`); | ||
status.push(`LanguageClient: ${this.languageClient}`); | ||
status.push(`Worker: ${this.worker}`); | ||
return status; | ||
} | ||
async disposeLanguageClient() { | ||
if (this.languageClient && this.languageClient.isRunning()) { | ||
this.disposeEditor(); | ||
this.disposeDiffEditor(); | ||
return await this.languageClient.dispose() | ||
@@ -360,4 +364,2 @@ .then(() => { | ||
} | ||
let reader; | ||
let writer; | ||
return new Promise((resolve, reject) => { | ||
@@ -370,5 +372,7 @@ if (this.editorConfig.isUseWebSocket()) { | ||
const socket = toSocket(webSocket); | ||
const reader = new WebSocketMessageReader(socket); | ||
const writer = new WebSocketMessageWriter(socket); | ||
this.handleLanguageClientStart(reader, writer, resolve, reject); | ||
this.messageTransports = { | ||
reader: new WebSocketMessageReader(socket), | ||
writer: new WebSocketMessageWriter(socket) | ||
}; | ||
this.handleLanguageClientStart(this.messageTransports, resolve, reject); | ||
}; | ||
@@ -384,16 +388,15 @@ } | ||
} | ||
if (this.workerCommunitcationConfig) { | ||
this.handleLanguageClientStart(this.workerCommunitcationConfig.reader, this.workerCommunitcationConfig.writer, resolve, reject); | ||
if (!this.messageTransports) { | ||
this.messageTransports = { | ||
reader: new BrowserMessageReader(this.worker), | ||
writer: new BrowserMessageWriter(this.worker) | ||
}; | ||
} | ||
else { | ||
reader = new BrowserMessageReader(this.worker); | ||
writer = new BrowserMessageWriter(this.worker); | ||
this.handleLanguageClientStart(reader, writer, resolve, reject); | ||
} | ||
this.handleLanguageClientStart(this.messageTransports, resolve, reject); | ||
} | ||
}); | ||
} | ||
async handleLanguageClientStart(reader, writer, resolve, reject) { | ||
this.languageClient = this.createLanguageClient({ reader, writer }); | ||
reader.onClose(() => this.languageClient?.stop()); | ||
async handleLanguageClientStart(messageTransports, resolve, reject) { | ||
this.languageClient = this.createLanguageClient(messageTransports); | ||
messageTransports.reader.onClose(() => this.languageClient?.stop()); | ||
await this.languageClient.start() | ||
@@ -400,0 +403,0 @@ .then(() => { |
@@ -1,4 +0,4 @@ | ||
export type { WebSocketConfigOptions, WorkerConfigOptions, LanguageExtensionConfig, WorkerCommunitcationConfig } from './index.js'; | ||
export type { WebSocketConfigOptions, WorkerConfigOptions, LanguageExtensionConfig } from './index.js'; | ||
export { CodeEditorConfig, MonacoEditorLanguageClientWrapper, monaco, vscode } from './index.js'; | ||
import './indexLanguagesOnly.js'; | ||
//# sourceMappingURL=indexAllLanguages.d.ts.map |
{ | ||
"name": "monaco-editor-wrapper", | ||
"version": "1.5.0", | ||
"version": "1.6.0", | ||
"license": "MIT", | ||
@@ -38,6 +38,2 @@ "description": "Monaco-Editor and Monaco Languageclient Wrapper", | ||
"default": "./dist/generated/css.js" | ||
}, | ||
"./monaco-ttf": { | ||
"types": "./dist/generated/ttf.d.ts", | ||
"default": "./dist/generated/ttf.js" | ||
} | ||
@@ -64,5 +60,2 @@ }, | ||
"dist/generated/css" | ||
], | ||
"monaco-ttf": [ | ||
"dist/generated/ttf" | ||
] | ||
@@ -69,0 +62,0 @@ } |
@@ -17,3 +17,3 @@ import 'monaco-editor/esm/vs/editor/editor.all.js'; | ||
import { MonacoLanguageClient, CloseAction, ErrorAction, MonacoServices, MessageTransports, MessageWriter, MessageReader } from 'monaco-languageclient'; | ||
import { MonacoLanguageClient, CloseAction, ErrorAction, MonacoServices, MessageTransports } from 'monaco-languageclient'; | ||
import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc'; | ||
@@ -215,7 +215,2 @@ import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver-protocol/browser.js'; | ||
export type WorkerCommunitcationConfig = { | ||
reader: MessageReader, | ||
writer: MessageWriter | ||
}; | ||
export class MonacoEditorLanguageClientWrapper { | ||
@@ -228,3 +223,4 @@ | ||
private worker: Worker | undefined; | ||
private workerCommunitcationConfig: WorkerCommunitcationConfig | undefined; | ||
private messageTransports: MessageTransports | undefined; | ||
private dispatchEvent: ((event: Event) => boolean) | undefined; | ||
@@ -270,9 +266,13 @@ | ||
setWorker(worker: Worker, workerCommunitcationConfig?: WorkerCommunitcationConfig) { | ||
setWorker(worker: Worker, messageTransports?: MessageTransports) { | ||
this.worker = worker; | ||
if (workerCommunitcationConfig) { | ||
this.workerCommunitcationConfig = workerCommunitcationConfig; | ||
if (messageTransports) { | ||
this.messageTransports = messageTransports; | ||
} | ||
} | ||
getMessageTransports(): MessageTransports | undefined { | ||
return this.messageTransports; | ||
} | ||
isStarted(): boolean { | ||
@@ -324,2 +324,5 @@ const haveEditor = this.editor !== undefined || this.diffEditor !== undefined; | ||
dispose(): Promise<string> { | ||
this.disposeEditor(); | ||
this.disposeDiffEditor(); | ||
if (this.editorConfig.isUseLanguageClient()) { | ||
@@ -329,4 +332,2 @@ return this.disposeLanguageClient(); | ||
else { | ||
this.disposeEditor(); | ||
this.disposeDiffEditor(); | ||
return Promise.resolve('Monaco editor has been disposed'); | ||
@@ -356,6 +357,9 @@ } | ||
public reportStatus() { | ||
console.log(`Editor ${this.editor}`); | ||
console.log(`DiffEditor ${this.diffEditor}`); | ||
console.log(`LanguageClient ${this.languageClient}`); | ||
console.log(`Worker ${this.worker}`); | ||
const status = []; | ||
status.push('Wrapper status:'); | ||
status.push(`Editor: ${this.editor}`); | ||
status.push(`DiffEditor: ${this.diffEditor}`); | ||
status.push(`LanguageClient: ${this.languageClient}`); | ||
status.push(`Worker: ${this.worker}`); | ||
return status; | ||
} | ||
@@ -365,5 +369,2 @@ | ||
if (this.languageClient && this.languageClient.isRunning()) { | ||
this.disposeEditor(); | ||
this.disposeDiffEditor(); | ||
return await this.languageClient.dispose() | ||
@@ -482,5 +483,2 @@ .then(() => { | ||
let reader: WebSocketMessageReader | BrowserMessageReader; | ||
let writer: WebSocketMessageWriter | BrowserMessageWriter; | ||
return new Promise((resolve, reject) => { | ||
@@ -494,5 +492,7 @@ if (this.editorConfig.isUseWebSocket()) { | ||
const socket = toSocket(webSocket); | ||
const reader = new WebSocketMessageReader(socket); | ||
const writer = new WebSocketMessageWriter(socket); | ||
this.handleLanguageClientStart(reader, writer, resolve, reject); | ||
this.messageTransports = { | ||
reader: new WebSocketMessageReader(socket), | ||
writer: new WebSocketMessageWriter(socket) | ||
}; | ||
this.handleLanguageClientStart(this.messageTransports, resolve, reject); | ||
}; | ||
@@ -507,9 +507,9 @@ } else { | ||
} | ||
if (this.workerCommunitcationConfig) { | ||
this.handleLanguageClientStart(this.workerCommunitcationConfig.reader, this.workerCommunitcationConfig.writer, resolve, reject); | ||
} else { | ||
reader = new BrowserMessageReader(this.worker); | ||
writer = new BrowserMessageWriter(this.worker); | ||
this.handleLanguageClientStart(reader, writer, resolve, reject); | ||
if (!this.messageTransports) { | ||
this.messageTransports = { | ||
reader: new BrowserMessageReader(this.worker), | ||
writer: new BrowserMessageWriter(this.worker) | ||
}; | ||
} | ||
this.handleLanguageClientStart(this.messageTransports, resolve, reject); | ||
} | ||
@@ -519,8 +519,8 @@ }); | ||
private async handleLanguageClientStart(reader: MessageReader, writer: MessageWriter, | ||
private async handleLanguageClientStart(messageTransports: MessageTransports, | ||
resolve: (value: string) => void, | ||
reject: (reason?: unknown) => void) { | ||
this.languageClient = this.createLanguageClient({ reader, writer }); | ||
reader.onClose(() => this.languageClient?.stop()); | ||
this.languageClient = this.createLanguageClient(messageTransports); | ||
messageTransports.reader.onClose(() => this.languageClient?.stop()); | ||
@@ -527,0 +527,0 @@ await this.languageClient.start() |
export type { | ||
WebSocketConfigOptions, | ||
WorkerConfigOptions, | ||
LanguageExtensionConfig, | ||
WorkerCommunitcationConfig | ||
LanguageExtensionConfig | ||
} from './index.js'; | ||
@@ -7,0 +6,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
10792310
5157