summaryrefslogtreecommitdiff
path: root/cli/js/compiler/imports.ts
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-05-06 00:19:18 +0200
committerGitHub <noreply@github.com>2020-05-06 00:19:18 +0200
commit2ecdbb62ae8f925b01e3e49f397d439a2f464a21 (patch)
treeca45ddcf322337affdf1bbb8f87139b373d2d93d /cli/js/compiler/imports.ts
parent9cd7d598405f8bf6600775827f870848fd3e120a (diff)
refactor: merge TS compiler into single file (#5091)
Diffstat (limited to 'cli/js/compiler/imports.ts')
-rw-r--r--cli/js/compiler/imports.ts130
1 files changed, 0 insertions, 130 deletions
diff --git a/cli/js/compiler/imports.ts b/cli/js/compiler/imports.ts
deleted file mode 100644
index a811075be..000000000
--- a/cli/js/compiler/imports.ts
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-
-import { MediaType, SourceFile, SourceFileJson } from "./sourcefile.ts";
-import { assert } from "../util.ts";
-import * as util from "../util.ts";
-import * as compilerOps from "../ops/compiler.ts";
-
-function resolveSpecifier(specifier: string, referrer: string): string {
- // The resolveModules op only handles fully qualified URLs for referrer.
- // However we will have cases where referrer is "/foo.ts". We add this dummy
- // prefix "file://" in order to use the op.
- // TODO(ry) Maybe we should perhaps ModuleSpecifier::resolve_import() to
- // handle this situation.
- let dummyPrefix = false;
- const prefix = "file://";
- if (referrer.startsWith("/")) {
- dummyPrefix = true;
- referrer = prefix + referrer;
- }
- let r = resolveModules([specifier], referrer)[0];
- if (dummyPrefix) {
- r = r.replace(prefix, "");
- }
- return r;
-}
-
-// TODO(ry) Remove. Unnecessary redirection to compilerOps.resolveModules.
-export function resolveModules(
- specifiers: string[],
- referrer?: string
-): string[] {
- util.log("compiler_imports::resolveModules", { specifiers, referrer });
- return compilerOps.resolveModules(specifiers, referrer);
-}
-
-// TODO(ry) Remove. Unnecessary redirection to compilerOps.fetchSourceFiles.
-function fetchSourceFiles(
- specifiers: string[],
- referrer?: string
-): Promise<SourceFileJson[]> {
- util.log("compiler_imports::fetchSourceFiles", { specifiers, referrer });
- return compilerOps.fetchSourceFiles(specifiers, referrer);
-}
-
-function getMediaType(filename: string): MediaType {
- const maybeExtension = /\.([a-zA-Z]+)$/.exec(filename);
- if (!maybeExtension) {
- util.log(`!!! Could not identify valid extension: "${filename}"`);
- return MediaType.Unknown;
- }
- const [, extension] = maybeExtension;
- switch (extension.toLowerCase()) {
- case "js":
- return MediaType.JavaScript;
- case "jsx":
- return MediaType.JSX;
- case "ts":
- return MediaType.TypeScript;
- case "tsx":
- return MediaType.TSX;
- case "wasm":
- return MediaType.Wasm;
- default:
- util.log(`!!! Unknown extension: "${extension}"`);
- return MediaType.Unknown;
- }
-}
-
-export function processLocalImports(
- sources: Record<string, string>,
- specifiers: Array<[string, string]>,
- referrer?: string,
- processJsImports = false
-): string[] {
- if (!specifiers.length) {
- return [];
- }
- const moduleNames = specifiers.map(
- referrer
- ? ([, specifier]): string => resolveSpecifier(specifier, referrer)
- : ([, specifier]): string => specifier
- );
- for (let i = 0; i < moduleNames.length; i++) {
- const moduleName = moduleNames[i];
- assert(moduleName in sources, `Missing module in sources: "${moduleName}"`);
- const sourceFile =
- SourceFile.get(moduleName) ||
- new SourceFile({
- url: moduleName,
- filename: moduleName,
- sourceCode: sources[moduleName],
- mediaType: getMediaType(moduleName),
- });
- sourceFile.cache(specifiers[i][0], referrer);
- if (!sourceFile.processed) {
- processLocalImports(
- sources,
- sourceFile.imports(processJsImports),
- sourceFile.url,
- processJsImports
- );
- }
- }
- return moduleNames;
-}
-
-export async function processImports(
- specifiers: Array<[string, string]>,
- referrer?: string,
- processJsImports = false
-): Promise<string[]> {
- if (!specifiers.length) {
- return [];
- }
- const sources = specifiers.map(([, moduleSpecifier]) => moduleSpecifier);
- const resolvedSources = resolveModules(sources, referrer);
- const sourceFiles = await fetchSourceFiles(resolvedSources, referrer);
- assert(sourceFiles.length === specifiers.length);
- for (let i = 0; i < sourceFiles.length; i++) {
- const sourceFileJson = sourceFiles[i];
- const sourceFile =
- SourceFile.get(sourceFileJson.url) || new SourceFile(sourceFileJson);
- sourceFile.cache(specifiers[i][0], referrer);
- if (!sourceFile.processed) {
- const sourceFileImports = sourceFile.imports(processJsImports);
- await processImports(sourceFileImports, sourceFile.url, processJsImports);
- }
- }
- return resolvedSources;
-}