@volar/monaco 1.6.9 → 1.7.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/README.md +30 -16
- package/out/editor.js +1 -1
- package/out/languages.js +1 -1
- package/out/utils/provider.js +4 -4
- package/out/worker.d.ts +0 -3
- package/out/worker.js +6 -82
- 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/editor.js
CHANGED
package/out/languages.js
CHANGED
|
@@ -35,5 +35,5 @@ var languages;
|
|
|
35
35
|
return { dispose: () => disposables.forEach((d) => d.dispose()) };
|
|
36
36
|
}
|
|
37
37
|
languages_1.registerProvides = registerProvides;
|
|
38
|
-
})(languages
|
|
38
|
+
})(languages || (exports.languages = languages = {}));
|
|
39
39
|
//# sourceMappingURL=languages.js.map
|
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,10 +39,7 @@ 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();
|
|
@@ -88,10 +47,7 @@ function createLanguageService(options) {
|
|
|
88
47
|
},
|
|
89
48
|
getScriptVersion(fileName) {
|
|
90
49
|
const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
|
|
91
|
-
|
|
92
|
-
return model.version.toString();
|
|
93
|
-
}
|
|
94
|
-
return dtsClient?.readFile(fileName)?.length.toString() ?? '';
|
|
50
|
+
return model?.version.toString();
|
|
95
51
|
},
|
|
96
52
|
getScriptSnapshot(fileName) {
|
|
97
53
|
const model = options.workerContext.getMirrorModels().find(model => model.uri.fsPath === fileName);
|
|
@@ -108,45 +64,13 @@ function createLanguageService(options) {
|
|
|
108
64
|
}]);
|
|
109
65
|
return modelSnapshot.get(model)?.[1];
|
|
110
66
|
}
|
|
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
67
|
},
|
|
124
68
|
getCompilationSettings() {
|
|
125
|
-
return compilerOptions;
|
|
69
|
+
return options.typescript?.compilerOptions ?? {};
|
|
126
70
|
},
|
|
127
71
|
getCurrentDirectory() {
|
|
128
72
|
return '/';
|
|
129
73
|
},
|
|
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
74
|
};
|
|
151
75
|
return host;
|
|
152
76
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/monaco",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
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.0",
|
|
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": "38ec4f727b32dbf2cf3284ab02695e3a8effacc5"
|
|
27
26
|
}
|