@volar/monaco 1.6.4 → 1.6.5-patch.2

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/out/editor.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { LanguageService } from '@volar/language-service';
2
- import { editor as _editor, IDisposable, Uri } from 'monaco-editor-core';
2
+ import type { editor as _editor, IDisposable, Uri } from 'monaco-editor-core';
3
3
  export declare namespace editor {
4
4
  function activateMarkers(worker: _editor.MonacoWebWorker<LanguageService>, languages: string[], markersOwn: string, getSyncUris: () => Uri[], editor: typeof import('monaco-editor-core').editor): IDisposable;
5
5
  function activateAutoInsertion(worker: _editor.MonacoWebWorker<LanguageService>, languages: string[], getSyncUris: () => Uri[], editor: typeof import('monaco-editor-core').editor): IDisposable;
package/out/editor.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.editor = void 0;
4
- const monaco_editor_core_1 = require("monaco-editor-core");
5
4
  const markers_1 = require("./utils/markers");
6
5
  const protocol2monaco = require("./utils/protocol2monaco");
7
6
  const monaco2protocol = require("./utils/monaco2protocol");
@@ -134,9 +133,11 @@ var editor;
134
133
  if (model.getVersionId() !== version) {
135
134
  return;
136
135
  }
137
- const position = new monaco_editor_core_1.Position(lastChange.range.startLineNumber, lastChange.range.startColumn + lastChange.text.length);
138
136
  const languageService = await worker.withSyncedResources(getSyncUris());
139
- const edit = await languageService.doAutoInsert(model.uri.toString(), monaco2protocol.asPosition(position), {
137
+ const edit = await languageService.doAutoInsert(model.uri.toString(), monaco2protocol.asPosition({
138
+ lineNumber: lastChange.range.startLineNumber,
139
+ column: lastChange.range.startColumn + lastChange.text.length,
140
+ }), {
140
141
  lastChange: {
141
142
  range: monaco2protocol.asRange(lastChange.range),
142
143
  rangeLength: lastChange.rangeLength,
@@ -1,3 +1,3 @@
1
- import * as vscode from 'vscode-languageserver-protocol';
1
+ import type * as vscode from 'vscode-languageserver-protocol';
2
2
  import type { editor } from 'monaco-editor-core';
3
3
  export declare const markers: WeakMap<editor.IMarkerData, vscode.Diagnostic>;
@@ -1,6 +1,6 @@
1
- import { IMarkdownString, IRange, languages, Position } from 'monaco-editor-core';
2
- import * as protocol from 'vscode-languageserver-protocol';
3
- export declare function asPosition(position: Position): protocol.Position;
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
4
  export declare function asRange(range: IRange): protocol.Range;
5
5
  export declare function asCompletionContext(context: languages.CompletionContext): protocol.CompletionContext;
6
6
  export declare function asSignatureHelpContext(context: languages.SignatureHelpContext): protocol.SignatureHelpContext;
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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
- const monaco_editor_core_1 = require("monaco-editor-core");
5
- const protocol = require("vscode-languageserver-protocol");
6
4
  function asPosition(position) {
7
- return protocol.Position.create(position.lineNumber - 1, position.column - 1);
5
+ return {
6
+ line: position.lineNumber - 1,
7
+ character: position.column - 1,
8
+ };
8
9
  }
9
10
  exports.asPosition = asPosition;
10
11
  function asRange(range) {
11
- return protocol.Range.create(range.startLineNumber - 1, range.startColumn - 1, range.endLineNumber - 1, range.endColumn - 1);
12
+ return {
13
+ start: asPosition({ lineNumber: range.startLineNumber, column: range.startColumn }),
14
+ end: asPosition({ lineNumber: range.endLineNumber, column: range.endColumn }),
15
+ };
12
16
  }
13
17
  exports.asRange = asRange;
14
18
  function asCompletionContext(context) {
@@ -29,12 +33,12 @@ function asSignatureHelpContext(context) {
29
33
  exports.asSignatureHelpContext = asSignatureHelpContext;
30
34
  function asSignatureHelpTriggerKind(kind) {
31
35
  switch (kind) {
32
- case monaco_editor_core_1.languages.SignatureHelpTriggerKind.Invoke:
33
- return protocol.SignatureHelpTriggerKind.Invoked;
34
- case monaco_editor_core_1.languages.SignatureHelpTriggerKind.TriggerCharacter:
35
- return protocol.SignatureHelpTriggerKind.TriggerCharacter;
36
- case monaco_editor_core_1.languages.SignatureHelpTriggerKind.ContentChange:
37
- return protocol.SignatureHelpTriggerKind.ContentChange;
36
+ case 1:
37
+ return 1;
38
+ case 2:
39
+ return 2;
40
+ case 3:
41
+ return 3;
38
42
  }
39
43
  }
40
44
  exports.asSignatureHelpTriggerKind = asSignatureHelpTriggerKind;
@@ -77,12 +81,12 @@ function asMarkdownString(entry) {
77
81
  exports.asMarkdownString = asMarkdownString;
78
82
  function asTriggerKind(kind) {
79
83
  switch (kind) {
80
- case monaco_editor_core_1.languages.CompletionTriggerKind.Invoke:
81
- return protocol.CompletionTriggerKind.Invoked;
82
- case monaco_editor_core_1.languages.CompletionTriggerKind.TriggerCharacter:
83
- return protocol.CompletionTriggerKind.TriggerCharacter;
84
- case monaco_editor_core_1.languages.CompletionTriggerKind.TriggerForIncompleteCompletions:
85
- return protocol.CompletionTriggerKind.TriggerForIncompleteCompletions;
84
+ case 0:
85
+ return 1;
86
+ case 1:
87
+ return 2;
88
+ case 2:
89
+ return 3;
86
90
  }
87
91
  }
88
92
  exports.asTriggerKind = asTriggerKind;
@@ -1,5 +1,5 @@
1
- import { editor, IMarkdownString, IRange, languages, MarkerSeverity, MarkerTag, Position, Uri } from 'monaco-editor-core';
2
- import * as protocol from 'vscode-languageserver-protocol';
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
3
  export declare function asCompletionList(list: protocol.CompletionList, range: protocol.Range): languages.CompletionList;
4
4
  export declare function asCompletionItemKind(kind: protocol.CompletionItemKind | undefined): languages.CompletionItemKind;
5
5
  export declare function asCompletionItem(item: protocol.CompletionItem, range: protocol.Range): languages.CompletionItem;
@@ -35,4 +35,4 @@ export declare function asInlayHint(item: protocol.InlayHint): languages.InlayHi
35
35
  export declare function asInlayHintKind(kind: protocol.InlayHintKind): languages.InlayHintKind;
36
36
  export declare function asInlayHintLabel(label: protocol.InlayHint['label']): languages.InlayHint['label'];
37
37
  export declare function asInlayHintLabelPart(part: protocol.InlayHintLabelPart): languages.InlayHintLabelPart;
38
- export declare function asPosition(position: protocol.Position): Position;
38
+ export declare function asPosition(position: protocol.Position): IPosition;
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.asPosition = exports.asInlayHintLabelPart = exports.asInlayHintLabel = exports.asInlayHintKind = exports.asInlayHint = exports.asSelectionRange = exports.asFoldingRange = exports.asColorPresentation = exports.asColorInformation = exports.asLink = exports.asCodeAction = exports.asCodeLens = exports.asDocumentHighlightKind = exports.asDocumentHighlight = exports.asSymbolKind = exports.asSymbolTag = exports.asDocumentSymbol = exports.asWorkspaceEdit = exports.asMarkerSeverity = exports.asRelatedInformation = exports.asMarkerTag = exports.asMarkerData = exports.asParameterInformation = exports.asSignatureInformation = exports.asSignatureHelp = exports.asUri = exports.asLocation = exports.asMarkdownString = exports.asHover = exports.asRange = exports.asCompletionItemRange = exports.asTextEdit = exports.asCommand = exports.asCompletionItem = exports.asCompletionItemKind = exports.asCompletionList = void 0;
4
- const monaco_editor_core_1 = require("monaco-editor-core");
5
- const protocol = require("vscode-languageserver-protocol");
4
+ const vscode_uri_1 = require("vscode-uri");
6
5
  function asCompletionList(list, range) {
7
6
  return {
8
7
  incomplete: list.isIncomplete,
@@ -12,58 +11,58 @@ function asCompletionList(list, range) {
12
11
  exports.asCompletionList = asCompletionList;
13
12
  function asCompletionItemKind(kind) {
14
13
  switch (kind) {
15
- case protocol.CompletionItemKind.Method:
16
- return monaco_editor_core_1.languages.CompletionItemKind.Method;
17
- case protocol.CompletionItemKind.Function:
18
- return monaco_editor_core_1.languages.CompletionItemKind.Function;
19
- case protocol.CompletionItemKind.Constructor:
20
- return monaco_editor_core_1.languages.CompletionItemKind.Constructor;
21
- case protocol.CompletionItemKind.Field:
22
- return monaco_editor_core_1.languages.CompletionItemKind.Field;
23
- case protocol.CompletionItemKind.Variable:
24
- return monaco_editor_core_1.languages.CompletionItemKind.Variable;
25
- case protocol.CompletionItemKind.Class:
26
- return monaco_editor_core_1.languages.CompletionItemKind.Class;
27
- case protocol.CompletionItemKind.Interface:
28
- return monaco_editor_core_1.languages.CompletionItemKind.Interface;
29
- case protocol.CompletionItemKind.Module:
30
- return monaco_editor_core_1.languages.CompletionItemKind.Module;
31
- case protocol.CompletionItemKind.Property:
32
- return monaco_editor_core_1.languages.CompletionItemKind.Property;
33
- case protocol.CompletionItemKind.Unit:
34
- return monaco_editor_core_1.languages.CompletionItemKind.Unit;
35
- case protocol.CompletionItemKind.Value:
36
- return monaco_editor_core_1.languages.CompletionItemKind.Value;
37
- case protocol.CompletionItemKind.Enum:
38
- return monaco_editor_core_1.languages.CompletionItemKind.Enum;
39
- case protocol.CompletionItemKind.Keyword:
40
- return monaco_editor_core_1.languages.CompletionItemKind.Keyword;
41
- case protocol.CompletionItemKind.Snippet:
42
- return monaco_editor_core_1.languages.CompletionItemKind.Snippet;
43
- case protocol.CompletionItemKind.Text:
44
- return monaco_editor_core_1.languages.CompletionItemKind.Text;
45
- case protocol.CompletionItemKind.Color:
46
- return monaco_editor_core_1.languages.CompletionItemKind.Color;
47
- case protocol.CompletionItemKind.File:
48
- return monaco_editor_core_1.languages.CompletionItemKind.File;
49
- case protocol.CompletionItemKind.Reference:
50
- return monaco_editor_core_1.languages.CompletionItemKind.Reference;
51
- case protocol.CompletionItemKind.Folder:
52
- return monaco_editor_core_1.languages.CompletionItemKind.Folder;
53
- case protocol.CompletionItemKind.EnumMember:
54
- return monaco_editor_core_1.languages.CompletionItemKind.EnumMember;
55
- case protocol.CompletionItemKind.Constant:
56
- return monaco_editor_core_1.languages.CompletionItemKind.Constant;
57
- case protocol.CompletionItemKind.Struct:
58
- return monaco_editor_core_1.languages.CompletionItemKind.Struct;
59
- case protocol.CompletionItemKind.Event:
60
- return monaco_editor_core_1.languages.CompletionItemKind.Event;
61
- case protocol.CompletionItemKind.Operator:
62
- return monaco_editor_core_1.languages.CompletionItemKind.Operator;
63
- case protocol.CompletionItemKind.TypeParameter:
64
- return monaco_editor_core_1.languages.CompletionItemKind.TypeParameter;
14
+ case 2:
15
+ return 0;
16
+ case 3:
17
+ return 1;
18
+ case 4:
19
+ return 2;
20
+ case 5:
21
+ return 3;
22
+ case 6:
23
+ return 4;
24
+ case 7:
25
+ return 5;
26
+ case 8:
27
+ return 7;
28
+ case 9:
29
+ return 8;
30
+ case 10:
31
+ return 9;
32
+ case 11:
33
+ return 12;
34
+ case 12:
35
+ return 13;
36
+ case 13:
37
+ return 15;
38
+ case 14:
39
+ return 17;
40
+ case 15:
41
+ return 27;
42
+ case 1:
43
+ return 18;
44
+ case 16:
45
+ return 19;
46
+ case 17:
47
+ return 20;
48
+ case 18:
49
+ return 21;
50
+ case 19:
51
+ return 23;
52
+ case 20:
53
+ return 16;
54
+ case 21:
55
+ return 14;
56
+ case 22:
57
+ return 6;
58
+ case 23:
59
+ return 10;
60
+ case 24:
61
+ return 11;
62
+ case 25:
63
+ return 24;
65
64
  default:
66
- return monaco_editor_core_1.languages.CompletionItemKind.Text;
65
+ return 18;
67
66
  }
68
67
  }
69
68
  exports.asCompletionItemKind = asCompletionItemKind;
@@ -78,7 +77,7 @@ function asCompletionItem(item, range) {
78
77
  filterText: item.filterText,
79
78
  preselect: item.preselect,
80
79
  insertText: item.textEdit?.newText ?? item.insertText ?? item.label,
81
- insertTextRules: monaco_editor_core_1.languages.CompletionItemInsertTextRule.InsertAsSnippet,
80
+ insertTextRules: 4,
82
81
  range: item.textEdit ? asCompletionItemRange(item.textEdit) : asRange(range),
83
82
  commitCharacters: item.commitCharacters,
84
83
  additionalTextEdits: item.additionalTextEdits?.map(asTextEdit),
@@ -102,7 +101,7 @@ function asTextEdit(edit) {
102
101
  }
103
102
  exports.asTextEdit = asTextEdit;
104
103
  function asCompletionItemRange(textEdit) {
105
- if (protocol.InsertReplaceEdit.is(textEdit)) {
104
+ if ('insert' in textEdit && 'replace' in textEdit) {
106
105
  const result = {
107
106
  insert: asRange(textEdit.insert),
108
107
  replace: asRange(textEdit.replace),
@@ -141,7 +140,7 @@ function asMarkdownString(markdownString) {
141
140
  }
142
141
  exports.asMarkdownString = asMarkdownString;
143
142
  function asLocation(definition) {
144
- if (protocol.LocationLink.is(definition)) {
143
+ if ('targetUri' in definition && 'targetSelectionRange' in definition) {
145
144
  return {
146
145
  uri: asUri(definition.targetUri),
147
146
  range: asRange(definition.targetSelectionRange),
@@ -156,7 +155,7 @@ function asLocation(definition) {
156
155
  }
157
156
  exports.asLocation = asLocation;
158
157
  function asUri(uri) {
159
- return monaco_editor_core_1.Uri.parse(uri);
158
+ return vscode_uri_1.URI.parse(uri);
160
159
  }
161
160
  exports.asUri = asUri;
162
161
  function asSignatureHelp(signatureHelp) {
@@ -199,10 +198,10 @@ function asMarkerData(diagnostic) {
199
198
  exports.asMarkerData = asMarkerData;
200
199
  function asMarkerTag(tag) {
201
200
  switch (tag) {
202
- case protocol.DiagnosticTag.Unnecessary:
203
- return monaco_editor_core_1.MarkerTag.Unnecessary;
204
- case protocol.DiagnosticTag.Deprecated:
205
- return monaco_editor_core_1.MarkerTag.Deprecated;
201
+ case 1:
202
+ return 1;
203
+ case 2:
204
+ return 2;
206
205
  }
207
206
  }
208
207
  exports.asMarkerTag = asMarkerTag;
@@ -216,16 +215,16 @@ function asRelatedInformation(relatedInformation) {
216
215
  exports.asRelatedInformation = asRelatedInformation;
217
216
  function asMarkerSeverity(severity) {
218
217
  switch (severity) {
219
- case protocol.DiagnosticSeverity.Error:
220
- return monaco_editor_core_1.MarkerSeverity.Error;
221
- case protocol.DiagnosticSeverity.Warning:
222
- return monaco_editor_core_1.MarkerSeverity.Warning;
223
- case protocol.DiagnosticSeverity.Information:
224
- return monaco_editor_core_1.MarkerSeverity.Info;
225
- case protocol.DiagnosticSeverity.Hint:
226
- return monaco_editor_core_1.MarkerSeverity.Hint;
218
+ case 1:
219
+ return 8;
220
+ case 2:
221
+ return 4;
222
+ case 3:
223
+ return 2;
224
+ case 4:
225
+ return 1;
227
226
  default:
228
- return monaco_editor_core_1.MarkerSeverity.Info;
227
+ return 2;
229
228
  }
230
229
  }
231
230
  exports.asMarkerSeverity = asMarkerSeverity;
@@ -247,7 +246,7 @@ function asWorkspaceEdit(workspaceEdit) {
247
246
  }
248
247
  if (workspaceEdit.documentChanges) {
249
248
  for (const documentChange of workspaceEdit.documentChanges) {
250
- if (protocol.TextDocumentEdit.is(documentChange)) {
249
+ if ('edits' in documentChange) {
251
250
  for (const edit of documentChange.edits) {
252
251
  result.edits.push({
253
252
  resource: asUri(documentChange.textDocument.uri),
@@ -256,7 +255,7 @@ function asWorkspaceEdit(workspaceEdit) {
256
255
  });
257
256
  }
258
257
  }
259
- else if (protocol.CreateFile.is(documentChange)) {
258
+ else if (documentChange.kind === 'create') {
260
259
  result.edits.push({
261
260
  newResource: asUri(documentChange.uri),
262
261
  options: {
@@ -265,7 +264,7 @@ function asWorkspaceEdit(workspaceEdit) {
265
264
  },
266
265
  });
267
266
  }
268
- else if (protocol.RenameFile.is(documentChange)) {
267
+ else if (documentChange.kind === 'rename') {
269
268
  result.edits.push({
270
269
  oldResource: asUri(documentChange.oldUri),
271
270
  newResource: asUri(documentChange.newUri),
@@ -275,7 +274,7 @@ function asWorkspaceEdit(workspaceEdit) {
275
274
  },
276
275
  });
277
276
  }
278
- else if (protocol.DeleteFile.is(documentChange)) {
277
+ else if (documentChange.kind === 'delete') {
279
278
  result.edits.push({
280
279
  oldResource: asUri(documentChange.uri),
281
280
  options: {
@@ -305,67 +304,67 @@ function asDocumentSymbol(symbol) {
305
304
  exports.asDocumentSymbol = asDocumentSymbol;
306
305
  function asSymbolTag(tag) {
307
306
  switch (tag) {
308
- case protocol.SymbolTag.Deprecated:
309
- return monaco_editor_core_1.languages.SymbolTag.Deprecated;
307
+ case 1:
308
+ return 1;
310
309
  }
311
310
  }
312
311
  exports.asSymbolTag = asSymbolTag;
313
312
  function asSymbolKind(kind) {
314
313
  switch (kind) {
315
- case protocol.SymbolKind.File:
316
- return monaco_editor_core_1.languages.SymbolKind.File;
317
- case protocol.SymbolKind.Module:
318
- return monaco_editor_core_1.languages.SymbolKind.Module;
319
- case protocol.SymbolKind.Namespace:
320
- return monaco_editor_core_1.languages.SymbolKind.Namespace;
321
- case protocol.SymbolKind.Package:
322
- return monaco_editor_core_1.languages.SymbolKind.Package;
323
- case protocol.SymbolKind.Class:
324
- return monaco_editor_core_1.languages.SymbolKind.Class;
325
- case protocol.SymbolKind.Method:
326
- return monaco_editor_core_1.languages.SymbolKind.Method;
327
- case protocol.SymbolKind.Property:
328
- return monaco_editor_core_1.languages.SymbolKind.Property;
329
- case protocol.SymbolKind.Field:
330
- return monaco_editor_core_1.languages.SymbolKind.Field;
331
- case protocol.SymbolKind.Constructor:
332
- return monaco_editor_core_1.languages.SymbolKind.Constructor;
333
- case protocol.SymbolKind.Enum:
334
- return monaco_editor_core_1.languages.SymbolKind.Enum;
335
- case protocol.SymbolKind.Interface:
336
- return monaco_editor_core_1.languages.SymbolKind.Interface;
337
- case protocol.SymbolKind.Function:
338
- return monaco_editor_core_1.languages.SymbolKind.Function;
339
- case protocol.SymbolKind.Variable:
340
- return monaco_editor_core_1.languages.SymbolKind.Variable;
341
- case protocol.SymbolKind.Constant:
342
- return monaco_editor_core_1.languages.SymbolKind.Constant;
343
- case protocol.SymbolKind.String:
344
- return monaco_editor_core_1.languages.SymbolKind.String;
345
- case protocol.SymbolKind.Number:
346
- return monaco_editor_core_1.languages.SymbolKind.Number;
347
- case protocol.SymbolKind.Boolean:
348
- return monaco_editor_core_1.languages.SymbolKind.Boolean;
349
- case protocol.SymbolKind.Array:
350
- return monaco_editor_core_1.languages.SymbolKind.Array;
351
- case protocol.SymbolKind.Object:
352
- return monaco_editor_core_1.languages.SymbolKind.Object;
353
- case protocol.SymbolKind.Key:
354
- return monaco_editor_core_1.languages.SymbolKind.Key;
355
- case protocol.SymbolKind.Null:
356
- return monaco_editor_core_1.languages.SymbolKind.Null;
357
- case protocol.SymbolKind.EnumMember:
358
- return monaco_editor_core_1.languages.SymbolKind.EnumMember;
359
- case protocol.SymbolKind.Struct:
360
- return monaco_editor_core_1.languages.SymbolKind.Struct;
361
- case protocol.SymbolKind.Event:
362
- return monaco_editor_core_1.languages.SymbolKind.Event;
363
- case protocol.SymbolKind.Operator:
364
- return monaco_editor_core_1.languages.SymbolKind.Operator;
365
- case protocol.SymbolKind.TypeParameter:
366
- return monaco_editor_core_1.languages.SymbolKind.TypeParameter;
314
+ case 1:
315
+ return 0;
316
+ case 2:
317
+ return 1;
318
+ case 3:
319
+ return 2;
320
+ case 4:
321
+ return 3;
322
+ case 5:
323
+ return 4;
324
+ case 6:
325
+ return 5;
326
+ case 7:
327
+ return 6;
328
+ case 8:
329
+ return 7;
330
+ case 9:
331
+ return 8;
332
+ case 10:
333
+ return 9;
334
+ case 11:
335
+ return 10;
336
+ case 12:
337
+ return 11;
338
+ case 13:
339
+ return 12;
340
+ case 14:
341
+ return 13;
342
+ case 15:
343
+ return 14;
344
+ case 16:
345
+ return 15;
346
+ case 17:
347
+ return 16;
348
+ case 18:
349
+ return 17;
350
+ case 19:
351
+ return 18;
352
+ case 20:
353
+ return 19;
354
+ case 21:
355
+ return 20;
356
+ case 22:
357
+ return 21;
358
+ case 23:
359
+ return 22;
360
+ case 24:
361
+ return 23;
362
+ case 25:
363
+ return 24;
364
+ case 26:
365
+ return 25;
367
366
  default:
368
- return monaco_editor_core_1.languages.SymbolKind.File;
367
+ return 0;
369
368
  }
370
369
  }
371
370
  exports.asSymbolKind = asSymbolKind;
@@ -378,14 +377,14 @@ function asDocumentHighlight(highlight) {
378
377
  exports.asDocumentHighlight = asDocumentHighlight;
379
378
  function asDocumentHighlightKind(kind) {
380
379
  switch (kind) {
381
- case protocol.DocumentHighlightKind.Text:
382
- return monaco_editor_core_1.languages.DocumentHighlightKind.Text;
383
- case protocol.DocumentHighlightKind.Read:
384
- return monaco_editor_core_1.languages.DocumentHighlightKind.Read;
385
- case protocol.DocumentHighlightKind.Write:
386
- return monaco_editor_core_1.languages.DocumentHighlightKind.Write;
380
+ case 1:
381
+ return 0;
382
+ case 2:
383
+ return 1;
384
+ case 3:
385
+ return 2;
387
386
  default:
388
- return monaco_editor_core_1.languages.DocumentHighlightKind.Text;
387
+ return 0;
389
388
  }
390
389
  }
391
390
  exports.asDocumentHighlightKind = asDocumentHighlightKind;
@@ -464,10 +463,10 @@ function asInlayHint(item) {
464
463
  exports.asInlayHint = asInlayHint;
465
464
  function asInlayHintKind(kind) {
466
465
  switch (kind) {
467
- case protocol.InlayHintKind.Parameter:
468
- return monaco_editor_core_1.languages.InlayHintKind.Parameter;
469
- case protocol.InlayHintKind.Type:
470
- return monaco_editor_core_1.languages.InlayHintKind.Type;
466
+ case 2:
467
+ return 2;
468
+ case 1:
469
+ return 1;
471
470
  }
472
471
  }
473
472
  exports.asInlayHintKind = asInlayHintKind;
@@ -490,7 +489,10 @@ function asInlayHintLabelPart(part) {
490
489
  }
491
490
  exports.asInlayHintLabelPart = asInlayHintLabelPart;
492
491
  function asPosition(position) {
493
- return new monaco_editor_core_1.Position(position.line + 1, position.character + 1);
492
+ return {
493
+ lineNumber: position.line + 1,
494
+ column: position.character + 1,
495
+ };
494
496
  }
495
497
  exports.asPosition = asPosition;
496
498
  //# sourceMappingURL=protocol2monaco.js.map
@@ -15,9 +15,9 @@ async function createLanguageFeaturesProvider(worker, getSyncUris) {
15
15
  const languageService = await worker.getProxy();
16
16
  return {
17
17
  triggerCharacters: await languageService.triggerCharacters(),
18
- autoFormatTriggerCharacters: await languageService.triggerCharacters(),
19
- signatureHelpTriggerCharacters: await languageService.triggerCharacters(),
20
- signatureHelpRetriggerCharacters: await languageService.triggerCharacters(),
18
+ autoFormatTriggerCharacters: await languageService.autoFormatTriggerCharacters(),
19
+ signatureHelpTriggerCharacters: await languageService.signatureHelpTriggerCharacters(),
20
+ signatureHelpRetriggerCharacters: await languageService.signatureHelpRetriggerCharacters(),
21
21
  getLegend() {
22
22
  return language_service_1.standardSemanticTokensLegend;
23
23
  },
package/out/worker.d.ts CHANGED
@@ -3,29 +3,31 @@ import type * as monaco from 'monaco-editor-core';
3
3
  import type * as ts from 'typescript/lib/tsserverlibrary';
4
4
  export declare function createLanguageService(options: {
5
5
  workerContext: monaco.worker.IWorkerContext<any>;
6
- dtsHost?: ReturnType<typeof createDtsHost>;
6
+ dtsHost?: DtsHost;
7
7
  config: Config;
8
8
  typescript?: {
9
9
  module: typeof import('typescript/lib/tsserverlibrary');
10
10
  compilerOptions: ts.CompilerOptions;
11
11
  };
12
12
  }): {};
13
- export declare function createDtsHost(cdn: string, versions?: Record<string, string>, onFetch?: (fileName: string, text: string) => void): CdnDtsHost;
14
- declare class CdnDtsHost {
15
- cdn: string;
16
- versions: Record<string, string>;
17
- onFetch?: ((fileName: string, text: string) => void) | undefined;
18
- files: Map<string, string | Promise<string | undefined> | undefined>;
13
+ export declare function createBaseDtsHost(cdn: string, versions?: Record<string, string>, flat?: (pkg: string, version: string | undefined) => Promise<string[]>, onFetch?: (fileName: string, text: string) => void): CdnDtsHost;
14
+ export declare function createJsDelivrDtsHost(versions?: Record<string, string>, onFetch?: (fileName: string, text: string) => void): CdnDtsHost;
15
+ export interface DtsHost {
16
+ readFile(fileName: string): Thenable<string | undefined>;
17
+ getVersion(): Thenable<number>;
18
+ }
19
+ declare class CdnDtsHost implements DtsHost {
20
+ private cdn;
21
+ private versions;
22
+ private flat?;
23
+ private onFetch?;
24
+ files: Map<string, Promise<string | undefined>>;
25
+ flatResult: Map<string, Promise<string[]>>;
19
26
  lastUpdateFilesSize: number;
20
- constructor(cdn: string, versions?: Record<string, string>, onFetch?: ((fileName: string, text: string) => void) | undefined);
27
+ constructor(cdn: string, versions?: Record<string, string>, flat?: ((pkg: string, version: string | undefined) => Promise<string[]>) | undefined, onFetch?: ((fileName: string, text: string) => void) | undefined);
21
28
  getVersion(): Promise<number>;
22
- readFile(fileName: string): string | Promise<string | undefined> | undefined;
29
+ readFile(fileName: string): Promise<string | undefined>;
23
30
  fetchFile(fileName: string): Promise<string | undefined>;
24
31
  resolveRequestFileName(fileName: string): string;
25
- /**
26
- * save / load with json
27
- */
28
- toJson(): Promise<Record<string, string | null>>;
29
- fromJson(json: Record<string, string | null>): void;
30
32
  }
31
33
  export {};
package/out/worker.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDtsHost = exports.createLanguageService = void 0;
3
+ exports.createJsDelivrDtsHost = exports.createBaseDtsHost = exports.createLanguageService = void 0;
4
4
  const language_service_1 = require("@volar/language-service");
5
5
  const vscode_uri_1 = require("vscode-uri");
6
6
  function createLanguageService(options) {
@@ -15,6 +15,8 @@ function createLanguageService(options) {
15
15
  rootUri: vscode_uri_1.URI.file('/'),
16
16
  }, config, host);
17
17
  let dtsVersion = 0;
18
+ let runningApis = 0;
19
+ const toClear = new Set();
18
20
  class InnocentRabbit {
19
21
  }
20
22
  ;
@@ -29,22 +31,35 @@ function createLanguageService(options) {
29
31
  if (!options.dtsHost) {
30
32
  return languageService[api](...args);
31
33
  }
32
- let oldVersion = await options.dtsHost.getVersion();
33
- let result = await languageService[api](...args);
34
- let newVersion = await options.dtsHost.getVersion();
35
- while (newVersion !== oldVersion) {
36
- oldVersion = newVersion;
37
- if (newVersion !== dtsVersion) {
38
- dtsVersion = newVersion;
34
+ let result;
35
+ try {
36
+ runningApis++;
37
+ let oldVersion = await options.dtsHost.getVersion();
38
+ result = await languageService[api](...args);
39
+ let newVersion = await options.dtsHost.getVersion();
40
+ while (newVersion !== oldVersion) {
41
+ oldVersion = newVersion;
42
+ if (newVersion !== dtsVersion) {
43
+ dtsVersion = newVersion;
44
+ toClear.add(languageService);
45
+ languageService = (0, language_service_1.createLanguageService)({ typescript: ts }, {
46
+ rootUri: vscode_uri_1.URI.file('/'),
47
+ uriToFileName: (uri) => vscode_uri_1.URI.parse(uri).fsPath.replace(/\\/g, '/'),
48
+ fileNameToUri: (fileName) => vscode_uri_1.URI.file(fileName).toString(),
49
+ }, config, host);
50
+ }
51
+ result = await languageService[api](...args);
52
+ newVersion = await options.dtsHost.getVersion();
53
+ }
54
+ }
55
+ finally {
56
+ runningApis--;
57
+ }
58
+ if (runningApis === 0 && toClear.size > 0) {
59
+ for (const languageService of toClear) {
39
60
  languageService.dispose();
40
- languageService = (0, language_service_1.createLanguageService)({ typescript: ts }, {
41
- rootUri: vscode_uri_1.URI.file('/'),
42
- uriToFileName: (uri) => vscode_uri_1.URI.parse(uri).fsPath.replace(/\\/g, '/'),
43
- fileNameToUri: (fileName) => vscode_uri_1.URI.file(fileName).toString(),
44
- }, config, host);
45
61
  }
46
- result = await languageService[api](...args);
47
- newVersion = await options.dtsHost.getVersion();
62
+ toClear.clear();
48
63
  }
49
64
  return result;
50
65
  };
@@ -121,7 +136,7 @@ function createLanguageService(options) {
121
136
  },
122
137
  getDefaultLibFileName(options) {
123
138
  if (ts) {
124
- return `/node_modules/typescript@${ts.version}/lib/${ts.getDefaultLibFileName(options)}`;
139
+ return `/node_modules/typescript/lib/${ts.getDefaultLibFileName(options)}`;
125
140
  }
126
141
  return '';
127
142
  },
@@ -155,48 +170,109 @@ function createLanguageService(options) {
155
170
  }
156
171
  }
157
172
  exports.createLanguageService = createLanguageService;
158
- function createDtsHost(cdn, versions = {}, onFetch) {
159
- return new CdnDtsHost(cdn, versions, onFetch);
173
+ function createBaseDtsHost(cdn, versions = {}, flat, onFetch) {
174
+ return new CdnDtsHost(cdn, versions, flat, onFetch);
160
175
  }
161
- exports.createDtsHost = createDtsHost;
176
+ exports.createBaseDtsHost = createBaseDtsHost;
177
+ function createJsDelivrDtsHost(versions = {}, onFetch) {
178
+ return new CdnDtsHost('https://cdn.jsdelivr.net/npm/', versions, async (pkg, version) => {
179
+ if (!version) {
180
+ const data = await fetchJson(`https://data.jsdelivr.com/v1/package/resolve/npm/${pkg}@latest`);
181
+ if (data?.version) {
182
+ version = data.version;
183
+ }
184
+ }
185
+ if (!version) {
186
+ return [];
187
+ }
188
+ const flat = await fetchJson(`https://data.jsdelivr.com/v1/package/npm/${pkg}@${version}/flat`);
189
+ if (!flat) {
190
+ return [];
191
+ }
192
+ return flat.files.map(file => file.name);
193
+ }, onFetch);
194
+ }
195
+ exports.createJsDelivrDtsHost = createJsDelivrDtsHost;
162
196
  class CdnDtsHost {
163
- constructor(cdn, versions = {}, onFetch) {
197
+ constructor(cdn, versions = {}, flat, onFetch) {
164
198
  this.cdn = cdn;
165
199
  this.versions = versions;
200
+ this.flat = flat;
166
201
  this.onFetch = onFetch;
167
202
  this.files = new Map();
203
+ this.flatResult = new Map();
168
204
  this.lastUpdateFilesSize = 0;
169
205
  }
170
206
  async getVersion() {
171
207
  while (this.files.size !== this.lastUpdateFilesSize) {
172
- this.lastUpdateFilesSize = this.files.size;
208
+ const newFileSize = this.files.size;
173
209
  await Promise.all(this.files.values());
210
+ if (newFileSize > this.lastUpdateFilesSize) {
211
+ this.lastUpdateFilesSize = newFileSize;
212
+ }
174
213
  }
175
214
  return this.files.size;
176
215
  }
177
- readFile(fileName) {
216
+ async readFile(fileName) {
178
217
  if (fileName.startsWith('/node_modules/')
179
218
  // ignore .js because it's no help for intellisense
180
219
  && (fileName.endsWith('.d.ts') || fileName.endsWith('/package.json'))) {
181
220
  if (!this.files.has(fileName)) {
182
- this.files.set(fileName, undefined);
183
221
  this.files.set(fileName, this.fetchFile(fileName));
184
222
  }
185
- return this.files.get(fileName);
223
+ return await this.files.get(fileName);
186
224
  }
187
225
  return undefined;
188
226
  }
189
227
  async fetchFile(fileName) {
228
+ if (this.flat) {
229
+ let pkgName = fileName.split('/')[2];
230
+ if (pkgName.startsWith('@')) {
231
+ pkgName += '/' + fileName.split('/')[3];
232
+ }
233
+ if (pkgName.endsWith('.d.ts') || pkgName.endsWith('/node_modules')) {
234
+ return undefined;
235
+ }
236
+ // hard code for known invalid package
237
+ if (pkgName.startsWith('@typescript/') || pkgName.startsWith('@types/typescript__')) {
238
+ return undefined;
239
+ }
240
+ // don't check @types if original package already having types
241
+ if (pkgName.startsWith('@types/')) {
242
+ let originalPkgName = pkgName.slice('@types/'.length);
243
+ if (originalPkgName.indexOf('__') >= 0) {
244
+ originalPkgName = '@' + originalPkgName.replace('__', '/');
245
+ }
246
+ const packageJson = await this.readFile(`/node_modules/${originalPkgName}/package.json`);
247
+ if (packageJson) {
248
+ const packageJsonObj = JSON.parse(packageJson);
249
+ if (packageJsonObj.types || packageJsonObj.typings) {
250
+ return undefined;
251
+ }
252
+ const indexDts = await this.readFile(`/node_modules/${originalPkgName}/index.d.ts`);
253
+ if (indexDts) {
254
+ return undefined;
255
+ }
256
+ }
257
+ }
258
+ if (!this.flatResult.has(pkgName)) {
259
+ this.flatResult.set(pkgName, this.flat(pkgName, this.versions[pkgName]));
260
+ }
261
+ const flat = await this.flatResult.get(pkgName);
262
+ const include = flat.includes(fileName.slice(`/node_modules/${pkgName}`.length));
263
+ if (!include) {
264
+ return undefined;
265
+ }
266
+ }
190
267
  const requestFileName = this.resolveRequestFileName(fileName);
191
268
  const url = this.cdn + requestFileName.slice('/node_modules/'.length);
192
- try {
193
- const text = await (await fetch(url)).text();
194
- this.onFetch?.(fileName, text);
195
- return text;
196
- }
197
- catch {
198
- // ignore
269
+ const text = await fetchText(url);
270
+ if (text) {
271
+ if (this.onFetch) {
272
+ this.onFetch(fileName, text);
273
+ }
199
274
  }
275
+ return text;
200
276
  }
201
277
  resolveRequestFileName(fileName) {
202
278
  for (const [key, version] of Object.entries(this.versions)) {
@@ -207,20 +283,27 @@ class CdnDtsHost {
207
283
  }
208
284
  return fileName;
209
285
  }
210
- /**
211
- * save / load with json
212
- */
213
- async toJson() {
214
- const json = {};
215
- for (const [fileName, file] of this.files) {
216
- json[fileName] = (await file) ?? null;
286
+ }
287
+ async function fetchText(url) {
288
+ try {
289
+ const res = await fetch(url);
290
+ if (res.status === 200) {
291
+ return await res.text();
217
292
  }
218
- return json;
219
293
  }
220
- fromJson(json) {
221
- for (const [fileName, file] of Object.entries(json)) {
222
- this.files.set(fileName, file ?? undefined);
294
+ catch {
295
+ // ignore
296
+ }
297
+ }
298
+ async function fetchJson(url) {
299
+ try {
300
+ const res = await fetch(url);
301
+ if (res.status === 200) {
302
+ return await res.json();
223
303
  }
224
304
  }
305
+ catch {
306
+ // ignore
307
+ }
225
308
  }
226
309
  //# sourceMappingURL=worker.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/monaco",
3
- "version": "1.6.4",
3
+ "version": "1.6.5-patch.2",
4
4
  "main": "out/index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -15,10 +15,11 @@
15
15
  "directory": "packages/monaco"
16
16
  },
17
17
  "dependencies": {
18
- "@volar/language-service": "1.6.4",
19
- "monaco-editor-core": "^0.36.0",
20
- "vscode-languageserver-protocol": "^3.17.3",
18
+ "@volar/language-service": "1.6.5",
21
19
  "vscode-uri": "^3.0.7"
22
20
  },
23
- "gitHead": "653d792a5b1498f5b063f6a81a500a1db27b1ca7"
21
+ "devDependencies": {
22
+ "monaco-editor-core": "latest",
23
+ "vscode-languageserver-protocol": "^3.17.3"
24
+ }
24
25
  }