diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2020-02-19 16:34:11 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-19 00:34:11 -0500 |
commit | 046bbb26913f9da58b0d23ae331e9dab9dc19e59 (patch) | |
tree | 74dd5945ed1ff10ce84fea05c73d9c13b31ad376 /cli/js/compiler_sourcefile.ts | |
parent | 3d5bed35e032ee20e4fe34cad925202c6f0c0d3e (diff) |
Support loading additional TS lib files (#3863)
Fixes #3726
This PR provides support for referencing other lib files (like lib.dom.d.ts that are not
used by default in Deno.
Diffstat (limited to 'cli/js/compiler_sourcefile.ts')
-rw-r--r-- | cli/js/compiler_sourcefile.ts | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/cli/js/compiler_sourcefile.ts b/cli/js/compiler_sourcefile.ts index ca7cf27df..faa096ba8 100644 --- a/cli/js/compiler_sourcefile.ts +++ b/cli/js/compiler_sourcefile.ts @@ -26,6 +26,8 @@ export interface SourceFileJson { sourceCode: string; } +export const ASSETS = "$asset$"; + /** Returns the TypeScript Extension enum for a given media type. */ function getExtension(fileName: string, mediaType: MediaType): ts.Extension { switch (mediaType) { @@ -109,7 +111,7 @@ export class SourceFile { this.processed = true; const files = (this.importedFiles = [] as Array<[string, string]>); - function process(references: ts.FileReference[]): void { + function process(references: Array<{ fileName: string }>): void { for (const { fileName } of references) { files.push([fileName, fileName]); } @@ -133,7 +135,15 @@ export class SourceFile { process(importedFiles); } process(referencedFiles); - process(libReferenceDirectives); + // built in libs comes across as `"dom"` for example, and should be filtered + // out during pre-processing as they are either already cached or they will + // be lazily fetched by the compiler host. Ones that contain full files are + // not filtered out and will be fetched as normal. + process( + libReferenceDirectives.filter( + ({ fileName }) => !ts.libMap.has(fileName.toLowerCase()) + ) + ); process(typeReferenceDirectives); return files; } |