|
2 | 2 | import * as ts from 'typescript'; // Imported for types alone
|
3 | 3 | import { LinkedList } from './LinkedList';
|
4 | 4 | import { VueProgram } from './VueProgram';
|
5 |
| -import { |
6 |
| - ResolveModuleName, |
7 |
| - ResolveTypeReferenceDirective, |
8 |
| - makeResolutionFunctions |
9 |
| -} from './resolution'; |
| 5 | +import { ResolveModuleName, ResolveTypeReferenceDirective } from './resolution'; |
10 | 6 |
|
11 | 7 | interface DirectoryWatchDelaySlot {
|
12 | 8 | events: { fileName: string }[];
|
@@ -56,8 +52,21 @@ export class CompilerHost
|
56 | 52 |
|
57 | 53 | private compilationStarted = false;
|
58 | 54 |
|
59 |
| - private readonly resolveModuleName: ResolveModuleName; |
60 |
| - private readonly resolveTypeReferenceDirective: ResolveTypeReferenceDirective; |
| 55 | + public resolveModuleNames: |
| 56 | + | (( |
| 57 | + moduleNames: string[], |
| 58 | + containingFile: string, |
| 59 | + reusedNames?: string[] | undefined, |
| 60 | + redirectedReference?: ts.ResolvedProjectReference | undefined |
| 61 | + ) => (ts.ResolvedModule | undefined)[]) |
| 62 | + | undefined; |
| 63 | + public resolveTypeReferenceDirectives: |
| 64 | + | (( |
| 65 | + typeReferenceDirectiveNames: string[], |
| 66 | + containingFile: string, |
| 67 | + redirectedReference?: ts.ResolvedProjectReference | undefined |
| 68 | + ) => (ts.ResolvedTypeReferenceDirective | undefined)[]) |
| 69 | + | undefined; |
61 | 70 |
|
62 | 71 | constructor(
|
63 | 72 | private typescript: typeof ts,
|
@@ -86,16 +95,39 @@ export class CompilerHost
|
86 | 95 | this.configFileName = this.tsHost.configFileName;
|
87 | 96 | this.optionsToExtend = this.tsHost.optionsToExtend || {};
|
88 | 97 |
|
89 |
| - const { |
90 |
| - resolveModuleName, |
91 |
| - resolveTypeReferenceDirective |
92 |
| - } = makeResolutionFunctions( |
93 |
| - userResolveModuleName, |
94 |
| - userResolveTypeReferenceDirective |
95 |
| - ); |
| 98 | + if (userResolveModuleName) { |
| 99 | + this.resolveModuleNames = ( |
| 100 | + moduleNames: string[], |
| 101 | + containingFile: string |
| 102 | + ) => { |
| 103 | + return moduleNames.map(moduleName => { |
| 104 | + return userResolveModuleName( |
| 105 | + this.typescript, |
| 106 | + moduleName, |
| 107 | + containingFile, |
| 108 | + this.optionsToExtend, |
| 109 | + this |
| 110 | + ).resolvedModule; |
| 111 | + }); |
| 112 | + }; |
| 113 | + } |
96 | 114 |
|
97 |
| - this.resolveModuleName = resolveModuleName; |
98 |
| - this.resolveTypeReferenceDirective = resolveTypeReferenceDirective; |
| 115 | + if (userResolveTypeReferenceDirective) { |
| 116 | + this.resolveTypeReferenceDirectives = ( |
| 117 | + typeDirectiveNames: string[], |
| 118 | + containingFile: string |
| 119 | + ) => { |
| 120 | + return typeDirectiveNames.map(typeDirectiveName => { |
| 121 | + return userResolveTypeReferenceDirective( |
| 122 | + this.typescript, |
| 123 | + typeDirectiveName, |
| 124 | + containingFile, |
| 125 | + this.optionsToExtend, |
| 126 | + this |
| 127 | + ).resolvedTypeReferenceDirective; |
| 128 | + }); |
| 129 | + }; |
| 130 | + } |
99 | 131 | }
|
100 | 132 |
|
101 | 133 | public async processChanges(): Promise<{
|
@@ -367,33 +399,6 @@ export class CompilerHost
|
367 | 399 | this.afterCompile();
|
368 | 400 | }
|
369 | 401 |
|
370 |
| - public resolveModuleNames(moduleNames: string[], containingFile: string) { |
371 |
| - return moduleNames.map(moduleName => { |
372 |
| - return this.resolveModuleName( |
373 |
| - this.typescript, |
374 |
| - moduleName, |
375 |
| - containingFile, |
376 |
| - this.optionsToExtend, |
377 |
| - this |
378 |
| - ).resolvedModule; |
379 |
| - }); |
380 |
| - } |
381 |
| - |
382 |
| - public resolveTypeReferenceDirectives( |
383 |
| - typeDirectiveNames: string[], |
384 |
| - containingFile: string |
385 |
| - ) { |
386 |
| - return typeDirectiveNames.map(typeDirectiveName => { |
387 |
| - return this.resolveTypeReferenceDirective( |
388 |
| - this.typescript, |
389 |
| - typeDirectiveName, |
390 |
| - containingFile, |
391 |
| - this.optionsToExtend, |
392 |
| - this |
393 |
| - ).resolvedTypeReferenceDirective; |
394 |
| - }); |
395 |
| - } |
396 |
| - |
397 | 402 | // the functions below are use internally by typescript. we cannot use non-emitting version of incremental watching API
|
398 | 403 | // because it is
|
399 | 404 | // - much slower for some reason,
|
|
0 commit comments