@volar/monaco 1.6.9 → 1.7.1
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/README.md +30 -16
- package/out/utils/provider.js +4 -4
- package/out/worker.d.ts +0 -3
- package/out/worker.js +5 -85
- package/package.json +3 -4
package/README.md
CHANGED
|
@@ -36,23 +36,37 @@ self.onmessage = () => {
|
|
|
36
36
|
};
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
#### TypeScript Support
|
|
39
|
+
#### Add TypeScript Support
|
|
40
40
|
|
|
41
|
-
```
|
|
42
|
-
import
|
|
43
|
-
import * as
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
41
|
+
```diff
|
|
42
|
+
import * as worker from 'monaco-editor-core/esm/vs/editor/editor.worker';
|
|
43
|
+
import type * as monaco from 'monaco-editor-core';
|
|
44
|
+
import { createLanguageService } from '@volar/monaco/worker';
|
|
45
|
+
+import * as ts from 'typescript';
|
|
46
|
+
+import createTypeScriptService, { createJsDelivrDtsHost } from 'volar-service-typescript';
|
|
47
|
+
|
|
48
|
+
self.onmessage = () => {
|
|
49
|
+
worker.initialize((ctx: monaco.worker.IWorkerContext) => {
|
|
50
|
+
return createLanguageService({
|
|
51
|
+
workerContext: ctx,
|
|
52
|
+
config: {
|
|
53
|
+
// ...Language Service Config of my-lang language support
|
|
54
|
+
+ services: {
|
|
55
|
+
+ typescript: createTypeScriptService({
|
|
56
|
+
+ // Enable auto fetch node_modules types
|
|
57
|
+
+ dtsHost: createJsDelivrDtsHost({ typescript: '4.9.5' }),
|
|
58
|
+
+ })
|
|
59
|
+
+ },
|
|
60
|
+
},
|
|
61
|
+
+ typescript: {
|
|
62
|
+
+ module: ts as any,
|
|
63
|
+
+ compilerOptions: {
|
|
64
|
+
+ // ...tsconfig options
|
|
65
|
+
+ },
|
|
66
|
+
+ },
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
};
|
|
56
70
|
```
|
|
57
71
|
|
|
58
72
|
### Add worker loader to global env
|
package/out/utils/provider.js
CHANGED
|
@@ -14,10 +14,10 @@ async function createLanguageFeaturesProvider(worker, getSyncUris) {
|
|
|
14
14
|
const inlayHints = new WeakMap();
|
|
15
15
|
const languageService = await worker.getProxy();
|
|
16
16
|
return {
|
|
17
|
-
triggerCharacters: await languageService.
|
|
18
|
-
autoFormatTriggerCharacters: await languageService.
|
|
19
|
-
signatureHelpTriggerCharacters: await languageService.
|
|
20
|
-
signatureHelpRetriggerCharacters: await languageService.
|
|
17
|
+
triggerCharacters: await languageService.getTriggerCharacters(),
|
|
18
|
+
autoFormatTriggerCharacters: await languageService.getAutoFormatTriggerCharacters(),
|
|
19
|
+
signatureHelpTriggerCharacters: await languageService.getSignatureHelpTriggerCharacters(),
|
|
20
|
+
signatureHelpRetriggerCharacters: await languageService.getSignatureHelpRetriggerCharacters(),
|
|
21
21
|
getLegend() {
|
|
22
22
|
return language_service_1.standardSemanticTokensLegend;
|
|
23
23
|
},
|
package/out/worker.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { type Config } from '@volar/language-service';
|
|
2
2
|
import type * as monaco from 'monaco-editor-core';
|
|
3
3
|
import type * as ts from 'typescript/lib/tsserverlibrary';
|
|
4
|
-
import * as webFs from '@volar/web-fs';
|
|
5
|
-
export * from '@volar/web-fs';
|
|
6
4
|
export declare function createLanguageService(options: {
|
|
7
5
|
workerContext: monaco.worker.IWorkerContext<any>;
|
|
8
|
-
dtsHost?: webFs.IDtsHost;
|
|
9
6
|
config: Config;
|
|
10
7
|
typescript?: {
|
|
11
8
|
module: typeof import('typescript/lib/tsserverlibrary');
|
package/out/worker.js
CHANGED
|
@@ -1,75 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
3
|
exports.createLanguageService = void 0;
|
|
18
4
|
const language_service_1 = require("@volar/language-service");
|
|
19
5
|
const vscode_uri_1 = require("vscode-uri");
|
|
20
|
-
const webFs = require("@volar/web-fs");
|
|
21
|
-
__exportStar(require("@volar/web-fs"), exports);
|
|
22
6
|
function createLanguageService(options) {
|
|
23
|
-
let dtsClientVersion = 0;
|
|
24
7
|
const ts = options.typescript?.module;
|
|
25
8
|
const config = options.config ?? {};
|
|
26
|
-
const compilerOptions = options.typescript?.compilerOptions ?? {};
|
|
27
9
|
const host = createLanguageServiceHost();
|
|
28
10
|
const languageService = (0, language_service_1.createLanguageService)({ typescript: ts }, {
|
|
29
11
|
uriToFileName: uri => vscode_uri_1.URI.parse(uri).fsPath.replace(/\\/g, '/'),
|
|
30
12
|
fileNameToUri: fileName => vscode_uri_1.URI.file(fileName).toString(),
|
|
31
13
|
rootUri: vscode_uri_1.URI.file('/'),
|
|
32
14
|
}, config, host);
|
|
33
|
-
const dtsClient = options.dtsHost ? webFs.createDtsClient(options.dtsHost) : undefined;
|
|
34
|
-
if (!dtsClient) {
|
|
35
|
-
return languageService;
|
|
36
|
-
}
|
|
37
15
|
class InnocentRabbit {
|
|
38
16
|
}
|
|
39
17
|
;
|
|
40
18
|
for (const api in languageService) {
|
|
41
19
|
const isFunction = typeof languageService[api] === 'function';
|
|
42
|
-
if (
|
|
43
|
-
InnocentRabbit.prototype[api] =
|
|
44
|
-
continue;
|
|
20
|
+
if (isFunction) {
|
|
21
|
+
InnocentRabbit.prototype[api] = languageService[api];
|
|
45
22
|
}
|
|
46
|
-
InnocentRabbit.prototype[api] = async (...args) => {
|
|
47
|
-
if (!options.dtsHost) {
|
|
48
|
-
return languageService[api](...args);
|
|
49
|
-
}
|
|
50
|
-
let lastDtsClientVersion = dtsClientVersion;
|
|
51
|
-
let result = await languageService[api](...args);
|
|
52
|
-
dtsClientVersion = await dtsClient.sync();
|
|
53
|
-
while (lastDtsClientVersion !== dtsClientVersion) {
|
|
54
|
-
lastDtsClientVersion = dtsClientVersion;
|
|
55
|
-
result = await languageService[api](...args);
|
|
56
|
-
dtsClientVersion = await dtsClient.sync();
|
|
57
|
-
}
|
|
58
|
-
return result;
|
|
59
|
-
};
|
|
60
23
|
}
|
|
61
24
|
return new InnocentRabbit();
|
|
62
25
|
function createLanguageServiceHost() {
|
|
63
26
|
let projectVersion = 0;
|
|
64
27
|
const modelSnapshot = new WeakMap();
|
|
65
|
-
const dtsFileSnapshot = new Map();
|
|
66
28
|
const modelVersions = new Map();
|
|
67
29
|
const host = {
|
|
68
30
|
getProjectVersion() {
|
|
69
31
|
const models = options.workerContext.getMirrorModels();
|
|
70
32
|
if (modelVersions.size === options.workerContext.getMirrorModels().length) {
|
|
71
33
|
if (models.every(model => modelVersions.get(model) === model.version)) {
|
|
72
|
-
return
|
|
34
|
+
return projectVersion;
|
|
73
35
|
}
|
|
74
36
|
}
|
|
75
37
|
modelVersions.clear();
|
|
@@ -77,22 +39,12 @@ function createLanguageService(options) {
|
|
|
77
39
|
modelVersions.set(model, model.version);
|
|
78
40
|
}
|
|
79
41
|
projectVersion++;
|
|
80
|
-
return
|
|
81
|
-
},
|
|
82
|
-
getTypeRootsVersion() {
|
|
83
|
-
return dtsClientVersion;
|
|
42
|
+
return projectVersion;
|
|
84
43
|
},
|
|
85
44
|
getScriptFileNames() {
|
|
86
45
|
const models = options.workerContext.getMirrorModels();
|
|
87
46
|
return models.map(model => model.uri.fsPath);
|
|
88
47
|
},
|
|
89
|
-
getScriptVersion(fileName) {
|
|
90
|
-
const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
|
|
91
|
-
if (model) {
|
|
92
|
-
return model.version.toString();
|
|
93
|
-
}
|
|
94
|
-
return dtsClient?.readFile(fileName)?.length.toString() ?? '';
|
|
95
|
-
},
|
|
96
48
|
getScriptSnapshot(fileName) {
|
|
97
49
|
const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
|
|
98
50
|
if (model) {
|
|
@@ -108,45 +60,13 @@ function createLanguageService(options) {
|
|
|
108
60
|
}]);
|
|
109
61
|
return modelSnapshot.get(model)?.[1];
|
|
110
62
|
}
|
|
111
|
-
if (dtsFileSnapshot.has(fileName)) {
|
|
112
|
-
return dtsFileSnapshot.get(fileName);
|
|
113
|
-
}
|
|
114
|
-
const dtsFileText = dtsClient?.readFile(fileName);
|
|
115
|
-
if (dtsFileText !== undefined) {
|
|
116
|
-
dtsFileSnapshot.set(fileName, {
|
|
117
|
-
getText: (start, end) => dtsFileText.substring(start, end),
|
|
118
|
-
getLength: () => dtsFileText.length,
|
|
119
|
-
getChangeRange: () => undefined,
|
|
120
|
-
});
|
|
121
|
-
return dtsFileSnapshot.get(fileName);
|
|
122
|
-
}
|
|
123
63
|
},
|
|
124
64
|
getCompilationSettings() {
|
|
125
|
-
return compilerOptions;
|
|
65
|
+
return options.typescript?.compilerOptions ?? {};
|
|
126
66
|
},
|
|
127
67
|
getCurrentDirectory() {
|
|
128
68
|
return '/';
|
|
129
69
|
},
|
|
130
|
-
getDefaultLibFileName(options) {
|
|
131
|
-
if (ts) {
|
|
132
|
-
return `/node_modules/typescript/lib/${ts.getDefaultLibFileName(options)}`;
|
|
133
|
-
}
|
|
134
|
-
return '';
|
|
135
|
-
},
|
|
136
|
-
readFile(fileName) {
|
|
137
|
-
const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
|
|
138
|
-
if (model) {
|
|
139
|
-
return model.getValue();
|
|
140
|
-
}
|
|
141
|
-
return dtsClient?.readFile(fileName);
|
|
142
|
-
},
|
|
143
|
-
fileExists(fileName) {
|
|
144
|
-
const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
|
|
145
|
-
if (model) {
|
|
146
|
-
return true;
|
|
147
|
-
}
|
|
148
|
-
return dtsClient?.fileExists(fileName) ?? false;
|
|
149
|
-
},
|
|
150
70
|
};
|
|
151
71
|
return host;
|
|
152
72
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/monaco",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"main": "out/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -15,13 +15,12 @@
|
|
|
15
15
|
"directory": "packages/monaco"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@volar/language-service": "1.
|
|
18
|
+
"@volar/language-service": "1.7.1",
|
|
19
19
|
"vscode-uri": "^3.0.7"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@volar/web-fs": "1.6.9",
|
|
23
22
|
"monaco-editor-core": "latest",
|
|
24
23
|
"vscode-languageserver-protocol": "^3.17.3"
|
|
25
24
|
},
|
|
26
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "6d092d684c65ce43af8a401bc90d0b2769a2bf49"
|
|
27
26
|
}
|