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.
Files changed (92) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/License.txt +11 -0
  3. package/README.md +17 -0
  4. package/browser.html +16 -0
  5. package/client.html +16 -0
  6. package/dist/browser/main.d.ts +2 -0
  7. package/dist/browser/main.d.ts.map +1 -0
  8. package/dist/browser/main.js +111 -0
  9. package/dist/browser/main.js.map +1 -0
  10. package/dist/common.d.ts +22 -0
  11. package/dist/common.d.ts.map +1 -0
  12. package/dist/common.js +109 -0
  13. package/dist/common.js.map +1 -0
  14. package/dist/index.d.ts +9 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +13 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/json/client/main.d.ts +2 -0
  19. package/dist/json/client/main.d.ts.map +1 -0
  20. package/dist/json/client/main.js +19 -0
  21. package/dist/json/client/main.js.map +1 -0
  22. package/dist/json/server/json-server.d.ts +36 -0
  23. package/dist/json/server/json-server.d.ts.map +1 -0
  24. package/dist/json/server/json-server.js +216 -0
  25. package/dist/json/server/json-server.js.map +1 -0
  26. package/dist/json/server/main.d.ts +2 -0
  27. package/dist/json/server/main.d.ts.map +1 -0
  28. package/dist/json/server/main.js +64 -0
  29. package/dist/json/server/main.js.map +1 -0
  30. package/dist/langium/langiumClient.d.ts +2 -0
  31. package/dist/langium/langiumClient.d.ts.map +1 -0
  32. package/dist/langium/langiumClient.js +130 -0
  33. package/dist/langium/langiumClient.js.map +1 -0
  34. package/dist/langium/langiumServerWorker.d.ts +2 -0
  35. package/dist/langium/langiumServerWorker.d.ts.map +1 -0
  36. package/dist/langium/langiumServerWorker.js +18 -0
  37. package/dist/langium/langiumServerWorker.js.map +1 -0
  38. package/dist/langium/statemachineClient.d.ts +2 -0
  39. package/dist/langium/statemachineClient.d.ts.map +1 -0
  40. package/dist/langium/statemachineClient.js +140 -0
  41. package/dist/langium/statemachineClient.js.map +1 -0
  42. package/dist/node.d.ts +5 -0
  43. package/dist/node.d.ts.map +1 -0
  44. package/dist/node.js +9 -0
  45. package/dist/node.js.map +1 -0
  46. package/dist/python/client.d.ts +3 -0
  47. package/dist/python/client.d.ts.map +1 -0
  48. package/dist/python/client.js +157 -0
  49. package/dist/python/client.js.map +1 -0
  50. package/dist/python/server.d.ts +2 -0
  51. package/dist/python/server.d.ts.map +1 -0
  52. package/dist/python/server.js +105 -0
  53. package/dist/python/server.js.map +1 -0
  54. package/dist/react/app.d.ts +10 -0
  55. package/dist/react/app.d.ts.map +1 -0
  56. package/dist/react/app.js +45 -0
  57. package/dist/react/app.js.map +1 -0
  58. package/dist/react/main.d.ts +2 -0
  59. package/dist/react/main.d.ts.map +1 -0
  60. package/dist/react/main.js +14 -0
  61. package/dist/react/main.js.map +1 -0
  62. package/dist/utils/fs-utils.d.ts +5 -0
  63. package/dist/utils/fs-utils.d.ts.map +1 -0
  64. package/dist/utils/fs-utils.js +14 -0
  65. package/dist/utils/fs-utils.js.map +1 -0
  66. package/dist/worker/langiumServerWorker.js +210 -0
  67. package/dist/worker/statemachineServerWorker.js +534 -0
  68. package/langium_client.html +17 -0
  69. package/package.json +96 -0
  70. package/python.html +16 -0
  71. package/react.html +16 -0
  72. package/src/browser/main.ts +131 -0
  73. package/src/common.ts +130 -0
  74. package/src/index.ts +13 -0
  75. package/src/json/client/main.ts +22 -0
  76. package/src/json/server/json-server.ts +265 -0
  77. package/src/json/server/main.ts +68 -0
  78. package/src/langium/example.langium +215 -0
  79. package/src/langium/example.statemachine +26 -0
  80. package/src/langium/langium.configuration.json +164 -0
  81. package/src/langium/langium.tmLanguage.json +290 -0
  82. package/src/langium/langiumClient.ts +146 -0
  83. package/src/langium/langiumServerWorker.ts +21 -0
  84. package/src/langium/statemachineClient.ts +151 -0
  85. package/src/node.ts +9 -0
  86. package/src/python/client.ts +170 -0
  87. package/src/python/server.ts +114 -0
  88. package/src/react/app.tsx +73 -0
  89. package/src/react/main.tsx +19 -0
  90. package/src/utils/fs-utils.ts +14 -0
  91. package/statemachine_client.html +16 -0
  92. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -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,2 @@
1
+ import 'vscode/default-extensions/theme-defaults';
2
+ //# sourceMappingURL=langiumClient.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=langiumServerWorker.d.ts.map
@@ -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,2 @@
1
+ import 'vscode/default-extensions/theme-defaults';
2
+ //# sourceMappingURL=statemachineClient.d.ts.map
@@ -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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"}