summaryrefslogtreecommitdiff
path: root/cli/js/compiler/sourcefile.ts
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-03-29 04:03:49 +1100
committerGitHub <noreply@github.com>2020-03-28 13:03:49 -0400
commitbced52505f32d6cca4f944bb610a8a26767908a8 (patch)
treeda49a5df4b7bd6f8306248069228cd6bd0db1303 /cli/js/compiler/sourcefile.ts
parent1397b8e0e7c85762e19d88fde103342bfa563360 (diff)
Update to Prettier 2 and use ES Private Fields (#4498)
Diffstat (limited to 'cli/js/compiler/sourcefile.ts')
-rw-r--r--cli/js/compiler/sourcefile.ts32
1 files changed, 15 insertions, 17 deletions
diff --git a/cli/js/compiler/sourcefile.ts b/cli/js/compiler/sourcefile.ts
index e400acbf5..a55de080b 100644
--- a/cli/js/compiler/sourcefile.ts
+++ b/cli/js/compiler/sourcefile.ts
@@ -12,7 +12,7 @@ export enum MediaType {
TSX = 3,
Json = 4,
Wasm = 5,
- Unknown = 6
+ Unknown = 6,
}
export interface SourceFileJson {
@@ -50,6 +50,11 @@ function getExtension(fileName: string, mediaType: MediaType): ts.Extension {
}
}
+/** A global cache of module source files that have been loaded. */
+const moduleCache: Map<string, SourceFile> = new Map();
+/** A map of maps which cache source files for quicker modules resolution. */
+const specifierCache: Map<string, Map<string, SourceFile>> = new Map();
+
export class SourceFile {
extension!: ts.Extension;
filename!: string;
@@ -63,20 +68,20 @@ export class SourceFile {
url!: string;
constructor(json: SourceFileJson) {
- if (SourceFile._moduleCache.has(json.url)) {
+ if (moduleCache.has(json.url)) {
throw new TypeError("SourceFile already exists");
}
Object.assign(this, json);
this.extension = getExtension(this.url, this.mediaType);
- SourceFile._moduleCache.set(this.url, this);
+ moduleCache.set(this.url, this);
}
cache(moduleSpecifier: string, containingFile?: string): void {
containingFile = containingFile || "";
- let innerCache = SourceFile._specifierCache.get(containingFile);
+ let innerCache = specifierCache.get(containingFile);
if (!innerCache) {
innerCache = new Map();
- SourceFile._specifierCache.set(containingFile, innerCache);
+ specifierCache.set(containingFile, innerCache);
}
innerCache.set(moduleSpecifier, this);
}
@@ -112,14 +117,14 @@ export class SourceFile {
importedFiles,
referencedFiles,
libReferenceDirectives,
- typeReferenceDirectives
+ typeReferenceDirectives,
} = preProcessedFileInfo;
const typeDirectives = parseTypeDirectives(this.sourceCode);
if (typeDirectives) {
for (const importedFile of importedFiles) {
files.push([
importedFile.fileName,
- getMappedModuleName(importedFile, typeDirectives)
+ getMappedModuleName(importedFile, typeDirectives),
]);
}
} else if (
@@ -145,18 +150,11 @@ export class SourceFile {
return files;
}
- private static _moduleCache: Map<string, SourceFile> = new Map();
-
- private static _specifierCache: Map<
- string,
- Map<string, SourceFile>
- > = new Map();
-
static getUrl(
moduleSpecifier: string,
containingFile: string
): string | undefined {
- const containingCache = this._specifierCache.get(containingFile);
+ const containingCache = specifierCache.get(containingFile);
if (containingCache) {
const sourceFile = containingCache.get(moduleSpecifier);
return sourceFile && sourceFile.url;
@@ -165,10 +163,10 @@ export class SourceFile {
}
static get(url: string): SourceFile | undefined {
- return this._moduleCache.get(url);
+ return moduleCache.get(url);
}
static has(url: string): boolean {
- return this._moduleCache.has(url);
+ return moduleCache.has(url);
}
}