Skip to content

Commit 5faabb2

Browse files
authored
fix(lsp monaco): avoid runtime and bundling errors on Monaco and LSP (#2830)
1 parent 95bd810 commit 5faabb2

10 files changed

Lines changed: 65 additions & 52 deletions

File tree

‎packages/lsp/package.json‎

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,30 @@
4949
"typescript": "^6.0.3",
5050
"vitest": "^4.1.10"
5151
},
52-
"bin": "./dist/server.mjs",
53-
"main": "./dist/server.mjs",
54-
"types": "./dist/server.d.ts",
52+
"bin": "./dist/index.node.mjs",
53+
"main": "./dist/index.node.mjs",
54+
"types": "./dist/index.node.d.ts",
5555
"type": "module",
56+
"exports": {
57+
".": {
58+
"browser": {
59+
"types": "./dist/index.browser.d.ts",
60+
"import": "./dist/index.browser.mjs"
61+
},
62+
"default": {
63+
"types": "./dist/index.node.d.ts",
64+
"import": "./dist/index.node.mjs"
65+
}
66+
},
67+
"./server/browser": {
68+
"types": "./dist/server/browser.d.ts",
69+
"import": "./dist/server/browser.mjs"
70+
},
71+
"./server/node": {
72+
"types": "./dist/server/node.d.ts",
73+
"import": "./dist/server/node.mjs"
74+
}
75+
},
5676
"files": [
5777
"dist/",
5878
"!dist/types/",

‎packages/lsp/src/index.browser.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '@coderline/alphatab-language-server/index';
2+
export { startWebWorkerLanguageServer } from '@coderline/alphatab-language-server/server/browser';

‎packages/lsp/src/index.node.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export * from '@coderline/alphatab-language-server/index';
2+
import { startNodeLanguageServer } from '@coderline/alphatab-language-server/server/node';
3+
export { startNodeLanguageServer };
4+
5+
if (import.meta.main) {
6+
startNodeLanguageServer();
7+
}

‎packages/lsp/src/index.ts‎

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
staffMetaData,
88
structuralMetaData
99
} from '@coderline/alphatab-alphatex/definitions';
10-
import { startNodeLanguageServer, startWebWorkerLanguageServer } from '@coderline/alphatab-language-server/server';
1110

1211
const documentation = {
1312
structuralMetaData,
@@ -46,11 +45,7 @@ const textMateGrammar: any = textMateGrammarJson;
4645
const languageConfiguration: any = languageConfigurationJson;
4746

4847
export {
49-
documentation, languageConfiguration, startNodeLanguageServer,
50-
startWebWorkerLanguageServer, textMateGrammar, type AlphaTexExample,
48+
documentation, languageConfiguration, textMateGrammar,
49+
type AlphaTexExample,
5150
type MetadataTagDefinition, type ParameterDefinition, type ParameterValueDefinition, type PropertyDefinition, type SignatureDefinition, type WithDescription, type WithSignatures
5251
};
53-
54-
if (import.meta.main) {
55-
startNodeLanguageServer();
56-
}

‎packages/lsp/src/server/browser.ts‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { BrowserMessageReader, BrowserMessageWriter, createConnection } from 'vscode-languageserver/browser';
2+
import { startLanguageServer } from '@coderline/alphatab-language-server/server/common';
3+
4+
type Port = ConstructorParameters<typeof BrowserMessageReader>[0];
5+
6+
/**
7+
* Starts a new language server communicating via WebWorker.
8+
* @param readerPort The port used to reading incoming language server messages
9+
* @param writerPort The port used to writer outgoing language server messages
10+
*/
11+
export function startWebWorkerLanguageServer(readerPort: Port, writerPort: Port) {
12+
startLanguageServer(
13+
createConnection(new BrowserMessageReader(readerPort), new BrowserMessageWriter(writerPort))
14+
);
15+
}
Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,7 @@ import {
1313
TextDocuments
1414
} from '@coderline/alphatab-language-server/server/types';
1515

16-
// the only place where we should import specif vscode-languageserver packages
17-
import {
18-
BrowserMessageReader,
19-
BrowserMessageWriter,
20-
createConnection as createBrowserConnection
21-
} from 'vscode-languageserver/browser';
22-
import {
23-
createConnection as createNodeConnection,
24-
ProposedFeatures as NodeProposedFeatures
25-
} from 'vscode-languageserver/node';
26-
27-
function startLanguageServer(serverConnection: Connection) {
16+
export function startLanguageServer(serverConnection: Connection) {
2817
const documents = new TextDocuments<AlphaTexTextDocument>(TextDocument);
2918

3019
serverConnection.onInitialize((params: InitializeParams) => {
@@ -67,30 +56,3 @@ function startLanguageServer(serverConnection: Connection) {
6756
documents.listen(serverConnection);
6857
serverConnection.listen();
6958
}
70-
71-
72-
type Port = ConstructorParameters<typeof BrowserMessageReader>[0];
73-
74-
/**
75-
* Starts a new language server communicating via WebWorker.
76-
* @param readerPort The port used to reading incoming language server messages
77-
* @param writerPort The port used to writer outgoing language server messages
78-
*/
79-
export function startWebWorkerLanguageServer(
80-
readerPort: Port,
81-
writerPort: Port
82-
) {
83-
startLanguageServer(
84-
createBrowserConnection(
85-
new BrowserMessageReader(readerPort),
86-
new BrowserMessageWriter(writerPort)
87-
)
88-
);
89-
}
90-
91-
/**
92-
* Starts a new language server communicating from a Node.js process with a parent Node.js.
93-
*/
94-
export function startNodeLanguageServer() {
95-
startLanguageServer(createNodeConnection(NodeProposedFeatures.all));
96-
}

‎packages/lsp/src/server/node.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { createConnection, ProposedFeatures } from 'vscode-languageserver/node';
2+
import { startLanguageServer } from '@coderline/alphatab-language-server/server/common';
3+
4+
/**
5+
* Starts a new language server communicating from a Node.js process with a parent Node.js.
6+
*/
7+
export function startNodeLanguageServer() {
8+
startLanguageServer(createConnection(ProposedFeatures.all));
9+
}

‎packages/lsp/vite.config.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ export default defineConfig(() => {
77
config.resolve ??= {};
88
config.resolve.mainFields = defaultClientMainFields.filter(f => f !== 'browser');
99

10-
esm(config, import.meta.dirname, 'server', 'src/index.ts');
10+
esm(config, import.meta.dirname, 'index.browser', 'src/index.browser.ts');
11+
esm(config, import.meta.dirname, 'index.node', 'src/index.node.ts', { withMin: false });
12+
esm(config, import.meta.dirname, 'server/browser', 'src/server/browser.ts', { withMin: false });
13+
esm(config, import.meta.dirname, 'server/node', 'src/server/node.ts', { withMin: false });
1114
(config.build!.rollupOptions!.external as (RegExp | string)[]).push('@coderline/alphatab');
1215
addDts(config, import.meta.dirname);
1316
return config;

‎packages/monaco/src/worker.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { startWebWorkerLanguageServer } from '@coderline/alphatab-language-server/index';
1+
import { startWebWorkerLanguageServer } from '@coderline/alphatab-language-server/server/browser';
22

33
const workerGlobalThis = globalThis as unknown as DedicatedWorkerGlobalScope;
44
startWebWorkerLanguageServer(workerGlobalThis, workerGlobalThis);

‎packages/playground/src/components/alphatex-editor/MonacoEditor.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { basicEditorLspIntegration } from '@coderline/alphatab-monaco/lsp';
44
import { addTextMateGrammarSupport } from '@coderline/alphatab-monaco/textmate';
55
import * as monaco from 'monaco-editor';
66
// @ts-expect-error worker import handled by Vite
7-
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
7+
import editorWorker from 'monaco-editor/editor/editor.worker?worker';
88
import { type Mountable, css, html, injectStyles, parseHtml } from '../../util/Dom';
99

1010
injectStyles(

0 commit comments

Comments
 (0)