monaco-languageclient-examples 6.4.5-next.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 +7 -0
- package/License.txt +11 -0
- package/README.md +17 -0
- package/browser.html +16 -0
- package/client.html +16 -0
- package/dist/browser/main.d.ts +2 -0
- package/dist/browser/main.d.ts.map +1 -0
- package/dist/browser/main.js +111 -0
- package/dist/browser/main.js.map +1 -0
- package/dist/common.d.ts +22 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +109 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/json/client/main.d.ts +2 -0
- package/dist/json/client/main.d.ts.map +1 -0
- package/dist/json/client/main.js +19 -0
- package/dist/json/client/main.js.map +1 -0
- package/dist/json/server/json-server.d.ts +36 -0
- package/dist/json/server/json-server.d.ts.map +1 -0
- package/dist/json/server/json-server.js +216 -0
- package/dist/json/server/json-server.js.map +1 -0
- package/dist/json/server/main.d.ts +2 -0
- package/dist/json/server/main.d.ts.map +1 -0
- package/dist/json/server/main.js +64 -0
- package/dist/json/server/main.js.map +1 -0
- package/dist/langium/langiumClient.d.ts +2 -0
- package/dist/langium/langiumClient.d.ts.map +1 -0
- package/dist/langium/langiumClient.js +130 -0
- package/dist/langium/langiumClient.js.map +1 -0
- package/dist/langium/langiumServerWorker.d.ts +2 -0
- package/dist/langium/langiumServerWorker.d.ts.map +1 -0
- package/dist/langium/langiumServerWorker.js +18 -0
- package/dist/langium/langiumServerWorker.js.map +1 -0
- package/dist/langium/statemachineClient.d.ts +2 -0
- package/dist/langium/statemachineClient.d.ts.map +1 -0
- package/dist/langium/statemachineClient.js +140 -0
- package/dist/langium/statemachineClient.js.map +1 -0
- package/dist/node.d.ts +5 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +9 -0
- package/dist/node.js.map +1 -0
- package/dist/python/client.d.ts +3 -0
- package/dist/python/client.d.ts.map +1 -0
- package/dist/python/client.js +157 -0
- package/dist/python/client.js.map +1 -0
- package/dist/python/server.d.ts +2 -0
- package/dist/python/server.d.ts.map +1 -0
- package/dist/python/server.js +105 -0
- package/dist/python/server.js.map +1 -0
- package/dist/react/app.d.ts +10 -0
- package/dist/react/app.d.ts.map +1 -0
- package/dist/react/app.js +45 -0
- package/dist/react/app.js.map +1 -0
- package/dist/react/main.d.ts +2 -0
- package/dist/react/main.d.ts.map +1 -0
- package/dist/react/main.js +14 -0
- package/dist/react/main.js.map +1 -0
- package/dist/utils/fs-utils.d.ts +5 -0
- package/dist/utils/fs-utils.d.ts.map +1 -0
- package/dist/utils/fs-utils.js +14 -0
- package/dist/utils/fs-utils.js.map +1 -0
- package/dist/worker/langiumServerWorker.js +210 -0
- package/dist/worker/statemachineServerWorker.js +534 -0
- package/langium_client.html +17 -0
- package/package.json +96 -0
- package/python.html +16 -0
- package/react.html +16 -0
- package/src/browser/main.ts +131 -0
- package/src/common.ts +130 -0
- package/src/index.ts +13 -0
- package/src/json/client/main.ts +22 -0
- package/src/json/server/json-server.ts +265 -0
- package/src/json/server/main.ts +68 -0
- package/src/langium/example.langium +215 -0
- package/src/langium/example.statemachine +26 -0
- package/src/langium/langium.configuration.json +164 -0
- package/src/langium/langium.tmLanguage.json +290 -0
- package/src/langium/langiumClient.ts +146 -0
- package/src/langium/langiumServerWorker.ts +21 -0
- package/src/langium/statemachineClient.ts +151 -0
- package/src/node.ts +9 -0
- package/src/python/client.ts +170 -0
- package/src/python/server.ts +114 -0
- package/src/react/app.tsx +73 -0
- package/src/react/main.tsx +19 -0
- package/src/utils/fs-utils.ts +14 -0
- package/statemachine_client.html +16 -0
- package/vite.statemachine-worker.ts +17 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/* --------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
* ------------------------------------------------------------------------------------------ */
|
|
5
|
+
import { readFile } from 'fs';
|
|
6
|
+
import requestLight from 'request-light';
|
|
7
|
+
import URI from 'vscode-uri';
|
|
8
|
+
import { TextDocuments, createConnection } from 'vscode-languageserver/lib/node/main.js';
|
|
9
|
+
import { TextDocumentSyncKind } from 'vscode-languageserver-protocol';
|
|
10
|
+
import { getLanguageService } from 'vscode-json-languageservice';
|
|
11
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
12
|
+
export function start(reader, writer) {
|
|
13
|
+
const connection = createConnection(reader, writer);
|
|
14
|
+
const server = new JsonServer(connection);
|
|
15
|
+
server.start();
|
|
16
|
+
return server;
|
|
17
|
+
}
|
|
18
|
+
export class JsonServer {
|
|
19
|
+
connection;
|
|
20
|
+
workspaceRoot;
|
|
21
|
+
documents = new TextDocuments(TextDocument);
|
|
22
|
+
jsonService = getLanguageService({
|
|
23
|
+
schemaRequestService: this.resolveSchema.bind(this)
|
|
24
|
+
});
|
|
25
|
+
pendingValidationRequests = new Map();
|
|
26
|
+
constructor(connection) {
|
|
27
|
+
this.connection = connection;
|
|
28
|
+
this.documents.listen(this.connection);
|
|
29
|
+
this.documents.onDidChangeContent(change => this.validate(change.document));
|
|
30
|
+
this.documents.onDidClose(event => {
|
|
31
|
+
this.cleanPendingValidation(event.document);
|
|
32
|
+
this.cleanDiagnostics(event.document);
|
|
33
|
+
});
|
|
34
|
+
this.connection.onInitialize(params => {
|
|
35
|
+
if (params.rootPath) {
|
|
36
|
+
this.workspaceRoot = URI.URI.file(params.rootPath);
|
|
37
|
+
}
|
|
38
|
+
else if (params.rootUri) {
|
|
39
|
+
this.workspaceRoot = URI.URI.parse(params.rootUri);
|
|
40
|
+
}
|
|
41
|
+
this.connection.console.log('The server is initialized.');
|
|
42
|
+
return {
|
|
43
|
+
capabilities: {
|
|
44
|
+
textDocumentSync: TextDocumentSyncKind.Incremental,
|
|
45
|
+
codeActionProvider: true,
|
|
46
|
+
completionProvider: {
|
|
47
|
+
resolveProvider: true,
|
|
48
|
+
triggerCharacters: ['"', ':']
|
|
49
|
+
},
|
|
50
|
+
hoverProvider: true,
|
|
51
|
+
documentSymbolProvider: true,
|
|
52
|
+
documentRangeFormattingProvider: true,
|
|
53
|
+
executeCommandProvider: {
|
|
54
|
+
commands: ['json.documentUpper']
|
|
55
|
+
},
|
|
56
|
+
colorProvider: true,
|
|
57
|
+
foldingRangeProvider: true
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
this.connection.onCodeAction(params => this.codeAction(params));
|
|
62
|
+
this.connection.onCompletion(params => this.completion(params));
|
|
63
|
+
this.connection.onCompletionResolve(item => this.resolveCompletion(item));
|
|
64
|
+
this.connection.onExecuteCommand(params => this.executeCommand(params));
|
|
65
|
+
this.connection.onHover(params => this.hover(params));
|
|
66
|
+
this.connection.onDocumentSymbol(params => this.findDocumentSymbols(params));
|
|
67
|
+
this.connection.onDocumentRangeFormatting(params => this.format(params));
|
|
68
|
+
this.connection.onDocumentColor(params => this.findDocumentColors(params));
|
|
69
|
+
this.connection.onColorPresentation(params => this.getColorPresentations(params));
|
|
70
|
+
this.connection.onFoldingRanges(params => this.getFoldingRanges(params));
|
|
71
|
+
}
|
|
72
|
+
start() {
|
|
73
|
+
this.connection.listen();
|
|
74
|
+
}
|
|
75
|
+
getFoldingRanges(params) {
|
|
76
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
77
|
+
if (!document) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
return this.jsonService.getFoldingRanges(document);
|
|
81
|
+
}
|
|
82
|
+
findDocumentColors(params) {
|
|
83
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
84
|
+
if (!document) {
|
|
85
|
+
return Promise.resolve([]);
|
|
86
|
+
}
|
|
87
|
+
const jsonDocument = this.getJSONDocument(document);
|
|
88
|
+
return this.jsonService.findDocumentColors(document, jsonDocument);
|
|
89
|
+
}
|
|
90
|
+
getColorPresentations(params) {
|
|
91
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
92
|
+
if (!document) {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const jsonDocument = this.getJSONDocument(document);
|
|
96
|
+
return this.jsonService.getColorPresentations(document, jsonDocument, params.color, params.range);
|
|
97
|
+
}
|
|
98
|
+
codeAction(params) {
|
|
99
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
100
|
+
if (!document) {
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
return [{
|
|
104
|
+
title: 'Upper Case Document',
|
|
105
|
+
command: 'json.documentUpper',
|
|
106
|
+
// Send a VersionedTextDocumentIdentifier
|
|
107
|
+
arguments: [{
|
|
108
|
+
...params.textDocument,
|
|
109
|
+
version: document.version
|
|
110
|
+
}]
|
|
111
|
+
}];
|
|
112
|
+
}
|
|
113
|
+
format(params) {
|
|
114
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
115
|
+
return document ? this.jsonService.format(document, params.range, params.options) : [];
|
|
116
|
+
}
|
|
117
|
+
findDocumentSymbols(params) {
|
|
118
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
119
|
+
if (!document) {
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
const jsonDocument = this.getJSONDocument(document);
|
|
123
|
+
return this.jsonService.findDocumentSymbols(document, jsonDocument);
|
|
124
|
+
}
|
|
125
|
+
executeCommand(params) {
|
|
126
|
+
if (params.command === 'json.documentUpper' && params.arguments) {
|
|
127
|
+
const versionedTextDocumentIdentifier = params.arguments[0];
|
|
128
|
+
const document = this.documents.get(versionedTextDocumentIdentifier.uri);
|
|
129
|
+
if (document) {
|
|
130
|
+
this.connection.workspace.applyEdit({
|
|
131
|
+
documentChanges: [{
|
|
132
|
+
textDocument: versionedTextDocumentIdentifier,
|
|
133
|
+
edits: [{
|
|
134
|
+
range: {
|
|
135
|
+
start: { line: 0, character: 0 },
|
|
136
|
+
end: { line: Number.MAX_SAFE_INTEGER, character: Number.MAX_SAFE_INTEGER }
|
|
137
|
+
},
|
|
138
|
+
newText: document.getText().toUpperCase()
|
|
139
|
+
}]
|
|
140
|
+
}]
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
hover(params) {
|
|
146
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
147
|
+
if (!document) {
|
|
148
|
+
return Promise.resolve(null);
|
|
149
|
+
}
|
|
150
|
+
const jsonDocument = this.getJSONDocument(document);
|
|
151
|
+
return this.jsonService.doHover(document, params.position, jsonDocument);
|
|
152
|
+
}
|
|
153
|
+
async resolveSchema(url) {
|
|
154
|
+
const uri = URI.URI.parse(url);
|
|
155
|
+
if (uri.scheme === 'file') {
|
|
156
|
+
return new Promise((resolve, reject) => {
|
|
157
|
+
readFile(uri.fsPath, { encoding: 'utf8' }, (err, result) => {
|
|
158
|
+
err ? reject(err) : resolve(result.toString());
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
const response = await requestLight.xhr({ url, followRedirects: 5 });
|
|
164
|
+
return response.responseText;
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
const err = error;
|
|
168
|
+
return Promise.reject(err.responseText || requestLight.getErrorStatusDescription(err.status) || err.toString());
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
resolveCompletion(item) {
|
|
172
|
+
return this.jsonService.doResolve(item);
|
|
173
|
+
}
|
|
174
|
+
completion(params) {
|
|
175
|
+
const document = this.documents.get(params.textDocument.uri);
|
|
176
|
+
if (!document) {
|
|
177
|
+
return Promise.resolve(null);
|
|
178
|
+
}
|
|
179
|
+
const jsonDocument = this.getJSONDocument(document);
|
|
180
|
+
return this.jsonService.doComplete(document, params.position, jsonDocument);
|
|
181
|
+
}
|
|
182
|
+
validate(document) {
|
|
183
|
+
this.cleanPendingValidation(document);
|
|
184
|
+
this.pendingValidationRequests.set(document.uri, setTimeout(() => {
|
|
185
|
+
this.pendingValidationRequests.delete(document.uri);
|
|
186
|
+
this.doValidate(document);
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
cleanPendingValidation(document) {
|
|
190
|
+
const request = this.pendingValidationRequests.get(document.uri);
|
|
191
|
+
if (request !== undefined) {
|
|
192
|
+
clearTimeout(request);
|
|
193
|
+
this.pendingValidationRequests.delete(document.uri);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
doValidate(document) {
|
|
197
|
+
if (document.getText().length === 0) {
|
|
198
|
+
this.cleanDiagnostics(document);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const jsonDocument = this.getJSONDocument(document);
|
|
202
|
+
this.jsonService.doValidation(document, jsonDocument).then(diagnostics => this.sendDiagnostics(document, diagnostics));
|
|
203
|
+
}
|
|
204
|
+
cleanDiagnostics(document) {
|
|
205
|
+
this.sendDiagnostics(document, []);
|
|
206
|
+
}
|
|
207
|
+
sendDiagnostics(document, diagnostics) {
|
|
208
|
+
this.connection.sendDiagnostics({
|
|
209
|
+
uri: document.uri, diagnostics
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
getJSONDocument(document) {
|
|
213
|
+
return this.jsonService.parseJSONDocument(document);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=json-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-server.js","sourceRoot":"","sources":["../../../src/json/server/json-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/json/server/main.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/* --------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
* ------------------------------------------------------------------------------------------ */
|
|
5
|
+
import { WebSocketServer } from 'ws';
|
|
6
|
+
import { URL } from 'url';
|
|
7
|
+
import express from 'express';
|
|
8
|
+
import { WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
|
|
9
|
+
import { start } from './json-server.js';
|
|
10
|
+
import { getLocalDirectory } from '../../utils/fs-utils.js';
|
|
11
|
+
process.on('uncaughtException', function (err) {
|
|
12
|
+
console.error('Uncaught Exception: ', err.toString());
|
|
13
|
+
if (err.stack) {
|
|
14
|
+
console.error(err.stack);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
// create the express application
|
|
18
|
+
const app = express();
|
|
19
|
+
// server the static content, i.e. index.html
|
|
20
|
+
const dir = getLocalDirectory(import.meta.url);
|
|
21
|
+
app.use(express.static(dir));
|
|
22
|
+
// start the server
|
|
23
|
+
const server = app.listen(3000);
|
|
24
|
+
// create the web socket
|
|
25
|
+
const wss = new WebSocketServer({
|
|
26
|
+
noServer: true,
|
|
27
|
+
perMessageDeflate: false
|
|
28
|
+
});
|
|
29
|
+
server.on('upgrade', (request, socket, head) => {
|
|
30
|
+
const baseURL = `http://${request.headers.host}/`;
|
|
31
|
+
const pathname = request.url ? new URL(request.url, baseURL).pathname : undefined;
|
|
32
|
+
if (pathname === '/sampleServer') {
|
|
33
|
+
wss.handleUpgrade(request, socket, head, webSocket => {
|
|
34
|
+
const socket = {
|
|
35
|
+
send: content => webSocket.send(content, error => {
|
|
36
|
+
if (error) {
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}),
|
|
40
|
+
onMessage: cb => webSocket.on('message', (data) => {
|
|
41
|
+
console.log(data.toString());
|
|
42
|
+
cb(data);
|
|
43
|
+
}),
|
|
44
|
+
onError: cb => webSocket.on('error', cb),
|
|
45
|
+
onClose: cb => webSocket.on('close', cb),
|
|
46
|
+
dispose: () => webSocket.close()
|
|
47
|
+
};
|
|
48
|
+
// launch the server when the web socket is opened
|
|
49
|
+
if (webSocket.readyState === webSocket.OPEN) {
|
|
50
|
+
launch(socket);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
webSocket.on('open', () => launch(socket));
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const launch = (socket) => {
|
|
59
|
+
const reader = new WebSocketMessageReader(socket);
|
|
60
|
+
const writer = new WebSocketMessageWriter(socket);
|
|
61
|
+
// start the language server inside the current process
|
|
62
|
+
start(reader, writer);
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/json/server/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langiumClient.d.ts","sourceRoot":"","sources":["../../src/langium/langiumClient.ts"],"names":[],"mappings":"AAeA,OAAO,0CAA0C,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/* --------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
* ------------------------------------------------------------------------------------------ */
|
|
5
|
+
import { Uri } from 'monaco-editor';
|
|
6
|
+
import { MonacoLanguageClient, initServices } from 'monaco-languageclient';
|
|
7
|
+
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver-protocol/browser.js';
|
|
8
|
+
import { CloseAction, ErrorAction } from 'vscode-languageclient';
|
|
9
|
+
import { createConfiguredEditor, createModelReference } from 'vscode/monaco';
|
|
10
|
+
import { registerExtension } from 'vscode/extensions';
|
|
11
|
+
import { updateUserConfiguration } from 'vscode/service-override/configuration';
|
|
12
|
+
import { RegisteredFileSystemProvider, registerFileSystemOverlay, RegisteredMemoryFile } from 'vscode/service-override/files';
|
|
13
|
+
import 'vscode/default-extensions/theme-defaults';
|
|
14
|
+
import { buildWorkerDefinition } from 'monaco-editor-workers';
|
|
15
|
+
buildWorkerDefinition('../../../node_modules/monaco-editor-workers/dist/workers/', new URL('', window.location.href).href, false);
|
|
16
|
+
const languageId = 'langium';
|
|
17
|
+
let textModelRef;
|
|
18
|
+
const setup = async () => {
|
|
19
|
+
await initServices({
|
|
20
|
+
// required for default themes
|
|
21
|
+
enableThemeService: true,
|
|
22
|
+
// required for textmate grammars
|
|
23
|
+
enableTextmateService: true,
|
|
24
|
+
// required for text model handling (here: /workspace/example.langium)
|
|
25
|
+
enableModelService: true,
|
|
26
|
+
// use editor mode
|
|
27
|
+
configureEditorOrViewsService: {},
|
|
28
|
+
// enable configuration services
|
|
29
|
+
configureConfigurationService: {
|
|
30
|
+
defaultWorkspaceUri: '/workspace'
|
|
31
|
+
},
|
|
32
|
+
// enable platform specific keybindings
|
|
33
|
+
enableKeybindingsService: true,
|
|
34
|
+
// enable language support
|
|
35
|
+
enableLanguagesService: true,
|
|
36
|
+
debugLogging: true
|
|
37
|
+
});
|
|
38
|
+
console.log('Setting up Langium client configuration ...');
|
|
39
|
+
// define this client as vscode extension, required for textmate grammars
|
|
40
|
+
const extension = {
|
|
41
|
+
name: 'langium-client',
|
|
42
|
+
publisher: 'monaco-languageclient-project',
|
|
43
|
+
version: '1.0.0',
|
|
44
|
+
engines: {
|
|
45
|
+
vscode: '*'
|
|
46
|
+
},
|
|
47
|
+
contributes: {
|
|
48
|
+
languages: [{
|
|
49
|
+
id: languageId,
|
|
50
|
+
extensions: [
|
|
51
|
+
`.${languageId}`
|
|
52
|
+
],
|
|
53
|
+
aliases: [
|
|
54
|
+
languageId
|
|
55
|
+
],
|
|
56
|
+
// files are loaded below and bind below
|
|
57
|
+
configuration: './langium-configuration.json'
|
|
58
|
+
}],
|
|
59
|
+
grammars: [{
|
|
60
|
+
language: languageId,
|
|
61
|
+
scopeName: 'source.langium',
|
|
62
|
+
// files are loaded below and bind below
|
|
63
|
+
path: './langium-grammar.json'
|
|
64
|
+
}]
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const { registerFileUrl } = registerExtension(extension, 1 /* ExtensionHostKind.LocalProcess */);
|
|
68
|
+
// these two files are taken from the langium-vscode
|
|
69
|
+
// regiser the language configuration file url
|
|
70
|
+
registerFileUrl('/langium-configuration.json', new URL('./src/langium/langium.configuration.json', window.location.href).href);
|
|
71
|
+
// regiser the textmate grammar file url
|
|
72
|
+
// using a textmate grammar requires the textmate and theme service to be enabled
|
|
73
|
+
registerFileUrl('/langium-grammar.json', new URL('./src/langium/langium.tmLanguage.json', window.location.href).href);
|
|
74
|
+
// set vscode configuration parameters
|
|
75
|
+
updateUserConfiguration(`{
|
|
76
|
+
"workbench.colorTheme": "Default Dark Modern"
|
|
77
|
+
}`);
|
|
78
|
+
const exampleLangiumUrl = new URL('./src/langium/example.langium', window.location.href).href;
|
|
79
|
+
const editorText = await (await fetch(exampleLangiumUrl)).text();
|
|
80
|
+
// create and register a new file system provider
|
|
81
|
+
const fileSystemProvider = new RegisteredFileSystemProvider(false);
|
|
82
|
+
// register a file with content from the example.langium file loaded from src above
|
|
83
|
+
fileSystemProvider.registerFile(new RegisteredMemoryFile(Uri.file('/workspace/example.langium'), editorText));
|
|
84
|
+
registerFileSystemOverlay(1, fileSystemProvider);
|
|
85
|
+
textModelRef = await createModelReference(Uri.file('/workspace/example.langium'));
|
|
86
|
+
createConfiguredEditor(document.getElementById('container'), {
|
|
87
|
+
model: textModelRef.object.textEditorModel
|
|
88
|
+
});
|
|
89
|
+
// works only if browser supports module workers
|
|
90
|
+
const langiumWorkerUrl = new URL('./src/langium/langiumServerWorker.ts', window.location.href).href;
|
|
91
|
+
// use this if module workers aren't supported
|
|
92
|
+
// const langiumWorkerUrl = new URL('./dist/worker/langiumServerWorker.js', window.location.href).href;
|
|
93
|
+
const worker = new Worker(langiumWorkerUrl, {
|
|
94
|
+
type: 'module',
|
|
95
|
+
name: 'Langium LS'
|
|
96
|
+
});
|
|
97
|
+
const reader = new BrowserMessageReader(worker);
|
|
98
|
+
const writer = new BrowserMessageWriter(worker);
|
|
99
|
+
reader.onClose(() => languageClient.stop());
|
|
100
|
+
const languageClient = new MonacoLanguageClient({
|
|
101
|
+
name: 'Langium Client',
|
|
102
|
+
clientOptions: {
|
|
103
|
+
// use a language id as a document selector
|
|
104
|
+
documentSelector: [{ language: languageId }],
|
|
105
|
+
// disable the default error handler
|
|
106
|
+
errorHandler: {
|
|
107
|
+
error: () => ({ action: ErrorAction.Continue }),
|
|
108
|
+
closed: () => ({ action: CloseAction.DoNotRestart })
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
// create a language client connection to the server running in the web worker
|
|
112
|
+
connectionProvider: {
|
|
113
|
+
get: () => {
|
|
114
|
+
return Promise.resolve({ reader, writer });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
languageClient.start();
|
|
119
|
+
// any further language client / server interaction can't be defined as needed
|
|
120
|
+
};
|
|
121
|
+
const run = async () => {
|
|
122
|
+
try {
|
|
123
|
+
await setup();
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
console.log(e);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
run();
|
|
130
|
+
//# sourceMappingURL=langiumClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langiumClient.js","sourceRoot":"","sources":["../../src/langium/langiumClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langiumServerWorker.d.ts","sourceRoot":"","sources":["../../src/langium/langiumServerWorker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* --------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
* ------------------------------------------------------------------------------------------ */
|
|
5
|
+
import { createLangiumGrammarServices, startLanguageServer, EmptyFileSystem } from 'langium';
|
|
6
|
+
import { BrowserMessageReader, BrowserMessageWriter, createConnection } from 'vscode-languageserver/browser.js';
|
|
7
|
+
/* browser specific setup code */
|
|
8
|
+
const messageReader = new BrowserMessageReader(self);
|
|
9
|
+
const messageWriter = new BrowserMessageWriter(self);
|
|
10
|
+
// Inject the shared services and language-specific services
|
|
11
|
+
const context = {
|
|
12
|
+
connection: createConnection(messageReader, messageWriter),
|
|
13
|
+
...EmptyFileSystem
|
|
14
|
+
};
|
|
15
|
+
const { shared } = createLangiumGrammarServices(context);
|
|
16
|
+
// Start the language server with the shared services
|
|
17
|
+
startLanguageServer(shared);
|
|
18
|
+
//# sourceMappingURL=langiumServerWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langiumServerWorker.js","sourceRoot":"","sources":["../../src/langium/langiumServerWorker.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,eAAe,EAA8B,MAAM,SAAS,CAAC;AACzH,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEhH,iCAAiC;AACjC,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAkC,CAAC,CAAC;AACnF,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAkC,CAAC,CAAC;AAEnF,4DAA4D;AAC5D,MAAM,OAAO,GAAG;IACZ,UAAU,EAAE,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC;IAC1D,GAAG,eAAe;CACoB,CAAC;AAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAEzD,qDAAqD;AACrD,mBAAmB,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statemachineClient.d.ts","sourceRoot":"","sources":["../../src/langium/statemachineClient.ts"],"names":[],"mappings":"AAeA,OAAO,0CAA0C,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/* --------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
* ------------------------------------------------------------------------------------------ */
|
|
5
|
+
import { editor, Uri } from 'monaco-editor';
|
|
6
|
+
import { MonacoLanguageClient, initServices } from 'monaco-languageclient';
|
|
7
|
+
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver-protocol/browser.js';
|
|
8
|
+
import { CloseAction, ErrorAction } from 'vscode-languageclient';
|
|
9
|
+
import { createConfiguredEditor } from 'vscode/monaco';
|
|
10
|
+
import { registerExtension } from 'vscode/extensions';
|
|
11
|
+
import { updateUserConfiguration } from 'vscode/service-override/configuration';
|
|
12
|
+
import getAccessibilityServiceOverride from 'vscode/service-override/accessibility';
|
|
13
|
+
import { LogLevel } from 'vscode/services';
|
|
14
|
+
import 'vscode/default-extensions/theme-defaults';
|
|
15
|
+
import { buildWorkerDefinition } from 'monaco-editor-workers';
|
|
16
|
+
buildWorkerDefinition('../../../node_modules/monaco-editor-workers/dist/workers/', new URL('', window.location.href).href, false);
|
|
17
|
+
const languageId = 'statemachine';
|
|
18
|
+
const setup = async () => {
|
|
19
|
+
// use this to demonstrate all possible services made available by the monaco-vscode-api
|
|
20
|
+
await initServices({
|
|
21
|
+
enableThemeService: true,
|
|
22
|
+
enableTextmateService: true,
|
|
23
|
+
enableModelService: true,
|
|
24
|
+
configureEditorOrViewsService: {
|
|
25
|
+
enableViewsService: true
|
|
26
|
+
},
|
|
27
|
+
configureConfigurationService: {
|
|
28
|
+
defaultWorkspaceUri: '/tmp'
|
|
29
|
+
},
|
|
30
|
+
enableKeybindingsService: true,
|
|
31
|
+
enableLanguagesService: true,
|
|
32
|
+
enableAudioCueService: true,
|
|
33
|
+
enableDebugService: true,
|
|
34
|
+
enableDialogService: true,
|
|
35
|
+
enableNotificationService: true,
|
|
36
|
+
enablePreferencesService: true,
|
|
37
|
+
enableSnippetsService: true,
|
|
38
|
+
enableOutputService: true,
|
|
39
|
+
enableSearchService: true,
|
|
40
|
+
enableLanguageDetectionWorkerService: true,
|
|
41
|
+
// This should demonstrate that you can chose to not use the built-in loading mechanism,
|
|
42
|
+
// but do it manually, see below
|
|
43
|
+
enableAccessibilityService: false,
|
|
44
|
+
userServices: {
|
|
45
|
+
// manually add the accessibility service
|
|
46
|
+
...getAccessibilityServiceOverride()
|
|
47
|
+
},
|
|
48
|
+
debugLogging: true,
|
|
49
|
+
logLevel: LogLevel.Info
|
|
50
|
+
});
|
|
51
|
+
console.log('Setting up Statemachine client configuration ...');
|
|
52
|
+
const extension = {
|
|
53
|
+
name: 'statemachine-client',
|
|
54
|
+
publisher: 'monaco-languageclient-project',
|
|
55
|
+
version: '1.0.0',
|
|
56
|
+
engines: {
|
|
57
|
+
vscode: '*'
|
|
58
|
+
},
|
|
59
|
+
contributes: {
|
|
60
|
+
languages: [{
|
|
61
|
+
id: languageId,
|
|
62
|
+
extensions: [
|
|
63
|
+
`.${languageId}`
|
|
64
|
+
],
|
|
65
|
+
aliases: [
|
|
66
|
+
languageId
|
|
67
|
+
],
|
|
68
|
+
configuration: './statemachine-configuration.json'
|
|
69
|
+
}],
|
|
70
|
+
grammars: [{
|
|
71
|
+
language: languageId,
|
|
72
|
+
scopeName: 'source.statemachine',
|
|
73
|
+
path: './statemachine-grammar.json'
|
|
74
|
+
}],
|
|
75
|
+
keybindings: [{
|
|
76
|
+
key: 'ctrl+p',
|
|
77
|
+
command: 'editor.action.quickCommand',
|
|
78
|
+
when: 'editorTextFocus'
|
|
79
|
+
}, {
|
|
80
|
+
key: 'ctrl+shift+c',
|
|
81
|
+
command: 'editor.action.commentLine',
|
|
82
|
+
when: 'editorTextFocus'
|
|
83
|
+
}]
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const { registerFileUrl } = registerExtension(extension, 1 /* ExtensionHostKind.LocalProcess */);
|
|
87
|
+
registerFileUrl('/statemachine-configuration.json', new URL('../../../node_modules/langium-statemachine-dsl/language-configuration.json', window.location.href).href);
|
|
88
|
+
registerFileUrl('/statemachine-grammar.json', new URL('../../../node_modules/langium-statemachine-dsl/syntaxes/statemachine.tmLanguage.json', window.location.href).href);
|
|
89
|
+
updateUserConfiguration(`{
|
|
90
|
+
"editor.fontSize": 14,
|
|
91
|
+
"workbench.colorTheme": "Default Dark Modern"
|
|
92
|
+
}`);
|
|
93
|
+
const exampleStatemachineUrl = new URL('./src/langium/example.statemachine', window.location.href).href;
|
|
94
|
+
const editorText = await (await fetch(exampleStatemachineUrl)).text();
|
|
95
|
+
const editorOptions = {
|
|
96
|
+
model: editor.createModel(editorText, languageId, Uri.parse('inmemory://example.statemachine')),
|
|
97
|
+
automaticLayout: true
|
|
98
|
+
};
|
|
99
|
+
createConfiguredEditor(document.getElementById('container'), editorOptions);
|
|
100
|
+
function createLanguageClient(transports) {
|
|
101
|
+
return new MonacoLanguageClient({
|
|
102
|
+
name: 'Statemachine Client',
|
|
103
|
+
clientOptions: {
|
|
104
|
+
// use a language id as a document selector
|
|
105
|
+
documentSelector: [{ language: languageId }],
|
|
106
|
+
// disable the default error handler
|
|
107
|
+
errorHandler: {
|
|
108
|
+
error: () => ({ action: ErrorAction.Continue }),
|
|
109
|
+
closed: () => ({ action: CloseAction.DoNotRestart })
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
// create a language client connection to the server running in the web worker
|
|
113
|
+
connectionProvider: {
|
|
114
|
+
get: () => {
|
|
115
|
+
return Promise.resolve(transports);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
const langiumWorkerUrl = new URL('./dist/worker/statemachineServerWorker.js', window.location.href).href;
|
|
121
|
+
const worker = new Worker(langiumWorkerUrl, {
|
|
122
|
+
type: 'module',
|
|
123
|
+
name: 'Statemachine LS'
|
|
124
|
+
});
|
|
125
|
+
const reader = new BrowserMessageReader(worker);
|
|
126
|
+
const writer = new BrowserMessageWriter(worker);
|
|
127
|
+
const languageClient = createLanguageClient({ reader, writer });
|
|
128
|
+
languageClient.start();
|
|
129
|
+
reader.onClose(() => languageClient.stop());
|
|
130
|
+
};
|
|
131
|
+
const run = async () => {
|
|
132
|
+
try {
|
|
133
|
+
await setup();
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
console.error(e);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
run();
|
|
140
|
+
//# sourceMappingURL=statemachineClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statemachineClient.js","sourceRoot":"","sources":["../../src/langium/statemachineClient.ts"],"names":[],"mappings":"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"}
|