@volar/typescript 2.3.0 → 2.3.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/lib/common.js +1 -2
- package/lib/node/decorateLanguageService.js +44 -52
- package/lib/node/decorateLanguageServiceHost.js +2 -3
- package/lib/node/decorateProgram.js +9 -10
- package/lib/node/dedupe.js +1 -2
- package/lib/node/proxyCreateProgram.js +1 -2
- package/lib/node/transform.d.ts +2 -0
- package/lib/node/transform.js +50 -30
- package/lib/node/utils.d.ts +0 -1
- package/lib/node/utils.js +1 -6
- package/lib/protocol/createProject.js +1 -2
- package/lib/protocol/createSys.js +1 -2
- package/lib/quickstart/createAsyncLanguageServicePlugin.js +5 -4
- package/lib/quickstart/createLanguageServicePlugin.js +4 -4
- package/lib/quickstart/runTsc.js +2 -2
- package/lib/resolveModuleName.js +1 -2
- package/lib/typescript/core.js +18 -20
- package/lib/typescript/path.js +10 -11
- package/lib/typescript/utilities.js +1 -3
- package/package.json +4 -4
package/lib/common.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveFileLanguageId =
|
|
3
|
+
exports.resolveFileLanguageId = resolveFileLanguageId;
|
|
4
4
|
function resolveFileLanguageId(path) {
|
|
5
5
|
const ext = path.split('.').pop();
|
|
6
6
|
switch (ext) {
|
|
@@ -15,5 +15,4 @@ function resolveFileLanguageId(path) {
|
|
|
15
15
|
case 'json': return 'json';
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
exports.resolveFileLanguageId = resolveFileLanguageId;
|
|
19
18
|
//# sourceMappingURL=common.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decorateLanguageService =
|
|
3
|
+
exports.decorateLanguageService = decorateLanguageService;
|
|
4
4
|
const language_core_1 = require("@volar/language-core");
|
|
5
5
|
const dedupe_1 = require("./dedupe");
|
|
6
6
|
const transform_1 = require("./transform");
|
|
@@ -47,7 +47,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
47
47
|
const edits = getFormattingEditsForDocument(targetScript.id, options);
|
|
48
48
|
return edits
|
|
49
49
|
.map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
|
|
50
|
-
.filter(
|
|
50
|
+
.filter(edit => !!edit);
|
|
51
51
|
}
|
|
52
52
|
else {
|
|
53
53
|
return getFormattingEditsForDocument(fileName, options);
|
|
@@ -66,7 +66,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
66
66
|
const edits = getFormattingEditsForRange(targetScript.id, generateStart, generateEnd, options);
|
|
67
67
|
return edits
|
|
68
68
|
.map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
|
|
69
|
-
.filter(
|
|
69
|
+
.filter(edit => !!edit);
|
|
70
70
|
}
|
|
71
71
|
return [];
|
|
72
72
|
}
|
|
@@ -86,7 +86,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
86
86
|
const edits = getFormattingEditsAfterKeystroke(targetScript.id, generatePosition, key, options);
|
|
87
87
|
return edits
|
|
88
88
|
.map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
|
|
89
|
-
.filter(
|
|
89
|
+
.filter(edit => !!edit);
|
|
90
90
|
}
|
|
91
91
|
return [];
|
|
92
92
|
}
|
|
@@ -112,7 +112,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
112
112
|
return {
|
|
113
113
|
ranges: info.ranges
|
|
114
114
|
.map(span => (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, language_core_1.isLinkedEditingEnabled)?.[1])
|
|
115
|
-
.filter(
|
|
115
|
+
.filter(span => !!span),
|
|
116
116
|
wordPattern: info.wordPattern,
|
|
117
117
|
};
|
|
118
118
|
}
|
|
@@ -165,7 +165,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
165
165
|
const from = (0, transform_1.transformCallHierarchyItem)(language, call.from, language_core_1.isCallHierarchyEnabled);
|
|
166
166
|
const fromSpans = call.fromSpans
|
|
167
167
|
.map(span => (0, transform_1.transformSpan)(language, call.from.file, span, language_core_1.isCallHierarchyEnabled)?.textSpan)
|
|
168
|
-
.filter(
|
|
168
|
+
.filter(span => !!span);
|
|
169
169
|
return {
|
|
170
170
|
from,
|
|
171
171
|
fromSpans,
|
|
@@ -195,7 +195,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
195
195
|
.map(span => serviceScript
|
|
196
196
|
? (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, language_core_1.isCallHierarchyEnabled)?.[1]
|
|
197
197
|
: span)
|
|
198
|
-
.filter(
|
|
198
|
+
.filter(span => !!span);
|
|
199
199
|
return {
|
|
200
200
|
to,
|
|
201
201
|
fromSpans,
|
|
@@ -319,7 +319,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
319
319
|
};
|
|
320
320
|
}
|
|
321
321
|
})
|
|
322
|
-
.filter(
|
|
322
|
+
.filter(span => !!span),
|
|
323
323
|
};
|
|
324
324
|
});
|
|
325
325
|
return resolved;
|
|
@@ -331,15 +331,16 @@ function decorateLanguageService(language, languageService) {
|
|
|
331
331
|
return [];
|
|
332
332
|
}
|
|
333
333
|
if (serviceScript) {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
334
|
+
if (typeof positionOrRange === 'number') {
|
|
335
|
+
const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, positionOrRange, language_core_1.isCodeActionsEnabled);
|
|
336
|
+
if (generatePosition !== undefined) {
|
|
337
|
+
return getApplicableRefactors(targetScript.id, generatePosition, preferences, triggerReason, kind, includeInteractiveActions);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
for (const [generatedStart, generatedEnd] of (0, transform_1.toGeneratedRanges)(language, serviceScript, sourceScript, positionOrRange.pos, positionOrRange.end, language_core_1.isCodeActionsEnabled)) {
|
|
342
|
+
return getApplicableRefactors(targetScript.id, { pos: generatedStart, end: generatedEnd }, preferences, triggerReason, kind, includeInteractiveActions);
|
|
343
|
+
}
|
|
343
344
|
}
|
|
344
345
|
return [];
|
|
345
346
|
}
|
|
@@ -355,17 +356,16 @@ function decorateLanguageService(language, languageService) {
|
|
|
355
356
|
return undefined;
|
|
356
357
|
}
|
|
357
358
|
if (serviceScript) {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
edits = getEditsForRefactor(targetScript.id, formatOptions, por, refactorName, actionName, preferences);
|
|
359
|
+
if (typeof positionOrRange === 'number') {
|
|
360
|
+
const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, positionOrRange, language_core_1.isCodeActionsEnabled);
|
|
361
|
+
if (generatePosition !== undefined) {
|
|
362
|
+
edits = getEditsForRefactor(targetScript.id, formatOptions, generatePosition, refactorName, actionName, preferences);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
for (const [generatedStart, generatedEnd] of (0, transform_1.toGeneratedRanges)(language, serviceScript, sourceScript, positionOrRange.pos, positionOrRange.end, language_core_1.isCodeActionsEnabled)) {
|
|
367
|
+
edits = getEditsForRefactor(targetScript.id, formatOptions, { pos: generatedStart, end: generatedEnd }, refactorName, actionName, preferences);
|
|
368
|
+
}
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
371
|
else {
|
|
@@ -465,16 +465,9 @@ function decorateLanguageService(language, languageService) {
|
|
|
465
465
|
const result = getEncodedSemanticClassifications(targetScript.id, { start, length: end - start }, format);
|
|
466
466
|
const spans = [];
|
|
467
467
|
for (let i = 0; i < result.spans.length; i += 3) {
|
|
468
|
-
for (const sourceStart of (0, transform_1.
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
spans.push(sourceStart[1], sourceEnd[1] - sourceStart[1], result.spans[i + 2]);
|
|
472
|
-
break;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
if (spans.length) {
|
|
476
|
-
break;
|
|
477
|
-
}
|
|
468
|
+
for (const [_, sourceStart, sourceEnd] of (0, transform_1.toSourceRanges)(sourceScript, language, serviceScript, result.spans[i], result.spans[i] + result.spans[i + 1], language_core_1.isSemanticTokensEnabled)) {
|
|
469
|
+
spans.push(sourceStart, sourceEnd - sourceStart, result.spans[i + 2]);
|
|
470
|
+
break;
|
|
478
471
|
}
|
|
479
472
|
}
|
|
480
473
|
result.spans = spans;
|
|
@@ -492,7 +485,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
492
485
|
}
|
|
493
486
|
return getSyntacticDiagnostics(targetScript?.id ?? fileName)
|
|
494
487
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
|
|
495
|
-
.filter(
|
|
488
|
+
.filter(d => !!d)
|
|
496
489
|
.filter(d => !serviceScript || language.scripts.get(d.file.fileName) === sourceScript);
|
|
497
490
|
};
|
|
498
491
|
languageService.getSemanticDiagnostics = filePath => {
|
|
@@ -503,7 +496,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
503
496
|
}
|
|
504
497
|
return getSemanticDiagnostics(targetScript?.id ?? fileName)
|
|
505
498
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
|
|
506
|
-
.filter(
|
|
499
|
+
.filter(d => !!d)
|
|
507
500
|
.filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
|
|
508
501
|
};
|
|
509
502
|
languageService.getSuggestionDiagnostics = filePath => {
|
|
@@ -514,7 +507,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
514
507
|
}
|
|
515
508
|
return getSuggestionDiagnostics(targetScript?.id ?? fileName)
|
|
516
509
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
|
|
517
|
-
.filter(
|
|
510
|
+
.filter(d => !!d)
|
|
518
511
|
.filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
|
|
519
512
|
};
|
|
520
513
|
languageService.getDefinitionAndBoundSpan = (filePath, position) => {
|
|
@@ -526,15 +519,15 @@ function decorateLanguageService(language, languageService) {
|
|
|
526
519
|
});
|
|
527
520
|
const textSpan = unresolved
|
|
528
521
|
.map(s => (0, transform_1.transformSpan)(language, fileName, s.textSpan, language_core_1.isDefinitionEnabled)?.textSpan)
|
|
529
|
-
.filter(
|
|
522
|
+
.filter(s => !!s)[0];
|
|
530
523
|
if (!textSpan) {
|
|
531
524
|
return;
|
|
532
525
|
}
|
|
533
526
|
const definitions = unresolved
|
|
534
527
|
.map(s => s.definitions
|
|
535
528
|
?.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isDefinitionEnabled, s.fileName !== fileName))
|
|
536
|
-
.filter(
|
|
537
|
-
|
|
529
|
+
.filter(s => !!s)
|
|
530
|
+
?? [])
|
|
538
531
|
.flat();
|
|
539
532
|
return {
|
|
540
533
|
textSpan,
|
|
@@ -558,7 +551,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
558
551
|
definition,
|
|
559
552
|
references: symbol.references
|
|
560
553
|
.map(r => (0, transform_1.transformDocumentSpan)(language, r, language_core_1.isReferencesEnabled))
|
|
561
|
-
.filter(
|
|
554
|
+
.filter(r => !!r),
|
|
562
555
|
};
|
|
563
556
|
});
|
|
564
557
|
return resolved;
|
|
@@ -573,7 +566,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
573
566
|
const resolved = unresolved
|
|
574
567
|
.flat()
|
|
575
568
|
.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isDefinitionEnabled, s.fileName !== fileName))
|
|
576
|
-
.filter(
|
|
569
|
+
.filter(s => !!s);
|
|
577
570
|
return (0, dedupe_1.dedupeDocumentSpans)(resolved);
|
|
578
571
|
};
|
|
579
572
|
languageService.getTypeDefinitionAtPosition = (filePath, position) => {
|
|
@@ -586,7 +579,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
586
579
|
const resolved = unresolved
|
|
587
580
|
.flat()
|
|
588
581
|
.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isTypeDefinitionEnabled))
|
|
589
|
-
.filter(
|
|
582
|
+
.filter(s => !!s);
|
|
590
583
|
return (0, dedupe_1.dedupeDocumentSpans)(resolved);
|
|
591
584
|
};
|
|
592
585
|
languageService.getImplementationAtPosition = (filePath, position) => {
|
|
@@ -599,7 +592,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
599
592
|
const resolved = unresolved
|
|
600
593
|
.flat()
|
|
601
594
|
.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isImplementationEnabled))
|
|
602
|
-
.filter(
|
|
595
|
+
.filter(s => !!s);
|
|
603
596
|
return (0, dedupe_1.dedupeDocumentSpans)(resolved);
|
|
604
597
|
};
|
|
605
598
|
languageService.findRenameLocations = (filePath, position, findInStrings, findInComments, preferences) => {
|
|
@@ -612,7 +605,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
612
605
|
const resolved = unresolved
|
|
613
606
|
.flat()
|
|
614
607
|
.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isRenameEnabled))
|
|
615
|
-
.filter(
|
|
608
|
+
.filter(s => !!s);
|
|
616
609
|
return (0, dedupe_1.dedupeDocumentSpans)(resolved);
|
|
617
610
|
};
|
|
618
611
|
languageService.getReferencesAtPosition = (filePath, position) => {
|
|
@@ -625,7 +618,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
625
618
|
const resolved = unresolved
|
|
626
619
|
.flat()
|
|
627
620
|
.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isReferencesEnabled))
|
|
628
|
-
.filter(
|
|
621
|
+
.filter(s => !!s);
|
|
629
622
|
return (0, dedupe_1.dedupeDocumentSpans)(resolved);
|
|
630
623
|
};
|
|
631
624
|
languageService.getCompletionsAtPosition = (filePath, position, options, formattingSettings) => {
|
|
@@ -740,7 +733,7 @@ function decorateLanguageService(language, languageService) {
|
|
|
740
733
|
const unresolved = getFileReferences(fileName);
|
|
741
734
|
const resolved = unresolved
|
|
742
735
|
.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isReferencesEnabled))
|
|
743
|
-
.filter(
|
|
736
|
+
.filter(s => !!s);
|
|
744
737
|
return (0, dedupe_1.dedupeDocumentSpans)(resolved);
|
|
745
738
|
};
|
|
746
739
|
function linkedCodeFeatureWorker(fileName, position, filter, worker, getLinkedCodes) {
|
|
@@ -784,7 +777,6 @@ function decorateLanguageService(language, languageService) {
|
|
|
784
777
|
}
|
|
785
778
|
}
|
|
786
779
|
}
|
|
787
|
-
exports.decorateLanguageService = decorateLanguageService;
|
|
788
780
|
function displayPartsToString(displayParts) {
|
|
789
781
|
if (displayParts) {
|
|
790
782
|
return displayParts.map(displayPart => displayPart.text).join('');
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.decorateLanguageServiceHost = decorateLanguageServiceHost;
|
|
4
|
+
exports.searchExternalFiles = searchExternalFiles;
|
|
4
5
|
const resolveModuleName_1 = require("../resolveModuleName");
|
|
5
6
|
function decorateLanguageServiceHost(ts, language, languageServiceHost) {
|
|
6
7
|
const pluginExtensions = language.plugins
|
|
@@ -119,7 +120,6 @@ function decorateLanguageServiceHost(ts, language, languageServiceHost) {
|
|
|
119
120
|
return script[1];
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
|
-
exports.decorateLanguageServiceHost = decorateLanguageServiceHost;
|
|
123
123
|
function searchExternalFiles(ts, project, exts) {
|
|
124
124
|
if (project.projectKind !== ts.server.ProjectKind.Configured) {
|
|
125
125
|
return [];
|
|
@@ -138,5 +138,4 @@ function searchExternalFiles(ts, project, exts) {
|
|
|
138
138
|
const parsed = ts.parseJsonSourceFileConfigFileContent(config, parseHost, project.getCurrentDirectory());
|
|
139
139
|
return parsed.fileNames;
|
|
140
140
|
}
|
|
141
|
-
exports.searchExternalFiles = searchExternalFiles;
|
|
142
141
|
//# sourceMappingURL=decorateLanguageServiceHost.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decorateProgram =
|
|
3
|
+
exports.decorateProgram = decorateProgram;
|
|
4
4
|
const transform_1 = require("./transform");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
function decorateProgram(language, program) {
|
|
@@ -19,21 +19,21 @@ function decorateProgram(language, program) {
|
|
|
19
19
|
...result,
|
|
20
20
|
diagnostics: result.diagnostics
|
|
21
21
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
22
|
-
.filter(
|
|
22
|
+
.filter(d => !!d),
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
25
|
program.getSyntacticDiagnostics = (sourceFile, cancellationToken) => {
|
|
26
26
|
if (!sourceFile) {
|
|
27
27
|
return getSyntacticDiagnostics(undefined, cancellationToken)
|
|
28
28
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
29
|
-
.filter(
|
|
29
|
+
.filter(d => !!d);
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
32
|
const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
|
|
33
33
|
const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
|
|
34
34
|
return getSyntacticDiagnostics(actualSourceFile, cancellationToken)
|
|
35
35
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
36
|
-
.filter(
|
|
36
|
+
.filter(d => !!d)
|
|
37
37
|
.filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
|
|
38
38
|
}
|
|
39
39
|
};
|
|
@@ -41,35 +41,35 @@ function decorateProgram(language, program) {
|
|
|
41
41
|
if (!sourceFile) {
|
|
42
42
|
return getSemanticDiagnostics(undefined, cancellationToken)
|
|
43
43
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
44
|
-
.filter(
|
|
44
|
+
.filter(d => !!d);
|
|
45
45
|
}
|
|
46
46
|
else {
|
|
47
47
|
const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
|
|
48
48
|
const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
|
|
49
49
|
return getSemanticDiagnostics(actualSourceFile, cancellationToken)
|
|
50
50
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
51
|
-
.filter(
|
|
51
|
+
.filter(d => !!d)
|
|
52
52
|
.filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
program.getGlobalDiagnostics = cancellationToken => {
|
|
56
56
|
return getGlobalDiagnostics(cancellationToken)
|
|
57
57
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
58
|
-
.filter(
|
|
58
|
+
.filter(d => !!d);
|
|
59
59
|
};
|
|
60
60
|
// @ts-ignore
|
|
61
61
|
program.getBindAndCheckDiagnostics = (sourceFile, cancellationToken) => {
|
|
62
62
|
if (!sourceFile) {
|
|
63
63
|
return getBindAndCheckDiagnostics(undefined, cancellationToken)
|
|
64
64
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
65
|
-
.filter(
|
|
65
|
+
.filter(d => !!d);
|
|
66
66
|
}
|
|
67
67
|
else {
|
|
68
68
|
const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
|
|
69
69
|
const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
|
|
70
70
|
return getBindAndCheckDiagnostics(actualSourceFile, cancellationToken)
|
|
71
71
|
.map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
|
|
72
|
-
.filter(
|
|
72
|
+
.filter(d => !!d)
|
|
73
73
|
.filter(d => !serviceScript || language.scripts.get(d.file.fileName) === sourceScript);
|
|
74
74
|
}
|
|
75
75
|
};
|
|
@@ -82,5 +82,4 @@ function decorateProgram(language, program) {
|
|
|
82
82
|
return sourceFile;
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
|
-
exports.decorateProgram = decorateProgram;
|
|
86
85
|
//# sourceMappingURL=decorateProgram.js.map
|
package/lib/node/dedupe.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dedupeDocumentSpans =
|
|
3
|
+
exports.dedupeDocumentSpans = dedupeDocumentSpans;
|
|
4
4
|
function dedupeDocumentSpans(items) {
|
|
5
5
|
return dedupe(items, item => [
|
|
6
6
|
item.fileName,
|
|
@@ -8,7 +8,6 @@ function dedupeDocumentSpans(items) {
|
|
|
8
8
|
item.textSpan.length,
|
|
9
9
|
].join(':'));
|
|
10
10
|
}
|
|
11
|
-
exports.dedupeDocumentSpans = dedupeDocumentSpans;
|
|
12
11
|
function dedupe(items, getKey) {
|
|
13
12
|
const map = new Map();
|
|
14
13
|
for (const item of items.reverse()) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.proxyCreateProgram =
|
|
3
|
+
exports.proxyCreateProgram = proxyCreateProgram;
|
|
4
4
|
const language_core_1 = require("@volar/language-core");
|
|
5
5
|
const resolveModuleName_1 = require("../resolveModuleName");
|
|
6
6
|
const decorateProgram_1 = require("./decorateProgram");
|
|
@@ -163,7 +163,6 @@ function proxyCreateProgram(ts, original, getLanguagePlugins) {
|
|
|
163
163
|
},
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
|
-
exports.proxyCreateProgram = proxyCreateProgram;
|
|
167
166
|
function assert(condition, message) {
|
|
168
167
|
if (!condition) {
|
|
169
168
|
console.error(message);
|
package/lib/node/transform.d.ts
CHANGED
|
@@ -13,7 +13,9 @@ export declare function transformSpan(language: Language<string>, fileName: stri
|
|
|
13
13
|
export declare function transformTextChange(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, textChange: ts.TextChange, filter: (data: CodeInformation) => boolean): [string, ts.TextChange] | undefined;
|
|
14
14
|
export declare function transformTextSpan(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, textSpan: ts.TextSpan, filter: (data: CodeInformation) => boolean): [string, ts.TextSpan] | undefined;
|
|
15
15
|
export declare function toSourceOffset(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, position: number, filter: (data: CodeInformation) => boolean): [fileName: string, offset: number] | undefined;
|
|
16
|
+
export declare function toSourceRanges(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, start: number, end: number, filter: (data: CodeInformation) => boolean): Generator<[fileName: string, start: number, end: number]>;
|
|
16
17
|
export declare function toSourceOffsets(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, position: number, filter: (data: CodeInformation) => boolean): Generator<[fileName: string, offset: number]>;
|
|
18
|
+
export declare function toGeneratedRanges(language: Language, serviceScript: TypeScriptServiceScript, sourceScript: SourceScript<string>, start: number, end: number, filter: (data: CodeInformation) => boolean): Generator<readonly [number, number], void, unknown>;
|
|
17
19
|
export declare function toGeneratedOffset(language: Language, serviceScript: TypeScriptServiceScript, sourceScript: SourceScript<string>, position: number, filter: (data: CodeInformation) => boolean): number | undefined;
|
|
18
20
|
export declare function toGeneratedOffsets(language: Language, serviceScript: TypeScriptServiceScript, sourceScript: SourceScript<string>, position: number, filter: (data: CodeInformation) => boolean): Generator<readonly [number, import("@volar/language-core").Mapping<CodeInformation>], void, unknown>;
|
|
19
21
|
export declare function getMappingOffset(language: Language, serviceScript: TypeScriptServiceScript): number;
|
package/lib/node/transform.js
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.transformCallHierarchyItem = transformCallHierarchyItem;
|
|
4
|
+
exports.transformDiagnostic = transformDiagnostic;
|
|
5
|
+
exports.fillSourceFileText = fillSourceFileText;
|
|
6
|
+
exports.transformFileTextChanges = transformFileTextChanges;
|
|
7
|
+
exports.transformDocumentSpan = transformDocumentSpan;
|
|
8
|
+
exports.transformSpan = transformSpan;
|
|
9
|
+
exports.transformTextChange = transformTextChange;
|
|
10
|
+
exports.transformTextSpan = transformTextSpan;
|
|
11
|
+
exports.toSourceOffset = toSourceOffset;
|
|
12
|
+
exports.toSourceRanges = toSourceRanges;
|
|
13
|
+
exports.toSourceOffsets = toSourceOffsets;
|
|
14
|
+
exports.toGeneratedRanges = toGeneratedRanges;
|
|
15
|
+
exports.toGeneratedOffset = toGeneratedOffset;
|
|
16
|
+
exports.toGeneratedOffsets = toGeneratedOffsets;
|
|
17
|
+
exports.getMappingOffset = getMappingOffset;
|
|
4
18
|
const language_core_1 = require("@volar/language-core");
|
|
5
19
|
const utils_1 = require("./utils");
|
|
6
20
|
const transformedDiagnostics = new WeakMap();
|
|
@@ -15,7 +29,6 @@ function transformCallHierarchyItem(language, item, filter) {
|
|
|
15
29
|
selectionSpan: selectionSpan?.textSpan ?? { start: 0, length: 0 },
|
|
16
30
|
};
|
|
17
31
|
}
|
|
18
|
-
exports.transformCallHierarchyItem = transformCallHierarchyItem;
|
|
19
32
|
function transformDiagnostic(language, diagnostic, program, isTsc) {
|
|
20
33
|
if (!transformedDiagnostics.has(diagnostic)) {
|
|
21
34
|
transformedDiagnostics.set(diagnostic, undefined);
|
|
@@ -23,7 +36,7 @@ function transformDiagnostic(language, diagnostic, program, isTsc) {
|
|
|
23
36
|
if (relatedInformation) {
|
|
24
37
|
diagnostic.relatedInformation = relatedInformation
|
|
25
38
|
.map(d => transformDiagnostic(language, d, program, isTsc))
|
|
26
|
-
.filter(
|
|
39
|
+
.filter(d => !!d);
|
|
27
40
|
}
|
|
28
41
|
if (diagnostic.file !== undefined
|
|
29
42
|
&& diagnostic.start !== undefined
|
|
@@ -61,7 +74,6 @@ function transformDiagnostic(language, diagnostic, program, isTsc) {
|
|
|
61
74
|
}
|
|
62
75
|
return transformedDiagnostics.get(diagnostic);
|
|
63
76
|
}
|
|
64
|
-
exports.transformDiagnostic = transformDiagnostic;
|
|
65
77
|
// fix https://github.com/vuejs/language-tools/issues/4099 without `incremental`
|
|
66
78
|
function fillSourceFileText(language, sourceFile) {
|
|
67
79
|
if (transformedSourceFile.has(sourceFile)) {
|
|
@@ -75,7 +87,6 @@ function fillSourceFileText(language, sourceFile) {
|
|
|
75
87
|
+ sourceFile.text.substring(sourceScript.snapshot.getLength());
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
|
-
exports.fillSourceFileText = fillSourceFileText;
|
|
79
90
|
function transformFileTextChanges(language, changes, filter) {
|
|
80
91
|
const changesPerFile = {};
|
|
81
92
|
const newFiles = new Set();
|
|
@@ -109,7 +120,6 @@ function transformFileTextChanges(language, changes, filter) {
|
|
|
109
120
|
}
|
|
110
121
|
return result;
|
|
111
122
|
}
|
|
112
|
-
exports.transformFileTextChanges = transformFileTextChanges;
|
|
113
123
|
function transformDocumentSpan(language, documentSpan, filter, shouldFallback) {
|
|
114
124
|
let textSpan = transformSpan(language, documentSpan.fileName, documentSpan.textSpan, filter);
|
|
115
125
|
if (!textSpan && shouldFallback) {
|
|
@@ -134,7 +144,6 @@ function transformDocumentSpan(language, documentSpan, filter, shouldFallback) {
|
|
|
134
144
|
originalContextSpan: originalContextSpan?.textSpan,
|
|
135
145
|
};
|
|
136
146
|
}
|
|
137
|
-
exports.transformDocumentSpan = transformDocumentSpan;
|
|
138
147
|
function transformSpan(language, fileName, textSpan, filter) {
|
|
139
148
|
if (!fileName || !textSpan) {
|
|
140
149
|
return;
|
|
@@ -156,7 +165,6 @@ function transformSpan(language, fileName, textSpan, filter) {
|
|
|
156
165
|
};
|
|
157
166
|
}
|
|
158
167
|
}
|
|
159
|
-
exports.transformSpan = transformSpan;
|
|
160
168
|
function transformTextChange(sourceScript, language, serviceScript, textChange, filter) {
|
|
161
169
|
const [sourceSpanFileName, sourceSpan] = transformTextSpan(sourceScript, language, serviceScript, textChange.span, filter) ?? [];
|
|
162
170
|
if (sourceSpan && sourceSpanFileName) {
|
|
@@ -167,64 +175,77 @@ function transformTextChange(sourceScript, language, serviceScript, textChange,
|
|
|
167
175
|
}
|
|
168
176
|
return undefined;
|
|
169
177
|
}
|
|
170
|
-
exports.transformTextChange = transformTextChange;
|
|
171
178
|
function transformTextSpan(sourceScript, language, serviceScript, textSpan, filter) {
|
|
172
179
|
const start = textSpan.start;
|
|
173
180
|
const end = textSpan.start + textSpan.length;
|
|
174
|
-
for (const sourceStart of
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
start: sourceStart[1],
|
|
180
|
-
length: sourceEnd[1] - sourceStart[1],
|
|
181
|
-
}];
|
|
182
|
-
}
|
|
183
|
-
}
|
|
181
|
+
for (const [fileName, sourceStart, sourceEnd] of toSourceRanges(sourceScript, language, serviceScript, start, end, filter)) {
|
|
182
|
+
return [fileName, {
|
|
183
|
+
start: sourceStart,
|
|
184
|
+
length: sourceEnd - sourceStart,
|
|
185
|
+
}];
|
|
184
186
|
}
|
|
185
187
|
}
|
|
186
|
-
exports.transformTextSpan = transformTextSpan;
|
|
187
188
|
function toSourceOffset(sourceScript, language, serviceScript, position, filter) {
|
|
188
189
|
for (const source of toSourceOffsets(sourceScript, language, serviceScript, position, filter)) {
|
|
189
190
|
return source;
|
|
190
191
|
}
|
|
191
192
|
}
|
|
192
|
-
|
|
193
|
+
function* toSourceRanges(sourceScript, language, serviceScript, start, end, filter) {
|
|
194
|
+
if (sourceScript) {
|
|
195
|
+
const map = language.maps.get(serviceScript.code, sourceScript);
|
|
196
|
+
for (const [sourceStart, sourceEnd] of map.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), true, filter)) {
|
|
197
|
+
yield [sourceScript.id, sourceStart, sourceEnd];
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
for (const [sourceScript, map] of language.maps.forEach(serviceScript.code)) {
|
|
202
|
+
for (const [sourceStart, sourceEnd] of map.toSourceRange(start - getMappingOffset(language, serviceScript), end - getMappingOffset(language, serviceScript), true, filter)) {
|
|
203
|
+
yield [sourceScript.id, sourceStart, sourceEnd];
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
193
208
|
function* toSourceOffsets(sourceScript, language, serviceScript, position, filter) {
|
|
194
209
|
if (sourceScript) {
|
|
195
210
|
const map = language.maps.get(serviceScript.code, sourceScript);
|
|
196
|
-
for (const [sourceOffset, mapping] of map.
|
|
211
|
+
for (const [sourceOffset, mapping] of map.toSourceLocation(position - getMappingOffset(language, serviceScript))) {
|
|
197
212
|
if (filter(mapping.data)) {
|
|
198
213
|
yield [sourceScript.id, sourceOffset];
|
|
199
214
|
}
|
|
200
215
|
}
|
|
201
216
|
}
|
|
202
217
|
else {
|
|
203
|
-
for (const [
|
|
204
|
-
for (const [sourceOffset, mapping] of map.
|
|
218
|
+
for (const [sourceScript, map] of language.maps.forEach(serviceScript.code)) {
|
|
219
|
+
for (const [sourceOffset, mapping] of map.toSourceLocation(position - getMappingOffset(language, serviceScript))) {
|
|
205
220
|
if (filter(mapping.data)) {
|
|
206
|
-
yield [
|
|
221
|
+
yield [sourceScript.id, sourceOffset];
|
|
207
222
|
}
|
|
208
223
|
}
|
|
209
224
|
}
|
|
210
225
|
}
|
|
211
226
|
}
|
|
212
|
-
|
|
227
|
+
function* toGeneratedRanges(language, serviceScript, sourceScript, start, end, filter) {
|
|
228
|
+
const map = language.maps.get(serviceScript.code, sourceScript);
|
|
229
|
+
for (const [generateStart, generateEnd] of map.toGeneratedRange(start, end, true, filter)) {
|
|
230
|
+
yield [
|
|
231
|
+
generateStart + getMappingOffset(language, serviceScript),
|
|
232
|
+
generateEnd + getMappingOffset(language, serviceScript),
|
|
233
|
+
];
|
|
234
|
+
}
|
|
235
|
+
}
|
|
213
236
|
function toGeneratedOffset(language, serviceScript, sourceScript, position, filter) {
|
|
214
237
|
for (const [generateOffset] of toGeneratedOffsets(language, serviceScript, sourceScript, position, filter)) {
|
|
215
238
|
return generateOffset;
|
|
216
239
|
}
|
|
217
240
|
}
|
|
218
|
-
exports.toGeneratedOffset = toGeneratedOffset;
|
|
219
241
|
function* toGeneratedOffsets(language, serviceScript, sourceScript, position, filter) {
|
|
220
242
|
const map = language.maps.get(serviceScript.code, sourceScript);
|
|
221
|
-
for (const [generateOffset, mapping] of map.
|
|
243
|
+
for (const [generateOffset, mapping] of map.toGeneratedLocation(position)) {
|
|
222
244
|
if (filter(mapping.data)) {
|
|
223
245
|
yield [generateOffset + getMappingOffset(language, serviceScript), mapping];
|
|
224
246
|
}
|
|
225
247
|
}
|
|
226
248
|
}
|
|
227
|
-
exports.toGeneratedOffsets = toGeneratedOffsets;
|
|
228
249
|
function getMappingOffset(language, serviceScript) {
|
|
229
250
|
if (serviceScript.preventLeadingOffset) {
|
|
230
251
|
return 0;
|
|
@@ -232,5 +253,4 @@ function getMappingOffset(language, serviceScript) {
|
|
|
232
253
|
const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);
|
|
233
254
|
return sourceScript.snapshot.getLength();
|
|
234
255
|
}
|
|
235
|
-
exports.getMappingOffset = getMappingOffset;
|
|
236
256
|
//# sourceMappingURL=transform.js.map
|
package/lib/node/utils.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import type { Language, SourceScript, TypeScriptServiceScript } from '@volar/language-core';
|
|
2
|
-
export declare function notEmpty<T>(value: T | null | undefined): value is T;
|
|
3
2
|
export declare function getServiceScript(language: Language<string>, fileName: string): [serviceScript: TypeScriptServiceScript, targetScript: SourceScript<string>, sourceScript: SourceScript<string>] | [serviceScript: undefined, sourceScript: SourceScript<string>, sourceScript: SourceScript<string>] | [serviceScript: undefined, sourceScript: undefined, targetScript: undefined];
|
package/lib/node/utils.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getServiceScript =
|
|
4
|
-
function notEmpty(value) {
|
|
5
|
-
return value !== null && value !== undefined;
|
|
6
|
-
}
|
|
7
|
-
exports.notEmpty = notEmpty;
|
|
3
|
+
exports.getServiceScript = getServiceScript;
|
|
8
4
|
function getServiceScript(language, fileName) {
|
|
9
5
|
const sourceScript = language.scripts.get(fileName);
|
|
10
6
|
if (sourceScript?.targetIds.size) {
|
|
@@ -29,5 +25,4 @@ function getServiceScript(language, fileName) {
|
|
|
29
25
|
}
|
|
30
26
|
return [undefined, undefined, undefined];
|
|
31
27
|
}
|
|
32
|
-
exports.getServiceScript = getServiceScript;
|
|
33
28
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createLanguageServiceHost =
|
|
3
|
+
exports.createLanguageServiceHost = createLanguageServiceHost;
|
|
4
4
|
const language_core_1 = require("@volar/language-core");
|
|
5
5
|
const path = require("path-browserify");
|
|
6
6
|
const resolveModuleName_1 = require("../resolveModuleName");
|
|
@@ -249,7 +249,6 @@ function createLanguageServiceHost(ts, sys, language, asScrpitId, projectHost) {
|
|
|
249
249
|
return '';
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
|
-
exports.createLanguageServiceHost = createLanguageServiceHost;
|
|
253
252
|
function setEquals(a, b) {
|
|
254
253
|
if (a.size !== b.size) {
|
|
255
254
|
return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSys =
|
|
3
|
+
exports.createSys = createSys;
|
|
4
4
|
const path = require("path-browserify");
|
|
5
5
|
const utilities_1 = require("../typescript/utilities");
|
|
6
6
|
const vscode_uri_1 = require("vscode-uri");
|
|
@@ -368,5 +368,4 @@ function createSys(sys, env, workspaceFolder, uriConverter) {
|
|
|
368
368
|
return caseSensitive ? fileName : fileName.toLowerCase();
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
|
-
exports.createSys = createSys;
|
|
372
371
|
//# sourceMappingURL=createSys.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createAsyncLanguageServicePlugin =
|
|
3
|
+
exports.createAsyncLanguageServicePlugin = createAsyncLanguageServicePlugin;
|
|
4
4
|
const language_core_1 = require("@volar/language-core");
|
|
5
5
|
const common_1 = require("../common");
|
|
6
6
|
const decorateLanguageService_1 = require("../node/decorateLanguageService");
|
|
@@ -71,14 +71,16 @@ function createAsyncLanguageServicePlugin(extensions, scriptKind, create) {
|
|
|
71
71
|
(0, decorateLanguageService_1.decorateLanguageService)(language, info.languageService);
|
|
72
72
|
(0, decorateLanguageServiceHost_1.decorateLanguageServiceHost)(ts, language, info.languageServiceHost);
|
|
73
73
|
setup?.(language);
|
|
74
|
-
info.project.markAsDirty
|
|
74
|
+
if ('markAsDirty' in info.project && typeof info.project.markAsDirty === 'function') {
|
|
75
|
+
info.project.markAsDirty();
|
|
76
|
+
}
|
|
75
77
|
initialized = true;
|
|
76
78
|
});
|
|
77
79
|
}
|
|
78
80
|
return info.languageService;
|
|
79
81
|
},
|
|
80
82
|
getExternalFiles(project, updateLevel = 0) {
|
|
81
|
-
if (updateLevel >=
|
|
83
|
+
if (updateLevel >= 1
|
|
82
84
|
|| !createLanguageServicePlugin_1.externalFiles.has(project)) {
|
|
83
85
|
const oldFiles = createLanguageServicePlugin_1.externalFiles.get(project);
|
|
84
86
|
const newFiles = extensions.length ? (0, decorateLanguageServiceHost_1.searchExternalFiles)(ts, project, extensions) : [];
|
|
@@ -93,5 +95,4 @@ function createAsyncLanguageServicePlugin(extensions, scriptKind, create) {
|
|
|
93
95
|
return pluginModule;
|
|
94
96
|
};
|
|
95
97
|
}
|
|
96
|
-
exports.createAsyncLanguageServicePlugin = createAsyncLanguageServicePlugin;
|
|
97
98
|
//# sourceMappingURL=createAsyncLanguageServicePlugin.js.map
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.decoratedLanguageServiceHosts = exports.decoratedLanguageServices = exports.projectExternalFileExtensions = exports.externalFiles = void 0;
|
|
4
|
+
exports.createLanguageServicePlugin = createLanguageServicePlugin;
|
|
5
|
+
exports.arrayItemsEqual = arrayItemsEqual;
|
|
4
6
|
const language_core_1 = require("@volar/language-core");
|
|
5
7
|
const common_1 = require("../common");
|
|
6
8
|
const decorateLanguageService_1 = require("../node/decorateLanguageService");
|
|
@@ -50,7 +52,7 @@ function createLanguageServicePlugin(create) {
|
|
|
50
52
|
return info.languageService;
|
|
51
53
|
},
|
|
52
54
|
getExternalFiles(project, updateLevel = 0) {
|
|
53
|
-
if (updateLevel >=
|
|
55
|
+
if (updateLevel >= 1
|
|
54
56
|
|| !exports.externalFiles.has(project)) {
|
|
55
57
|
const oldFiles = exports.externalFiles.get(project);
|
|
56
58
|
const extensions = exports.projectExternalFileExtensions.get(project);
|
|
@@ -66,7 +68,6 @@ function createLanguageServicePlugin(create) {
|
|
|
66
68
|
return pluginModule;
|
|
67
69
|
};
|
|
68
70
|
}
|
|
69
|
-
exports.createLanguageServicePlugin = createLanguageServicePlugin;
|
|
70
71
|
function arrayItemsEqual(a, b) {
|
|
71
72
|
if (a.length !== b.length) {
|
|
72
73
|
return false;
|
|
@@ -79,5 +80,4 @@ function arrayItemsEqual(a, b) {
|
|
|
79
80
|
}
|
|
80
81
|
return true;
|
|
81
82
|
}
|
|
82
|
-
exports.arrayItemsEqual = arrayItemsEqual;
|
|
83
83
|
//# sourceMappingURL=createLanguageServicePlugin.js.map
|
package/lib/quickstart/runTsc.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getLanguagePlugins = void 0;
|
|
4
|
+
exports.runTsc = runTsc;
|
|
4
5
|
const fs = require("fs");
|
|
5
6
|
let getLanguagePlugins = () => [];
|
|
6
7
|
exports.getLanguagePlugins = getLanguagePlugins;
|
|
@@ -37,7 +38,6 @@ function runTsc(tscPath, extensions, _getLanguagePlugins) {
|
|
|
37
38
|
delete require.cache[tscPath];
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
exports.runTsc = runTsc;
|
|
41
41
|
function replace(text, ...[search, replace]) {
|
|
42
42
|
const before = text;
|
|
43
43
|
text = text.replace(search, replace);
|
package/lib/resolveModuleName.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createResolveModuleName =
|
|
3
|
+
exports.createResolveModuleName = createResolveModuleName;
|
|
4
4
|
function createResolveModuleName(ts, host, languagePlugins, getSourceScript) {
|
|
5
5
|
const toSourceFileInfo = new Map();
|
|
6
6
|
const moduleResolutionHost = {
|
|
@@ -87,5 +87,4 @@ function createResolveModuleName(ts, host, languagePlugins, getSourceScript) {
|
|
|
87
87
|
return false;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
exports.createResolveModuleName = createResolveModuleName;
|
|
91
90
|
//# sourceMappingURL=resolveModuleName.js.map
|
package/lib/typescript/core.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
3
|
+
exports.every = every;
|
|
4
|
+
exports.findIndex = findIndex;
|
|
5
|
+
exports.indexOfAnyCharCode = indexOfAnyCharCode;
|
|
6
|
+
exports.map = map;
|
|
7
|
+
exports.flatten = flatten;
|
|
8
|
+
exports.flatMap = flatMap;
|
|
9
|
+
exports.some = some;
|
|
10
|
+
exports.sort = sort;
|
|
11
|
+
exports.lastOrUndefined = lastOrUndefined;
|
|
12
|
+
exports.last = last;
|
|
13
|
+
exports.equateStringsCaseInsensitive = equateStringsCaseInsensitive;
|
|
14
|
+
exports.equateStringsCaseSensitive = equateStringsCaseSensitive;
|
|
15
|
+
exports.compareStringsCaseSensitive = compareStringsCaseSensitive;
|
|
16
|
+
exports.getStringComparer = getStringComparer;
|
|
17
|
+
exports.endsWith = endsWith;
|
|
18
|
+
exports.stringContains = stringContains;
|
|
19
|
+
exports.createGetCanonicalFileName = createGetCanonicalFileName;
|
|
20
|
+
exports.startsWith = startsWith;
|
|
5
21
|
const emptyArray = [];
|
|
6
22
|
/**
|
|
7
23
|
* Iterates through `array` by index and performs the callback on each element of array until the callback
|
|
@@ -18,7 +34,6 @@ function every(array, callback) {
|
|
|
18
34
|
}
|
|
19
35
|
return true;
|
|
20
36
|
}
|
|
21
|
-
exports.every = every;
|
|
22
37
|
/** Works like Array.prototype.findIndex, returning `-1` if no element satisfying the predicate is found. */
|
|
23
38
|
function findIndex(array, predicate, startIndex) {
|
|
24
39
|
if (array === undefined) {
|
|
@@ -31,7 +46,6 @@ function findIndex(array, predicate, startIndex) {
|
|
|
31
46
|
}
|
|
32
47
|
return -1;
|
|
33
48
|
}
|
|
34
|
-
exports.findIndex = findIndex;
|
|
35
49
|
function contains(array, value, equalityComparer = equateValues) {
|
|
36
50
|
if (array) {
|
|
37
51
|
for (const v of array) {
|
|
@@ -50,7 +64,6 @@ function indexOfAnyCharCode(text, charCodes, start) {
|
|
|
50
64
|
}
|
|
51
65
|
return -1;
|
|
52
66
|
}
|
|
53
|
-
exports.indexOfAnyCharCode = indexOfAnyCharCode;
|
|
54
67
|
function map(array, f) {
|
|
55
68
|
let result;
|
|
56
69
|
if (array) {
|
|
@@ -61,7 +74,6 @@ function map(array, f) {
|
|
|
61
74
|
}
|
|
62
75
|
return result;
|
|
63
76
|
}
|
|
64
|
-
exports.map = map;
|
|
65
77
|
/**
|
|
66
78
|
* Flattens an array containing a mix of array or non-array elements.
|
|
67
79
|
*
|
|
@@ -81,7 +93,6 @@ function flatten(array) {
|
|
|
81
93
|
}
|
|
82
94
|
return result;
|
|
83
95
|
}
|
|
84
|
-
exports.flatten = flatten;
|
|
85
96
|
/**
|
|
86
97
|
* Maps an array. If the mapped value is an array, it is spread into the result.
|
|
87
98
|
*
|
|
@@ -105,7 +116,6 @@ function flatMap(array, mapfn) {
|
|
|
105
116
|
}
|
|
106
117
|
return result || emptyArray;
|
|
107
118
|
}
|
|
108
|
-
exports.flatMap = flatMap;
|
|
109
119
|
function some(array, predicate) {
|
|
110
120
|
if (array) {
|
|
111
121
|
if (predicate) {
|
|
@@ -121,7 +131,6 @@ function some(array, predicate) {
|
|
|
121
131
|
}
|
|
122
132
|
return false;
|
|
123
133
|
}
|
|
124
|
-
exports.some = some;
|
|
125
134
|
// function append<T>(to: T[] | undefined, value: T): T[];
|
|
126
135
|
// function append<T>(to: T[] | undefined, value: T | undefined): T[] | undefined;
|
|
127
136
|
// function append<T>(to: Push<T>, value: T | undefined): void;
|
|
@@ -164,19 +173,16 @@ function addRange(to, from, start, end) {
|
|
|
164
173
|
function sort(array, comparer) {
|
|
165
174
|
return (array.length === 0 ? array : array.slice().sort(comparer));
|
|
166
175
|
}
|
|
167
|
-
exports.sort = sort;
|
|
168
176
|
/**
|
|
169
177
|
* Returns the last element of an array if non-empty, `undefined` otherwise.
|
|
170
178
|
*/
|
|
171
179
|
function lastOrUndefined(array) {
|
|
172
180
|
return array === undefined || array.length === 0 ? undefined : array[array.length - 1];
|
|
173
181
|
}
|
|
174
|
-
exports.lastOrUndefined = lastOrUndefined;
|
|
175
182
|
function last(array) {
|
|
176
183
|
// Debug.assert(array.length !== 0);
|
|
177
184
|
return array[array.length - 1];
|
|
178
185
|
}
|
|
179
|
-
exports.last = last;
|
|
180
186
|
/**
|
|
181
187
|
* Tests whether a value is an array.
|
|
182
188
|
*/
|
|
@@ -247,7 +253,6 @@ function equateStringsCaseInsensitive(a, b) {
|
|
|
247
253
|
&& b !== undefined
|
|
248
254
|
&& a.toUpperCase() === b.toUpperCase();
|
|
249
255
|
}
|
|
250
|
-
exports.equateStringsCaseInsensitive = equateStringsCaseInsensitive;
|
|
251
256
|
/**
|
|
252
257
|
* Compare the equality of two strings using a case-sensitive ordinal comparison.
|
|
253
258
|
*
|
|
@@ -257,7 +262,6 @@ exports.equateStringsCaseInsensitive = equateStringsCaseInsensitive;
|
|
|
257
262
|
function equateStringsCaseSensitive(a, b) {
|
|
258
263
|
return equateValues(a, b);
|
|
259
264
|
}
|
|
260
|
-
exports.equateStringsCaseSensitive = equateStringsCaseSensitive;
|
|
261
265
|
function compareComparableValues(a, b) {
|
|
262
266
|
return a === b ? 0 /* Comparison.EqualTo */ :
|
|
263
267
|
a === undefined ? -1 /* Comparison.LessThan */ :
|
|
@@ -304,26 +308,20 @@ function compareStringsCaseInsensitive(a, b) {
|
|
|
304
308
|
function compareStringsCaseSensitive(a, b) {
|
|
305
309
|
return compareComparableValues(a, b);
|
|
306
310
|
}
|
|
307
|
-
exports.compareStringsCaseSensitive = compareStringsCaseSensitive;
|
|
308
311
|
function getStringComparer(ignoreCase) {
|
|
309
312
|
return ignoreCase ? compareStringsCaseInsensitive : compareStringsCaseSensitive;
|
|
310
313
|
}
|
|
311
|
-
exports.getStringComparer = getStringComparer;
|
|
312
314
|
function endsWith(str, suffix) {
|
|
313
315
|
const expectedPos = str.length - suffix.length;
|
|
314
316
|
return expectedPos >= 0 && str.indexOf(suffix, expectedPos) === expectedPos;
|
|
315
317
|
}
|
|
316
|
-
exports.endsWith = endsWith;
|
|
317
318
|
function stringContains(str, substring) {
|
|
318
319
|
return str.indexOf(substring) !== -1;
|
|
319
320
|
}
|
|
320
|
-
exports.stringContains = stringContains;
|
|
321
321
|
function createGetCanonicalFileName(useCaseSensitiveFileNames) {
|
|
322
322
|
return useCaseSensitiveFileNames ? identity : toFileNameLowerCase;
|
|
323
323
|
}
|
|
324
|
-
exports.createGetCanonicalFileName = createGetCanonicalFileName;
|
|
325
324
|
function startsWith(str, prefix) {
|
|
326
325
|
return str.lastIndexOf(prefix, 0) === 0;
|
|
327
326
|
}
|
|
328
|
-
exports.startsWith = startsWith;
|
|
329
327
|
//# sourceMappingURL=core.js.map
|
package/lib/typescript/path.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.directorySeparator = void 0;
|
|
4
|
+
exports.isRootedDiskPath = isRootedDiskPath;
|
|
5
|
+
exports.hasExtension = hasExtension;
|
|
6
|
+
exports.fileExtensionIsOneOf = fileExtensionIsOneOf;
|
|
7
|
+
exports.getDirectoryPath = getDirectoryPath;
|
|
8
|
+
exports.combinePaths = combinePaths;
|
|
9
|
+
exports.getNormalizedPathComponents = getNormalizedPathComponents;
|
|
10
|
+
exports.normalizePath = normalizePath;
|
|
11
|
+
exports.removeTrailingDirectorySeparator = removeTrailingDirectorySeparator;
|
|
12
|
+
exports.containsPath = containsPath;
|
|
4
13
|
const core_1 = require("./core");
|
|
5
|
-
require("./types");
|
|
6
14
|
/**
|
|
7
15
|
* Internally, we represent paths as strings with '/' as the directory separator.
|
|
8
16
|
* When we make system calls (eg: LanguageServiceHost.getDirectory()),
|
|
@@ -26,11 +34,9 @@ function isAnyDirectorySeparator(charCode) {
|
|
|
26
34
|
function isRootedDiskPath(path) {
|
|
27
35
|
return getEncodedRootLength(path) > 0;
|
|
28
36
|
}
|
|
29
|
-
exports.isRootedDiskPath = isRootedDiskPath;
|
|
30
37
|
function hasExtension(fileName) {
|
|
31
38
|
return (0, core_1.stringContains)(getBaseFileName(fileName), ".");
|
|
32
39
|
}
|
|
33
|
-
exports.hasExtension = hasExtension;
|
|
34
40
|
function fileExtensionIs(path, extension) {
|
|
35
41
|
return path.length > extension.length && (0, core_1.endsWith)(path, extension);
|
|
36
42
|
}
|
|
@@ -42,7 +48,6 @@ function fileExtensionIsOneOf(path, extensions) {
|
|
|
42
48
|
}
|
|
43
49
|
return false;
|
|
44
50
|
}
|
|
45
|
-
exports.fileExtensionIsOneOf = fileExtensionIsOneOf;
|
|
46
51
|
/**
|
|
47
52
|
* Determines whether a path has a trailing separator (`/` or `\\`).
|
|
48
53
|
*/
|
|
@@ -171,7 +176,6 @@ function getDirectoryPath(path) {
|
|
|
171
176
|
path = removeTrailingDirectorySeparator(path);
|
|
172
177
|
return path.slice(0, Math.max(rootLength, path.lastIndexOf(exports.directorySeparator)));
|
|
173
178
|
}
|
|
174
|
-
exports.getDirectoryPath = getDirectoryPath;
|
|
175
179
|
function getBaseFileName(path, extensions, ignoreCase) {
|
|
176
180
|
path = normalizeSlashes(path);
|
|
177
181
|
// if the path provided is itself the root, then it has not file name.
|
|
@@ -357,7 +361,6 @@ function combinePaths(path, ...paths) {
|
|
|
357
361
|
}
|
|
358
362
|
return path;
|
|
359
363
|
}
|
|
360
|
-
exports.combinePaths = combinePaths;
|
|
361
364
|
/**
|
|
362
365
|
* Parse a path into an array containing a root component (at index 0) and zero or more path
|
|
363
366
|
* components (at indices > 0). The result is normalized.
|
|
@@ -371,7 +374,6 @@ exports.combinePaths = combinePaths;
|
|
|
371
374
|
function getNormalizedPathComponents(path, currentDirectory) {
|
|
372
375
|
return reducePathComponents(getPathComponents(path, currentDirectory));
|
|
373
376
|
}
|
|
374
|
-
exports.getNormalizedPathComponents = getNormalizedPathComponents;
|
|
375
377
|
function normalizePath(path) {
|
|
376
378
|
path = normalizeSlashes(path);
|
|
377
379
|
// Most paths don't require normalization
|
|
@@ -390,14 +392,12 @@ function normalizePath(path) {
|
|
|
390
392
|
const normalized = getPathFromPathComponents(reducePathComponents(getPathComponents(path)));
|
|
391
393
|
return normalized && hasTrailingDirectorySeparator(path) ? ensureTrailingDirectorySeparator(normalized) : normalized;
|
|
392
394
|
}
|
|
393
|
-
exports.normalizePath = normalizePath;
|
|
394
395
|
function removeTrailingDirectorySeparator(path) {
|
|
395
396
|
if (hasTrailingDirectorySeparator(path)) {
|
|
396
397
|
return path.substr(0, path.length - 1);
|
|
397
398
|
}
|
|
398
399
|
return path;
|
|
399
400
|
}
|
|
400
|
-
exports.removeTrailingDirectorySeparator = removeTrailingDirectorySeparator;
|
|
401
401
|
function ensureTrailingDirectorySeparator(path) {
|
|
402
402
|
if (!hasTrailingDirectorySeparator(path)) {
|
|
403
403
|
return path + exports.directorySeparator;
|
|
@@ -435,5 +435,4 @@ function containsPath(parent, child, currentDirectory, ignoreCase) {
|
|
|
435
435
|
}
|
|
436
436
|
return true;
|
|
437
437
|
}
|
|
438
|
-
exports.containsPath = containsPath;
|
|
439
438
|
//# sourceMappingURL=path.js.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.matchFiles =
|
|
3
|
+
exports.matchFiles = matchFiles;
|
|
4
4
|
const core_1 = require("./core");
|
|
5
5
|
const path_1 = require("./path");
|
|
6
|
-
require("./types");
|
|
7
6
|
// KLUDGE: Don't assume one 'node_modules' links to another. More likely a single directory inside the node_modules is the symlink.
|
|
8
7
|
// ALso, don't assume that an `@foo` directory is linked. More likely the contents of that are linked.
|
|
9
8
|
// Reserved characters, forces escaping of any non-word (or digit), non-whitespace character.
|
|
@@ -212,7 +211,6 @@ function matchFiles(path, extensions, excludes, includes, useCaseSensitiveFileNa
|
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
|
-
exports.matchFiles = matchFiles;
|
|
216
214
|
/**
|
|
217
215
|
* Computes the unique non-wildcard base paths amongst the provided include patterns.
|
|
218
216
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/typescript",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
"directory": "packages/typescript"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@volar/language-core": "2.3.
|
|
15
|
+
"@volar/language-core": "2.3.2",
|
|
16
16
|
"path-browserify": "^1.0.1",
|
|
17
17
|
"vscode-uri": "^3.0.8"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@types/node": "latest",
|
|
21
21
|
"@types/path-browserify": "latest",
|
|
22
|
-
"@volar/language-service": "2.3.
|
|
22
|
+
"@volar/language-service": "2.3.2"
|
|
23
23
|
},
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "d07e7d7c4176eec4905e7a629ae6f278d1c72b48"
|
|
25
25
|
}
|