@volar/monaco 1.11.1 → 2.0.0-alpha.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/worker.js CHANGED
@@ -1,85 +1,119 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLanguageService = exports.createLanguageHost = exports.createServiceEnvironment = void 0;
4
- const language_service_1 = require("@volar/language-service");
5
- const vscode_uri_1 = require("vscode-uri");
6
- function createServiceEnvironment() {
7
- return {
8
- uriToFileName: uri => vscode_uri_1.URI.parse(uri).fsPath.replace(/\\/g, '/'),
9
- fileNameToUri: fileName => vscode_uri_1.URI.file(fileName).toString(),
10
- workspaceUri: vscode_uri_1.URI.file('/'),
11
- rootUri: vscode_uri_1.URI.file('/'),
12
- console,
13
- };
14
- }
15
- exports.createServiceEnvironment = createServiceEnvironment;
16
- function createLanguageHost(getMirrorModels, env, rootPath, compilerOptions = {}) {
17
- let projectVersion = 0;
18
- const modelSnapshot = new WeakMap();
19
- const modelVersions = new Map();
20
- const host = {
21
- workspacePath: rootPath,
22
- rootPath: rootPath,
23
- getProjectVersion() {
24
- const models = getMirrorModels();
25
- if (modelVersions.size === getMirrorModels().length) {
26
- if (models.every(model => modelVersions.get(model) === model.version)) {
27
- return projectVersion.toString();
28
- }
29
- }
30
- modelVersions.clear();
31
- for (const model of getMirrorModels()) {
32
- modelVersions.set(model, model.version);
33
- }
34
- projectVersion++;
35
- return projectVersion.toString();
36
- },
37
- getScriptFileNames() {
38
- const models = getMirrorModels();
39
- return models.map(model => env.uriToFileName(model.uri.toString(true)));
40
- },
41
- getScriptSnapshot(fileName) {
42
- const uri = env.fileNameToUri(fileName);
1
+ import { createLanguageService as _createLanguageService, createFileProvider, resolveCommonLanguageId, } from '@volar/language-service';
2
+ import { URI } from 'vscode-uri';
3
+ import { createLanguage, createSys } from '@volar/typescript';
4
+ export function createSimpleWorkerService(languages, services, getMirrorModels, extraApis = {}) {
5
+ return createWorkerService(services, () => {
6
+ const snapshots = new Map();
7
+ const files = createFileProvider(languages, false, (uri) => {
43
8
  const model = getMirrorModels().find(model => model.uri.toString(true) === uri);
44
9
  if (model) {
45
- const cache = modelSnapshot.get(model);
10
+ const cache = snapshots.get(model);
46
11
  if (cache && cache[0] === model.version) {
47
- return cache[1];
12
+ return;
48
13
  }
49
14
  const text = model.getValue();
50
- modelSnapshot.set(model, [model.version, {
51
- getText: (start, end) => text.substring(start, end),
52
- getLength: () => text.length,
53
- getChangeRange: () => undefined,
54
- }]);
55
- return modelSnapshot.get(model)?.[1];
15
+ const snapshot = {
16
+ getText: (start, end) => text.substring(start, end),
17
+ getLength: () => text.length,
18
+ getChangeRange: () => undefined,
19
+ };
20
+ snapshots.set(model, [model.version, snapshot]);
21
+ files.updateSourceFile(uri, snapshot, resolveCommonLanguageId(uri));
56
22
  }
23
+ else {
24
+ files.deleteSourceFile(uri);
25
+ }
26
+ });
27
+ return { files };
28
+ }, extraApis);
29
+ }
30
+ export function createTypeScriptWorkerService(ts, languages, services, getMirrorModels, compilerOptions, extraApis = {}) {
31
+ return createWorkerService(services, env => {
32
+ let projectVersion = 0;
33
+ const modelSnapshot = new WeakMap();
34
+ const modelVersions = new Map();
35
+ const host = {
36
+ getCurrentDirectory() {
37
+ return env.uriToFileName(env.workspaceFolder.uri.toString(true));
38
+ },
39
+ getProjectVersion() {
40
+ const models = getMirrorModels();
41
+ if (modelVersions.size === getMirrorModels().length) {
42
+ if (models.every(model => modelVersions.get(model) === model.version)) {
43
+ return projectVersion.toString();
44
+ }
45
+ }
46
+ modelVersions.clear();
47
+ for (const model of getMirrorModels()) {
48
+ modelVersions.set(model, model.version);
49
+ }
50
+ projectVersion++;
51
+ return projectVersion.toString();
52
+ },
53
+ getScriptFileNames() {
54
+ const models = getMirrorModels();
55
+ return models.map(model => env.uriToFileName(model.uri.toString(true)));
56
+ },
57
+ getScriptSnapshot(fileName) {
58
+ const uri = env.fileNameToUri(fileName);
59
+ const model = getMirrorModels().find(model => model.uri.toString(true) === uri);
60
+ if (model) {
61
+ const cache = modelSnapshot.get(model);
62
+ if (cache && cache[0] === model.version) {
63
+ return cache[1];
64
+ }
65
+ const text = model.getValue();
66
+ modelSnapshot.set(model, [model.version, {
67
+ getText: (start, end) => text.substring(start, end),
68
+ getLength: () => text.length,
69
+ getChangeRange: () => undefined,
70
+ }]);
71
+ return modelSnapshot.get(model)?.[1];
72
+ }
73
+ },
74
+ getCompilationSettings() {
75
+ return compilerOptions;
76
+ },
77
+ getFileName: env.uriToFileName,
78
+ getFileId: env.fileNameToUri,
79
+ getLanguageId: id => resolveCommonLanguageId(id),
80
+ };
81
+ const sys = createSys(ts, env, host.getCurrentDirectory());
82
+ const language = createLanguage(ts, sys, languages, undefined, host);
83
+ return language;
84
+ }, extraApis);
85
+ }
86
+ function createWorkerService(services, getLanguage, extraApis = {}) {
87
+ const env = {
88
+ workspaceFolder: {
89
+ uri: URI.file('/'),
90
+ name: '',
57
91
  },
58
- getCompilationSettings() {
59
- return compilerOptions;
60
- },
92
+ uriToFileName: uri => URI.parse(uri).fsPath.replace(/\\/g, '/'),
93
+ fileNameToUri: fileName => URI.file(fileName).toString(),
94
+ console,
61
95
  };
62
- return host;
63
- }
64
- exports.createLanguageHost = createLanguageHost;
65
- function createLanguageService(modules, env, config, host, extraApis = {}) {
66
- const languageService = (0, language_service_1.createLanguageService)(modules, env, config, host);
67
- class InnocentRabbit {
96
+ const language = getLanguage(env);
97
+ const languageService = _createLanguageService(language, services, env);
98
+ class WorkerService {
99
+ constructor() {
100
+ this.env = env;
101
+ this.project = language;
102
+ }
68
103
  }
69
104
  ;
70
105
  for (const api in languageService) {
71
106
  const isFunction = typeof languageService[api] === 'function';
72
107
  if (isFunction) {
73
- InnocentRabbit.prototype[api] = languageService[api];
108
+ WorkerService.prototype[api] = languageService[api];
74
109
  }
75
110
  }
76
111
  for (const api in extraApis) {
77
112
  const isFunction = typeof extraApis[api] === 'function';
78
113
  if (isFunction) {
79
- InnocentRabbit.prototype[api] = extraApis[api];
114
+ WorkerService.prototype[api] = extraApis[api];
80
115
  }
81
116
  }
82
- return new InnocentRabbit();
117
+ return new WorkerService();
83
118
  }
84
- exports.createLanguageService = createLanguageService;
85
119
  //# sourceMappingURL=worker.js.map
@@ -1,4 +0,0 @@
1
- import type * as vscode from 'vscode-languageserver-protocol';
2
- import type { editor } from 'monaco-editor-core';
3
- export declare const markers: WeakMap<editor.IMarkerData, vscode.Diagnostic>;
4
- //# sourceMappingURL=markers.d.ts.map
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.markers = void 0;
4
- exports.markers = new WeakMap();
5
- //# sourceMappingURL=markers.js.map
@@ -1,14 +0,0 @@
1
- import type { IMarkdownString, IRange, IPosition, languages } from 'monaco-editor-core';
2
- import type * as protocol from 'vscode-languageserver-protocol';
3
- export declare function asPosition(position: IPosition): protocol.Position;
4
- export declare function asRange(range: IRange): protocol.Range;
5
- export declare function asCompletionContext(context: languages.CompletionContext): protocol.CompletionContext;
6
- export declare function asSignatureHelpContext(context: languages.SignatureHelpContext): protocol.SignatureHelpContext;
7
- export declare function asSignatureHelpTriggerKind(kind: languages.SignatureHelpTriggerKind): protocol.SignatureHelpTriggerKind;
8
- export declare function asSignatureHelp(signatureHelp: languages.SignatureHelp): protocol.SignatureHelp;
9
- export declare function asSignatureInformation(signatureInformation: languages.SignatureInformation): protocol.SignatureInformation;
10
- export declare function asParameterInformation(parameterInformation: languages.ParameterInformation): protocol.ParameterInformation;
11
- export declare function asMarkdownString(entry: IMarkdownString | string | undefined): protocol.MarkupContent | string | undefined;
12
- export declare function asTriggerKind(kind: languages.CompletionTriggerKind): protocol.CompletionTriggerKind;
13
- export declare function asFormattingOptions(options: languages.FormattingOptions): protocol.FormattingOptions;
14
- //# sourceMappingURL=monaco2protocol.d.ts.map
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.asFormattingOptions = exports.asTriggerKind = exports.asMarkdownString = exports.asParameterInformation = exports.asSignatureInformation = exports.asSignatureHelp = exports.asSignatureHelpTriggerKind = exports.asSignatureHelpContext = exports.asCompletionContext = exports.asRange = exports.asPosition = void 0;
4
- function asPosition(position) {
5
- return {
6
- line: position.lineNumber - 1,
7
- character: position.column - 1,
8
- };
9
- }
10
- exports.asPosition = asPosition;
11
- function asRange(range) {
12
- return {
13
- start: asPosition({ lineNumber: range.startLineNumber, column: range.startColumn }),
14
- end: asPosition({ lineNumber: range.endLineNumber, column: range.endColumn }),
15
- };
16
- }
17
- exports.asRange = asRange;
18
- function asCompletionContext(context) {
19
- return {
20
- triggerKind: asTriggerKind(context.triggerKind),
21
- triggerCharacter: context.triggerCharacter,
22
- };
23
- }
24
- exports.asCompletionContext = asCompletionContext;
25
- function asSignatureHelpContext(context) {
26
- return {
27
- triggerKind: asSignatureHelpTriggerKind(context.triggerKind),
28
- triggerCharacter: context.triggerCharacter,
29
- isRetrigger: context.isRetrigger,
30
- activeSignatureHelp: context.activeSignatureHelp ? asSignatureHelp(context.activeSignatureHelp) : undefined,
31
- };
32
- }
33
- exports.asSignatureHelpContext = asSignatureHelpContext;
34
- function asSignatureHelpTriggerKind(kind) {
35
- switch (kind) {
36
- case 1:
37
- return 1;
38
- case 2:
39
- return 2;
40
- case 3:
41
- return 3;
42
- }
43
- }
44
- exports.asSignatureHelpTriggerKind = asSignatureHelpTriggerKind;
45
- function asSignatureHelp(signatureHelp) {
46
- return {
47
- signatures: signatureHelp.signatures.map(asSignatureInformation),
48
- activeSignature: signatureHelp.activeSignature,
49
- activeParameter: signatureHelp.activeParameter,
50
- };
51
- }
52
- exports.asSignatureHelp = asSignatureHelp;
53
- function asSignatureInformation(signatureInformation) {
54
- return {
55
- label: signatureInformation.label,
56
- documentation: asMarkdownString(signatureInformation.documentation),
57
- parameters: signatureInformation.parameters.map(asParameterInformation),
58
- activeParameter: signatureInformation.activeParameter,
59
- };
60
- }
61
- exports.asSignatureInformation = asSignatureInformation;
62
- function asParameterInformation(parameterInformation) {
63
- return {
64
- label: parameterInformation.label,
65
- documentation: asMarkdownString(parameterInformation.documentation),
66
- };
67
- }
68
- exports.asParameterInformation = asParameterInformation;
69
- function asMarkdownString(entry) {
70
- if (!entry) {
71
- return undefined;
72
- }
73
- if (typeof entry === 'string') {
74
- return entry;
75
- }
76
- return {
77
- kind: 'markdown',
78
- value: entry.value,
79
- };
80
- }
81
- exports.asMarkdownString = asMarkdownString;
82
- function asTriggerKind(kind) {
83
- switch (kind) {
84
- case 0:
85
- return 1;
86
- case 1:
87
- return 2;
88
- case 2:
89
- return 3;
90
- }
91
- }
92
- exports.asTriggerKind = asTriggerKind;
93
- function asFormattingOptions(options) {
94
- return {
95
- tabSize: options.tabSize,
96
- insertSpaces: options.insertSpaces,
97
- };
98
- }
99
- exports.asFormattingOptions = asFormattingOptions;
100
- //# sourceMappingURL=monaco2protocol.js.map
@@ -1,39 +0,0 @@
1
- import type { editor, IMarkdownString, IRange, languages, MarkerSeverity, MarkerTag, IPosition, Uri } from 'monaco-editor-core';
2
- import type * as protocol from 'vscode-languageserver-protocol';
3
- export declare function asCompletionList(list: protocol.CompletionList, range: protocol.Range): languages.CompletionList;
4
- export declare function asCompletionItemKind(kind: protocol.CompletionItemKind | undefined): languages.CompletionItemKind;
5
- export declare function asCompletionItem(item: protocol.CompletionItem, range: protocol.Range): languages.CompletionItem;
6
- export declare function asCommand(command: protocol.Command): languages.Command;
7
- export declare function asTextEdit(edit: protocol.TextEdit): languages.TextEdit;
8
- export declare function asCompletionItemRange(textEdit: NonNullable<protocol.CompletionItem['textEdit']>): languages.CompletionItem['range'];
9
- export declare function asRange(range: protocol.Range): IRange;
10
- export declare function asHover(hover: protocol.Hover): languages.Hover;
11
- export declare function asMarkdownString(markdownString: protocol.Hover['contents']): IMarkdownString[];
12
- export declare function asLocation(definition: protocol.LocationLink | protocol.Location): languages.Location;
13
- export declare function asUri(uri: protocol.URI): Uri;
14
- export declare function asSignatureHelp(signatureHelp: protocol.SignatureHelp): languages.SignatureHelp;
15
- export declare function asSignatureInformation(signatureInformation: protocol.SignatureInformation): languages.SignatureInformation;
16
- export declare function asParameterInformation(parameterInformation: protocol.ParameterInformation): languages.ParameterInformation;
17
- export declare function asMarkerData(diagnostic: protocol.Diagnostic): editor.IMarkerData;
18
- export declare function asMarkerTag(tag: protocol.DiagnosticTag): MarkerTag;
19
- export declare function asRelatedInformation(relatedInformation: protocol.DiagnosticRelatedInformation): editor.IRelatedInformation;
20
- export declare function asMarkerSeverity(severity: protocol.DiagnosticSeverity | undefined): MarkerSeverity;
21
- export declare function asWorkspaceEdit(workspaceEdit: protocol.WorkspaceEdit): languages.WorkspaceEdit;
22
- export declare function asDocumentSymbol(symbol: protocol.DocumentSymbol): languages.DocumentSymbol;
23
- export declare function asSymbolTag(tag: protocol.SymbolTag): languages.SymbolTag;
24
- export declare function asSymbolKind(kind: protocol.SymbolKind): languages.SymbolKind;
25
- export declare function asDocumentHighlight(highlight: protocol.DocumentHighlight): languages.DocumentHighlight;
26
- export declare function asDocumentHighlightKind(kind: protocol.DocumentHighlightKind | undefined): languages.DocumentHighlightKind;
27
- export declare function asCodeLens(item: protocol.CodeLens): languages.CodeLens;
28
- export declare function asCodeAction(item: protocol.CodeAction): languages.CodeAction;
29
- export declare function asLink(item: protocol.DocumentLink): languages.ILink;
30
- export declare function asColorInformation(item: protocol.ColorInformation): languages.IColorInformation;
31
- export declare function asColorPresentation(item: protocol.ColorPresentation): languages.IColorPresentation;
32
- export declare function asFoldingRange(item: protocol.FoldingRange): languages.FoldingRange;
33
- export declare function asSelectionRange(item: protocol.SelectionRange): languages.SelectionRange;
34
- export declare function asInlayHint(item: protocol.InlayHint): languages.InlayHint;
35
- export declare function asInlayHintKind(kind: protocol.InlayHintKind): languages.InlayHintKind;
36
- export declare function asInlayHintLabel(label: protocol.InlayHint['label']): languages.InlayHint['label'];
37
- export declare function asInlayHintLabelPart(part: protocol.InlayHintLabelPart): languages.InlayHintLabelPart;
38
- export declare function asPosition(position: protocol.Position): IPosition;
39
- //# sourceMappingURL=protocol2monaco.d.ts.map