summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dprint.json7
-rw-r--r--cli/args/config_file.rs151
-rw-r--r--cli/args/mod.rs14
-rw-r--r--cli/build.rs7
-rw-r--r--cli/dts/README.md29
-rw-r--r--cli/emit.rs246
-rw-r--r--cli/errors.rs9
-rw-r--r--cli/graph_util.rs2
-rw-r--r--cli/lsp/diagnostics.rs29
-rw-r--r--cli/main.rs3
-rw-r--r--cli/module_loader.rs2
-rw-r--r--cli/proc_state.rs4
-rw-r--r--cli/tests/integration/check_tests.rs4
-rw-r--r--cli/tools/check.rs2
-rw-r--r--cli/tsc/README.md30
-rw-r--r--cli/tsc/compiler.d.ts2
-rw-r--r--cli/tsc/diagnostics.rs (renamed from cli/diagnostics.rs)0
-rw-r--r--cli/tsc/dts/lib.d.ts (renamed from cli/dts/lib.d.ts)0
-rw-r--r--cli/tsc/dts/lib.deno.ns.d.ts (renamed from cli/dts/lib.deno.ns.d.ts)0
-rw-r--r--cli/tsc/dts/lib.deno.shared_globals.d.ts (renamed from cli/dts/lib.deno.shared_globals.d.ts)0
-rw-r--r--cli/tsc/dts/lib.deno.unstable.d.ts (renamed from cli/dts/lib.deno.unstable.d.ts)0
-rw-r--r--cli/tsc/dts/lib.deno.window.d.ts (renamed from cli/dts/lib.deno.window.d.ts)0
-rw-r--r--cli/tsc/dts/lib.deno.worker.d.ts (renamed from cli/dts/lib.deno.worker.d.ts)0
-rw-r--r--cli/tsc/dts/lib.deno_webgpu.d.ts (renamed from cli/dts/lib.deno_webgpu.d.ts)0
-rw-r--r--cli/tsc/dts/lib.dom.asynciterable.d.ts (renamed from cli/dts/lib.dom.asynciterable.d.ts)0
-rw-r--r--cli/tsc/dts/lib.dom.d.ts (renamed from cli/dts/lib.dom.d.ts)0
-rw-r--r--cli/tsc/dts/lib.dom.extras.d.ts (renamed from cli/dts/lib.dom.extras.d.ts)0
-rw-r--r--cli/tsc/dts/lib.dom.iterable.d.ts (renamed from cli/dts/lib.dom.iterable.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.collection.d.ts (renamed from cli/dts/lib.es2015.collection.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.core.d.ts (renamed from cli/dts/lib.es2015.core.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.d.ts (renamed from cli/dts/lib.es2015.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.generator.d.ts (renamed from cli/dts/lib.es2015.generator.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.iterable.d.ts (renamed from cli/dts/lib.es2015.iterable.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.promise.d.ts (renamed from cli/dts/lib.es2015.promise.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.proxy.d.ts (renamed from cli/dts/lib.es2015.proxy.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.reflect.d.ts (renamed from cli/dts/lib.es2015.reflect.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.symbol.d.ts (renamed from cli/dts/lib.es2015.symbol.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2015.symbol.wellknown.d.ts (renamed from cli/dts/lib.es2015.symbol.wellknown.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2016.array.include.d.ts (renamed from cli/dts/lib.es2016.array.include.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2016.d.ts (renamed from cli/dts/lib.es2016.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2016.full.d.ts (renamed from cli/dts/lib.es2016.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2017.d.ts (renamed from cli/dts/lib.es2017.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2017.full.d.ts (renamed from cli/dts/lib.es2017.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2017.intl.d.ts (renamed from cli/dts/lib.es2017.intl.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2017.object.d.ts (renamed from cli/dts/lib.es2017.object.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2017.sharedmemory.d.ts (renamed from cli/dts/lib.es2017.sharedmemory.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2017.string.d.ts (renamed from cli/dts/lib.es2017.string.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2017.typedarrays.d.ts (renamed from cli/dts/lib.es2017.typedarrays.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2018.asyncgenerator.d.ts (renamed from cli/dts/lib.es2018.asyncgenerator.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2018.asynciterable.d.ts (renamed from cli/dts/lib.es2018.asynciterable.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2018.d.ts (renamed from cli/dts/lib.es2018.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2018.full.d.ts (renamed from cli/dts/lib.es2018.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2018.intl.d.ts (renamed from cli/dts/lib.es2018.intl.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2018.promise.d.ts (renamed from cli/dts/lib.es2018.promise.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2018.regexp.d.ts (renamed from cli/dts/lib.es2018.regexp.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2019.array.d.ts (renamed from cli/dts/lib.es2019.array.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2019.d.ts (renamed from cli/dts/lib.es2019.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2019.full.d.ts (renamed from cli/dts/lib.es2019.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2019.object.d.ts (renamed from cli/dts/lib.es2019.object.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2019.string.d.ts (renamed from cli/dts/lib.es2019.string.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2019.symbol.d.ts (renamed from cli/dts/lib.es2019.symbol.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.bigint.d.ts (renamed from cli/dts/lib.es2020.bigint.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.d.ts (renamed from cli/dts/lib.es2020.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.date.d.ts (renamed from cli/dts/lib.es2020.date.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.full.d.ts (renamed from cli/dts/lib.es2020.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.intl.d.ts (renamed from cli/dts/lib.es2020.intl.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.number.d.ts (renamed from cli/dts/lib.es2020.number.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.promise.d.ts (renamed from cli/dts/lib.es2020.promise.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.sharedmemory.d.ts (renamed from cli/dts/lib.es2020.sharedmemory.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.string.d.ts (renamed from cli/dts/lib.es2020.string.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2020.symbol.wellknown.d.ts (renamed from cli/dts/lib.es2020.symbol.wellknown.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2021.d.ts (renamed from cli/dts/lib.es2021.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2021.full.d.ts (renamed from cli/dts/lib.es2021.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2021.intl.d.ts (renamed from cli/dts/lib.es2021.intl.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2021.promise.d.ts (renamed from cli/dts/lib.es2021.promise.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2021.string.d.ts (renamed from cli/dts/lib.es2021.string.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2021.weakref.d.ts (renamed from cli/dts/lib.es2021.weakref.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.array.d.ts (renamed from cli/dts/lib.es2022.array.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.d.ts (renamed from cli/dts/lib.es2022.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.error.d.ts (renamed from cli/dts/lib.es2022.error.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.full.d.ts (renamed from cli/dts/lib.es2022.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.intl.d.ts (renamed from cli/dts/lib.es2022.intl.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.object.d.ts (renamed from cli/dts/lib.es2022.object.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.sharedmemory.d.ts (renamed from cli/dts/lib.es2022.sharedmemory.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es2022.string.d.ts (renamed from cli/dts/lib.es2022.string.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es5.d.ts (renamed from cli/dts/lib.es5.d.ts)0
-rw-r--r--cli/tsc/dts/lib.es6.d.ts (renamed from cli/dts/lib.es6.d.ts)0
-rw-r--r--cli/tsc/dts/lib.esnext.array.d.ts (renamed from cli/dts/lib.esnext.array.d.ts)0
-rw-r--r--cli/tsc/dts/lib.esnext.d.ts (renamed from cli/dts/lib.esnext.d.ts)0
-rw-r--r--cli/tsc/dts/lib.esnext.full.d.ts (renamed from cli/dts/lib.esnext.full.d.ts)0
-rw-r--r--cli/tsc/dts/lib.esnext.intl.d.ts (renamed from cli/dts/lib.esnext.intl.d.ts)0
-rw-r--r--cli/tsc/dts/lib.scripthost.d.ts (renamed from cli/dts/lib.scripthost.d.ts)0
-rw-r--r--cli/tsc/dts/lib.webworker.d.ts (renamed from cli/dts/lib.webworker.d.ts)0
-rw-r--r--cli/tsc/dts/lib.webworker.importscripts.d.ts (renamed from cli/dts/lib.webworker.importscripts.d.ts)0
-rw-r--r--cli/tsc/dts/lib.webworker.iterable.d.ts (renamed from cli/dts/lib.webworker.iterable.d.ts)0
-rw-r--r--cli/tsc/dts/typescript.d.ts (renamed from cli/dts/typescript.d.ts)0
-rw-r--r--cli/tsc/mod.rs (renamed from cli/tsc.rs)15
-rwxr-xr-xtools/lint.js2
98 files changed, 234 insertions, 324 deletions
diff --git a/.dprint.json b/.dprint.json
index 959c44aa8..511e674ed 100644
--- a/.dprint.json
+++ b/.dprint.json
@@ -21,12 +21,7 @@
".git",
"cli/bench/testdata/express-router.js",
"cli/bench/testdata/npm/*",
- "cli/dts/lib.d.ts",
- "cli/dts/lib.dom*",
- "cli/dts/lib.es*",
- "cli/dts/lib.scripthost.d.ts",
- "cli/dts/lib.webworker*.d.ts",
- "cli/dts/typescript.d.ts",
+ "cli/tsc/dts/*.d.ts",
"cli/tests/testdata/fmt/badly_formatted.json",
"cli/tests/testdata/fmt/badly_formatted.md",
"cli/tests/testdata/byte_order_mark.ts",
diff --git a/cli/args/config_file.rs b/cli/args/config_file.rs
index cf88e3999..435e0d715 100644
--- a/cli/args/config_file.rs
+++ b/cli/args/config_file.rs
@@ -762,6 +762,157 @@ impl ConfigFile {
}
}
+/// Represents the "default" type library that should be used when type
+/// checking the code in the module graph. Note that a user provided config
+/// of `"lib"` would override this value.
+#[derive(Debug, Clone, Copy, Eq, Hash, PartialEq)]
+pub enum TsTypeLib {
+ DenoWindow,
+ DenoWorker,
+ UnstableDenoWindow,
+ UnstableDenoWorker,
+}
+
+impl Default for TsTypeLib {
+ fn default() -> Self {
+ Self::DenoWindow
+ }
+}
+
+impl Serialize for TsTypeLib {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: Serializer,
+ {
+ let value = match self {
+ Self::DenoWindow => vec!["deno.window".to_string()],
+ Self::DenoWorker => vec!["deno.worker".to_string()],
+ Self::UnstableDenoWindow => {
+ vec!["deno.window".to_string(), "deno.unstable".to_string()]
+ }
+ Self::UnstableDenoWorker => {
+ vec!["deno.worker".to_string(), "deno.unstable".to_string()]
+ }
+ };
+ Serialize::serialize(&value, serializer)
+ }
+}
+
+/// An enum that represents the base tsc configuration to return.
+pub enum TsConfigType {
+ /// Return a configuration for bundling, using swc to emit the bundle. This is
+ /// independent of type checking.
+ Bundle,
+ /// Return a configuration to use tsc to type check. This
+ /// is independent of either bundling or emitting via swc.
+ Check { lib: TsTypeLib },
+ /// Return a configuration to use swc to emit single module files.
+ Emit,
+}
+
+pub struct TsConfigForEmit {
+ pub ts_config: TsConfig,
+ pub maybe_ignored_options: Option<IgnoredCompilerOptions>,
+}
+
+/// For a given configuration type and optionally a configuration file,
+/// return a `TsConfig` struct and optionally any user configuration
+/// options that were ignored.
+pub fn get_ts_config_for_emit(
+ config_type: TsConfigType,
+ maybe_config_file: Option<&ConfigFile>,
+) -> Result<TsConfigForEmit, AnyError> {
+ let mut ts_config = match config_type {
+ TsConfigType::Bundle => TsConfig::new(json!({
+ "checkJs": false,
+ "emitDecoratorMetadata": false,
+ "importsNotUsedAsValues": "remove",
+ "inlineSourceMap": false,
+ "inlineSources": false,
+ "sourceMap": false,
+ "jsx": "react",
+ "jsxFactory": "React.createElement",
+ "jsxFragmentFactory": "React.Fragment",
+ })),
+ TsConfigType::Check { lib } => TsConfig::new(json!({
+ "allowJs": true,
+ "allowSyntheticDefaultImports": true,
+ "checkJs": false,
+ "emitDecoratorMetadata": false,
+ "experimentalDecorators": true,
+ "incremental": true,
+ "jsx": "react",
+ "importsNotUsedAsValues": "remove",
+ "inlineSourceMap": true,
+ "inlineSources": true,
+ "isolatedModules": true,
+ "lib": lib,
+ "module": "esnext",
+ "moduleDetection": "force",
+ "noEmit": true,
+ "resolveJsonModule": true,
+ "sourceMap": false,
+ "strict": true,
+ "target": "esnext",
+ "tsBuildInfoFile": "deno:///.tsbuildinfo",
+ "useDefineForClassFields": true,
+ // TODO(@kitsonk) remove for Deno 2.0
+ "useUnknownInCatchVariables": false,
+ })),
+ TsConfigType::Emit => TsConfig::new(json!({
+ "checkJs": false,
+ "emitDecoratorMetadata": false,
+ "importsNotUsedAsValues": "remove",
+ "inlineSourceMap": true,
+ "inlineSources": true,
+ "sourceMap": false,
+ "jsx": "react",
+ "jsxFactory": "React.createElement",
+ "jsxFragmentFactory": "React.Fragment",
+ "resolveJsonModule": true,
+ })),
+ };
+ let maybe_ignored_options =
+ ts_config.merge_tsconfig_from_config_file(maybe_config_file)?;
+ Ok(TsConfigForEmit {
+ ts_config,
+ maybe_ignored_options,
+ })
+}
+
+impl From<TsConfig> for deno_ast::EmitOptions {
+ fn from(config: TsConfig) -> Self {
+ let options: EmitConfigOptions = serde_json::from_value(config.0).unwrap();
+ let imports_not_used_as_values =
+ match options.imports_not_used_as_values.as_str() {
+ "preserve" => deno_ast::ImportsNotUsedAsValues::Preserve,
+ "error" => deno_ast::ImportsNotUsedAsValues::Error,
+ _ => deno_ast::ImportsNotUsedAsValues::Remove,
+ };
+ let (transform_jsx, jsx_automatic, jsx_development) =
+ match options.jsx.as_str() {
+ "react" => (true, false, false),
+ "react-jsx" => (true, true, false),
+ "react-jsxdev" => (true, true, true),
+ _ => (false, false, false),
+ };
+ deno_ast::EmitOptions {
+ emit_metadata: options.emit_decorator_metadata,
+ imports_not_used_as_values,
+ inline_source_map: options.inline_source_map,
+ inline_sources: options.inline_sources,
+ source_map: options.source_map,
+ jsx_automatic,
+ jsx_development,
+ jsx_factory: options.jsx_factory,
+ jsx_fragment_factory: options.jsx_fragment_factory,
+ jsx_import_source: options.jsx_import_source,
+ transform_jsx,
+ var_decl_imports: false,
+ }
+ }
+}
+
#[cfg(test)]
mod tests {
use super::*;
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index ff9a6f73c..ae43bccaf 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -19,6 +19,9 @@ pub use config_file::MaybeImportsResult;
pub use config_file::ProseWrap;
pub use config_file::TestConfig;
pub use config_file::TsConfig;
+pub use config_file::TsConfigForEmit;
+pub use config_file::TsConfigType;
+pub use config_file::TsTypeLib;
pub use flags::*;
pub use lockfile::Lockfile;
pub use lockfile::LockfileError;
@@ -42,10 +45,6 @@ use std::path::PathBuf;
use std::sync::Arc;
use crate::deno_dir::DenoDir;
-use crate::emit::get_ts_config_for_emit;
-use crate::emit::TsConfigType;
-use crate::emit::TsConfigWithIgnoredOptions;
-use crate::emit::TsTypeLib;
use crate::file_fetcher::get_root_cert_store;
use crate::file_fetcher::CacheSetting;
use crate::fs_util;
@@ -191,8 +190,11 @@ impl CliOptions {
pub fn resolve_ts_config_for_emit(
&self,
config_type: TsConfigType,
- ) -> Result<TsConfigWithIgnoredOptions, AnyError> {
- get_ts_config_for_emit(config_type, self.maybe_config_file.as_ref())
+ ) -> Result<TsConfigForEmit, AnyError> {
+ config_file::get_ts_config_for_emit(
+ config_type,
+ self.maybe_config_file.as_ref(),
+ )
}
/// Resolves the storage key to use based on the current flags, config, or main module.
diff --git a/cli/build.rs b/cli/build.rs
index c7d902941..a7076145a 100644
--- a/cli/build.rs
+++ b/cli/build.rs
@@ -122,7 +122,7 @@ mod ts {
"esnext.intl",
];
- let path_dts = cwd.join("dts");
+ let path_dts = cwd.join("tsc/dts");
// ensure we invalidate the build properly.
for name in libs.iter() {
println!(
@@ -476,5 +476,8 @@ fn main() {
fn deno_webgpu_get_declaration() -> PathBuf {
let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR"));
- manifest_dir.join("dts").join("lib.deno_webgpu.d.ts")
+ manifest_dir
+ .join("tsc")
+ .join("dts")
+ .join("lib.deno_webgpu.d.ts")
}
diff --git a/cli/dts/README.md b/cli/dts/README.md
deleted file mode 100644
index 14d937c88..000000000
--- a/cli/dts/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# How to upgrade TypeScript.
-
-The files in this directory are mostly from the TypeScript repository. We
-currently (unfortunately) have a rather manual process for upgrading TypeScript.
-It works like this currently:
-
-1. Checkout denoland/TypeScript repo in a separate directory.
-1. Add Microsoft/TypeScript as a remote and fetch its latest tags
-1. Checkout a new branch based on this tag.
-1. Cherry pick the custom commit we made in a previous release to the new one.
-1. This commit has a "deno.ts" file in it. Read the instructions in it.
-1. Copy typescript.js into Deno repo.
-1. Copy d.ts files into dts directory.
-
-So that might look something like this:
-
-```
-git clone https://github.com/denoland/TypeScript.git
-cd typescript
-git remote add upstream https://github.com/Microsoft/TypeScript
-git fetch upstream
-git checkout v3.9.7
-git checkout -b branch_v3.9.7
-git cherry pick <previous-release-branch-commit-we-did>
-npm install
-gulp local
-rsync lib/typescript.js ~/src/deno/cli/tsc/00_typescript.js
-rsync --exclude=protocol.d.ts --exclude=tsserverlibrary.d.ts --exclude=typescriptServices.d.ts lib/*.d.ts ~/src/deno/cli/dts/
-```
diff --git a/cli/emit.rs b/cli/emit.rs
index 766524187..3bf56fae6 100644
--- a/cli/emit.rs
+++ b/cli/emit.rs
@@ -1,154 +1,18 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
-//! The collection of APIs to be able to take `deno_graph` module graphs and
-//! populate a cache, emit files, and transform a graph into the structures for
-//! loading into an isolate.
-
-use crate::args::ConfigFile;
-use crate::args::EmitConfigOptions;
-use crate::args::IgnoredCompilerOptions;
-use crate::args::TsConfig;
use crate::cache::EmitCache;
use crate::cache::FastInsecureHasher;
use crate::cache::ParsedSourceCache;
-use deno_ast::swc::bundler::Hook;
-use deno_ast::swc::bundler::ModuleRecord;
-use deno_ast::swc::common::Span;
use deno_core::error::AnyError;
-use deno_core::serde::Serialize;
-use deno_core::serde::Serializer;
-use deno_core::serde_json;
-use deno_core::serde_json::json;
use deno_core::ModuleSpecifier;
use deno_graph::MediaType;
-use deno_graph::ModuleGraphError;
-use deno_graph::ResolutionError;
-use std::fmt;
use std::sync::Arc;
-/// Represents the "default" type library that should be used when type
-/// checking the code in the module graph. Note that a user provided config
-/// of `"lib"` would override this value.
-#[derive(Debug, Clone, Copy, Eq, Hash, PartialEq)]
-pub enum TsTypeLib {
- DenoWindow,
- DenoWorker,
- UnstableDenoWindow,
- UnstableDenoWorker,
-}
-
-impl Default for TsTypeLib {
- fn default() -> Self {
- Self::DenoWindow
- }
-}
-
-impl Serialize for TsTypeLib {
- fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
- where
- S: Serializer,
- {
- let value = match self {
- Self::DenoWindow => vec!["deno.window".to_string()],
- Self::DenoWorker => vec!["deno.worker".to_string()],
- Self::UnstableDenoWindow => {
- vec!["deno.window".to_string(), "deno.unstable".to_string()]
- }
- Self::UnstableDenoWorker => {
- vec!["deno.worker".to_string(), "deno.unstable".to_string()]
- }
- };
- Serialize::serialize(&value, serializer)
- }
-}
-
-/// An enum that represents the base tsc configuration to return.
-pub enum TsConfigType {
- /// Return a configuration for bundling, using swc to emit the bundle. This is
- /// independent of type checking.
- Bundle,
- /// Return a configuration to use tsc to type check. This
- /// is independent of either bundling or emitting via swc.
- Check { lib: TsTypeLib },
- /// Return a configuration to use swc to emit single module files.
- Emit,
-}
-
-pub struct TsConfigWithIgnoredOptions {
- pub ts_config: TsConfig,
- pub maybe_ignored_options: Option<IgnoredCompilerOptions>,
-}
-
-/// For a given configuration type and optionally a configuration file,
-/// return a `TsConfig` struct and optionally any user configuration
-/// options that were ignored.
-pub fn get_ts_config_for_emit(
- config_type: TsConfigType,
- maybe_config_file: Option<&ConfigFile>,
-) -> Result<TsConfigWithIgnoredOptions, AnyError> {
- let mut ts_config = match config_type {
- TsConfigType::Bundle => TsConfig::new(json!({
- "checkJs": false,
- "emitDecoratorMetadata": false,
- "importsNotUsedAsValues": "remove",
- "inlineSourceMap": false,
- "inlineSources": false,
- "sourceMap": false,
- "jsx": "react",
- "jsxFactory": "React.createElement",
- "jsxFragmentFactory": "React.Fragment",
- })),
- TsConfigType::Check { lib } => TsConfig::new(json!({
- "allowJs": true,
- "allowSyntheticDefaultImports": true,
- "checkJs": false,
- "emitDecoratorMetadata": false,
- "experimentalDecorators": true,
- "incremental": true,
- "jsx": "react",
- "importsNotUsedAsValues": "remove",
- "inlineSourceMap": true,
- "inlineSources": true,
- "isolatedModules": true,
- "lib": lib,
- "module": "esnext",
- "moduleDetection": "force",
- "noEmit": true,
- "resolveJsonModule": true,
- "sourceMap": false,
- "strict": true,
- "target": "esnext",
- "tsBuildInfoFile": "deno:///.tsbuildinfo",
- "useDefineForClassFields": true,
- // TODO(@kitsonk) remove for Deno 2.0
- "useUnknownInCatchVariables": false,
- })),
- TsConfigType::Emit => TsConfig::new(json!({
- "checkJs": false,
- "emitDecoratorMetadata": false,
- "importsNotUsedAsValues": "remove",
- "inlineSourceMap": true,
- "inlineSources": true,
- "sourceMap": false,
- "jsx": "react",
- "jsxFactory": "React.createElement",
- "jsxFragmentFactory": "React.Fragment",
- "resolveJsonModule": true,
- })),
- };
- let maybe_ignored_options =
- ts_config.merge_tsconfig_from_config_file(maybe_config_file)?;
- Ok(TsConfigWithIgnoredOptions {
- ts_config,
- maybe_ignored_options,
- })
-}
-
-/// A hashing function that takes the source code, version and optionally a
-/// user provided config and generates a string hash which can be stored to
+/// A hashing function that takes the source code and emit options
+/// hash then generates a string hash which can be stored to
/// determine if the cached emit is valid or not.
-pub fn get_source_hash(source_text: &str, emit_options_hash: u64) -> u64 {
+fn get_source_hash(source_text: &str, emit_options_hash: u64) -> u64 {
FastInsecureHasher::new()
.write_str(source_text)
.write_u64(emit_options_hash)
@@ -183,107 +47,3 @@ pub fn emit_parsed_source(
Ok(transpiled_source.text)
}
}
-
-/// An adapter struct to make a deno_graph::ModuleGraphError display as expected
-/// in the Deno CLI.
-#[derive(Debug)]
-pub struct GraphError(pub ModuleGraphError);
-
-impl std::error::Error for GraphError {}
-
-impl From<ModuleGraphError> for GraphError {
- fn from(err: ModuleGraphError) -> Self {
- Self(err)
- }
-}
-
-impl fmt::Display for GraphError {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- match &self.0 {
- ModuleGraphError::ResolutionError(err) => {
- if matches!(
- err,
- ResolutionError::InvalidDowngrade { .. }
- | ResolutionError::InvalidLocalImport { .. }
- ) {
- write!(f, "{}", err.to_string_with_range())
- } else {
- self.0.fmt(f)
- }
- }
- _ => self.0.fmt(f),
- }
- }
-}
-
-/// This contains the logic for Deno to rewrite the `import.meta` when bundling.
-pub struct BundleHook;
-
-impl Hook for BundleHook {
- fn get_import_meta_props(
- &self,
- span: Span,
- module_record: &ModuleRecord,
- ) -> Result<Vec<deno_ast::swc::ast::KeyValueProp>, AnyError> {
- use deno_ast::swc::ast;
-
- Ok(vec![
- ast::KeyValueProp {
- key: ast::PropName::Ident(ast::Ident::new("url".into(), span)),
- value: Box::new(ast::Expr::Lit(ast::Lit::Str(ast::Str {
- span,
- value: module_record.file_name.to_string().into(),
- raw: None,
- }))),
- },
- ast::KeyValueProp {
- key: ast::PropName::Ident(ast::Ident::new("main".into(), span)),
- value: Box::new(if module_record.is_entry {
- ast::Expr::Member(ast::MemberExpr {
- span,
- obj: Box::new(ast::Expr::MetaProp(ast::MetaPropExpr {
- span,
- kind: ast::MetaPropKind::ImportMeta,
- })),
- prop: ast::MemberProp::Ident(ast::Ident::new("main".into(), span)),
- })
- } else {
- ast::Expr::Lit(ast::Lit::Bool(ast::Bool { span, value: false }))
- }),
- },
- ])
- }
-}
-
-impl From<TsConfig> for deno_ast::EmitOptions {
- fn from(config: TsConfig) -> Self {
- let options: EmitConfigOptions = serde_json::from_value(config.0).unwrap();
- let imports_not_used_as_values =
- match options.imports_not_used_as_values.as_str() {
- "preserve" => deno_ast::ImportsNotUsedAsValues::Preserve,
- "error" => deno_ast::ImportsNotUsedAsValues::Error,
- _ => deno_ast::ImportsNotUsedAsValues::Remove,
- };
- let (transform_jsx, jsx_automatic, jsx_development) =
- match options.jsx.as_str() {
- "react" => (true, false, false),
- "react-jsx" => (true, true, false),
- "react-jsxdev" => (true, true, true),
- _ => (false, false, false),
- };
- deno_ast::EmitOptions {
- emit_metadata: options.emit_decorator_metadata,
- imports_not_used_as_values,
- inline_source_map: options.inline_source_map,
- inline_sources: options.inline_sources,
- source_map: options.source_map,
- jsx_automatic,
- jsx_development,
- jsx_factory: options.jsx_factory,
- jsx_fragment_factory: options.jsx_fragment_factory,
- jsx_import_source: options.jsx_import_source,
- transform_jsx,
- var_decl_imports: false,
- }
- }
-}
diff --git a/cli/errors.rs b/cli/errors.rs
index fbf9da8e0..2b5d19503 100644
--- a/cli/errors.rs
+++ b/cli/errors.rs
@@ -9,8 +9,6 @@
//! Diagnostics are compile-time type errors, whereas JsErrors are runtime
//! exceptions.
-use crate::emit::GraphError;
-
use deno_ast::Diagnostic;
use deno_core::error::AnyError;
use deno_graph::ModuleGraphError;
@@ -25,11 +23,7 @@ fn get_diagnostic_class(_: &Diagnostic) -> &'static str {
"SyntaxError"
}
-fn get_graph_error_class(err: &GraphError) -> &'static str {
- get_module_graph_error_class(&err.0)
-}
-
-pub fn get_module_graph_error_class(err: &ModuleGraphError) -> &'static str {
+fn get_module_graph_error_class(err: &ModuleGraphError) -> &'static str {
match err {
ModuleGraphError::LoadingErr(_, err) => get_error_class_name(err.as_ref()),
ModuleGraphError::InvalidSource(_, _)
@@ -60,7 +54,6 @@ pub fn get_error_class_name(e: &AnyError) -> &'static str {
.map(get_import_map_error_class)
})
.or_else(|| e.downcast_ref::<Diagnostic>().map(get_diagnostic_class))
- .or_else(|| e.downcast_ref::<GraphError>().map(get_graph_error_class))
.or_else(|| {
e.downcast_ref::<ModuleGraphError>()
.map(get_module_graph_error_class)
diff --git a/cli/graph_util.rs b/cli/graph_util.rs
index b919d5042..8ffd284b8 100644
--- a/cli/graph_util.rs
+++ b/cli/graph_util.rs
@@ -1,7 +1,7 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
+use crate::args::TsTypeLib;
use crate::colors;
-use crate::emit::TsTypeLib;
use crate::errors::get_error_class_name;
use crate::npm::resolve_npm_package_reqs;
use crate::npm::NpmPackageReference;
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index aac6e5862..58156bad2 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -13,7 +13,6 @@ use super::tsc;
use super::tsc::TsServer;
use crate::args::LintConfig;
-use crate::diagnostics;
use crate::npm::NpmPackageReference;
use deno_ast::MediaType;
@@ -43,7 +42,7 @@ pub type DiagnosticRecord =
pub type DiagnosticVec = Vec<DiagnosticRecord>;
type DiagnosticMap =
HashMap<ModuleSpecifier, (Option<i32>, Vec<lsp::Diagnostic>)>;
-type TsDiagnosticsMap = HashMap<String, Vec<diagnostics::Diagnostic>>;
+type TsDiagnosticsMap = HashMap<String, Vec<crate::tsc::Diagnostic>>;
type DiagnosticsByVersionMap = HashMap<Option<i32>, Vec<lsp::Diagnostic>>;
#[derive(Clone)]
@@ -335,25 +334,25 @@ impl DiagnosticsServer {
}
}
-impl<'a> From<&'a diagnostics::DiagnosticCategory> for lsp::DiagnosticSeverity {
- fn from(category: &'a diagnostics::DiagnosticCategory) -> Self {
+impl<'a> From<&'a crate::tsc::DiagnosticCategory> for lsp::DiagnosticSeverity {
+ fn from(category: &'a crate::tsc::DiagnosticCategory) -> Self {
match category {
- diagnostics::DiagnosticCategory::Error => lsp::DiagnosticSeverity::ERROR,
- diagnostics::DiagnosticCategory::Warning => {
+ crate::tsc::DiagnosticCategory::Error => lsp::DiagnosticSeverity::ERROR,
+ crate::tsc::DiagnosticCategory::Warning => {
lsp::DiagnosticSeverity::WARNING
}
- diagnostics::DiagnosticCategory::Suggestion => {
+ crate::tsc::DiagnosticCategory::Suggestion => {
lsp::DiagnosticSeverity::HINT
}
- diagnostics::DiagnosticCategory::Message => {
+ crate::tsc::DiagnosticCategory::Message => {
lsp::DiagnosticSeverity::INFORMATION
}
}
}
}
-impl<'a> From<&'a diagnostics::Position> for lsp::Position {
- fn from(pos: &'a diagnostics::Position) -> Self {
+impl<'a> From<&'a crate::tsc::Position> for lsp::Position {
+ fn from(pos: &'a crate::tsc::Position) -> Self {
Self {
line: pos.line as u32,
character: pos.character as u32,
@@ -361,7 +360,7 @@ impl<'a> From<&'a diagnostics::Position> for lsp::Position {
}
}
-fn get_diagnostic_message(diagnostic: &diagnostics::Diagnostic) -> String {
+fn get_diagnostic_message(diagnostic: &crate::tsc::Diagnostic) -> String {
if let Some(message) = diagnostic.message_text.clone() {
message
} else if let Some(message_chain) = diagnostic.message_chain.clone() {
@@ -372,8 +371,8 @@ fn get_diagnostic_message(diagnostic: &diagnostics::Diagnostic) -> String {
}
fn to_lsp_range(
- start: &diagnostics::Position,
- end: &diagnostics::Position,
+ start: &crate::tsc::Position,
+ end: &crate::tsc::Position,
) -> lsp::Range {
lsp::Range {
start: start.into(),
@@ -382,7 +381,7 @@ fn to_lsp_range(
}
fn to_lsp_related_information(
- related_information: &Option<Vec<diagnostics::Diagnostic>>,
+ related_information: &Option<Vec<crate::tsc::Diagnostic>>,
) -> Option<Vec<lsp::DiagnosticRelatedInformation>> {
related_information.as_ref().map(|related| {
related
@@ -408,7 +407,7 @@ fn to_lsp_related_information(
}
fn ts_json_to_diagnostics(
- diagnostics: Vec<diagnostics::Diagnostic>,
+ diagnostics: Vec<crate::tsc::Diagnostic>,
) -> Vec<lsp::Diagnostic> {
diagnostics
.iter()
diff --git a/cli/main.rs b/cli/main.rs
index 93f2c501d..2fb595b79 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -7,7 +7,6 @@ mod cdp;
mod checksum;
mod deno_dir;
mod deno_std;
-mod diagnostics;
mod diff;
mod display;
mod emit;
@@ -59,12 +58,12 @@ use crate::args::ReplFlags;
use crate::args::RunFlags;
use crate::args::TaskFlags;
use crate::args::TestFlags;
+use crate::args::TsConfigType;
use crate::args::TypeCheckMode;
use crate::args::UninstallFlags;
use crate::args::UpgradeFlags;
use crate::args::VendorFlags;
use crate::cache::TypeCheckCache;
-use crate::emit::TsConfigType;
use crate::file_fetcher::File;
use crate::file_watcher::ResolutionResult;
use crate::graph_util::graph_lock_or_exit;
diff --git a/cli/module_loader.rs b/cli/module_loader.rs
index dc367f5e7..41ec7e28c 100644
--- a/cli/module_loader.rs
+++ b/cli/module_loader.rs
@@ -1,7 +1,7 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
+use crate::args::TsTypeLib;
use crate::emit::emit_parsed_source;
-use crate::emit::TsTypeLib;
use crate::graph_util::ModuleEntry;
use crate::node;
use crate::proc_state::ProcState;
diff --git a/cli/proc_state.rs b/cli/proc_state.rs
index 32a2d9d42..019b6e447 100644
--- a/cli/proc_state.rs
+++ b/cli/proc_state.rs
@@ -4,6 +4,8 @@ use crate::args::CliOptions;
use crate::args::DenoSubcommand;
use crate::args::Flags;
use crate::args::Lockfile;
+use crate::args::TsConfigType;
+use crate::args::TsTypeLib;
use crate::args::TypeCheckMode;
use crate::cache;
use crate::cache::EmitCache;
@@ -13,8 +15,6 @@ use crate::cache::ParsedSourceCache;
use crate::cache::TypeCheckCache;
use crate::deno_dir;
use crate::emit::emit_parsed_source;
-use crate::emit::TsConfigType;
-use crate::emit::TsTypeLib;
use crate::file_fetcher::FileFetcher;
use crate::graph_util::graph_lock_or_exit;
use crate::graph_util::GraphData;
diff --git a/cli/tests/integration/check_tests.rs b/cli/tests/integration/check_tests.rs
index 03a5c932c..4b3e512c4 100644
--- a/cli/tests/integration/check_tests.rs
+++ b/cli/tests/integration/check_tests.rs
@@ -126,7 +126,7 @@ fn typecheck_declarations_ns() {
let output = util::deno_cmd()
.arg("test")
.arg("--doc")
- .arg(util::root_path().join("cli/dts/lib.deno.ns.d.ts"))
+ .arg(util::root_path().join("cli/tsc/dts/lib.deno.ns.d.ts"))
.output()
.unwrap();
println!("stdout: {}", String::from_utf8(output.stdout).unwrap());
@@ -140,7 +140,7 @@ fn typecheck_declarations_unstable() {
.arg("test")
.arg("--doc")
.arg("--unstable")
- .arg(util::root_path().join("cli/dts/lib.deno.unstable.d.ts"))
+ .arg(util::root_path().join("cli/tsc/dts/lib.deno.unstable.d.ts"))
.output()
.unwrap();
println!("stdout: {}", String::from_utf8(output.stdout).unwrap());
diff --git a/cli/tools/check.rs b/cli/tools/check.rs
index 88c05e130..cf3bf0a49 100644
--- a/cli/tools/check.rs
+++ b/cli/tools/check.rs
@@ -15,11 +15,11 @@ use crate::args::TsConfig;
use crate::args::TypeCheckMode;
use crate::cache::FastInsecureHasher;
use crate::cache::TypeCheckCache;
-use crate::diagnostics::Diagnostics;
use crate::graph_util::GraphData;
use crate::graph_util::ModuleEntry;
use crate::npm::NpmPackageResolver;
use crate::tsc;
+use crate::tsc::Diagnostics;
use crate::tsc::Stats;
use crate::version;
diff --git a/cli/tsc/README.md b/cli/tsc/README.md
index e8287f3c0..657aa2b5a 100644
--- a/cli/tsc/README.md
+++ b/cli/tsc/README.md
@@ -2,3 +2,33 @@
This directory contains the typescript compiler and a small compiler host for
the runtime snapshot.
+
+## How to upgrade TypeScript.
+
+The files in this directory are mostly from the TypeScript repository. We
+currently (unfortunately) have a rather manual process for upgrading TypeScript.
+It works like this currently:
+
+1. Checkout denoland/TypeScript repo in a separate directory.
+1. Add Microsoft/TypeScript as a remote and fetch its latest tags
+1. Checkout a new branch based on this tag.
+1. Cherry pick the custom commit we made in a previous release to the new one.
+1. This commit has a "deno.ts" file in it. Read the instructions in it.
+1. Copy typescript.js into Deno repo.
+1. Copy d.ts files into dts directory.
+
+So that might look something like this:
+
+```
+git clone https://github.com/denoland/TypeScript.git
+cd typescript
+git remote add upstream https://github.com/Microsoft/TypeScript
+git fetch upstream
+git checkout v3.9.7
+git checkout -b branch_v3.9.7
+git cherry pick <previous-release-branch-commit-we-did>
+npm install
+gulp local
+rsync lib/typescript.js ~/src/deno/cli/tsc/00_typescript.js
+rsync --exclude=protocol.d.ts --exclude=tsserverlibrary.d.ts --exclude=typescriptServices.d.ts lib/*.d.ts ~/src/deno/cli/tsc/dts/
+```
diff --git a/cli/tsc/compiler.d.ts b/cli/tsc/compiler.d.ts
index 62a1bbdd2..47910bbad 100644
--- a/cli/tsc/compiler.d.ts
+++ b/cli/tsc/compiler.d.ts
@@ -2,7 +2,7 @@
// Contains types that can be used to validate and check `99_main_compiler.js`
-import * as _ts from "../dts/typescript";
+import * as _ts from "./dts/typescript";
declare global {
namespace ts {
diff --git a/cli/diagnostics.rs b/cli/tsc/diagnostics.rs
index 05502dca4..05502dca4 100644
--- a/cli/diagnostics.rs
+++ b/cli/tsc/diagnostics.rs
diff --git a/cli/dts/lib.d.ts b/cli/tsc/dts/lib.d.ts
index 9152c4dfc..9152c4dfc 100644
--- a/cli/dts/lib.d.ts
+++ b/cli/tsc/dts/lib.d.ts
diff --git a/cli/dts/lib.deno.ns.d.ts b/cli/tsc/dts/lib.deno.ns.d.ts
index 1049bf643..1049bf643 100644
--- a/cli/dts/lib.deno.ns.d.ts
+++ b/cli/tsc/dts/lib.deno.ns.d.ts
diff --git a/cli/dts/lib.deno.shared_globals.d.ts b/cli/tsc/dts/lib.deno.shared_globals.d.ts
index 5b30c0a87..5b30c0a87 100644
--- a/cli/dts/lib.deno.shared_globals.d.ts
+++ b/cli/tsc/dts/lib.deno.shared_globals.d.ts
diff --git a/cli/dts/lib.deno.unstable.d.ts b/cli/tsc/dts/lib.deno.unstable.d.ts
index eaa40abc5..eaa40abc5 100644
--- a/cli/dts/lib.deno.unstable.d.ts
+++ b/cli/tsc/dts/lib.deno.unstable.d.ts
diff --git a/cli/dts/lib.deno.window.d.ts b/cli/tsc/dts/lib.deno.window.d.ts
index 4ce288a4d..4ce288a4d 100644
--- a/cli/dts/lib.deno.window.d.ts
+++ b/cli/tsc/dts/lib.deno.window.d.ts
diff --git a/cli/dts/lib.deno.worker.d.ts b/cli/tsc/dts/lib.deno.worker.d.ts
index d274d4c05..d274d4c05 100644
--- a/cli/dts/lib.deno.worker.d.ts
+++ b/cli/tsc/dts/lib.deno.worker.d.ts
diff --git a/cli/dts/lib.deno_webgpu.d.ts b/cli/tsc/dts/lib.deno_webgpu.d.ts
index 32f142768..32f142768 100644
--- a/cli/dts/lib.deno_webgpu.d.ts
+++ b/cli/tsc/dts/lib.deno_webgpu.d.ts
diff --git a/cli/dts/lib.dom.asynciterable.d.ts b/cli/tsc/dts/lib.dom.asynciterable.d.ts
index 27f9f3ede..27f9f3ede 100644
--- a/cli/dts/lib.dom.asynciterable.d.ts
+++ b/cli/tsc/dts/lib.dom.asynciterable.d.ts
diff --git a/cli/dts/lib.dom.d.ts b/cli/tsc/dts/lib.dom.d.ts
index 6f9964efc..6f9964efc 100644
--- a/cli/dts/lib.dom.d.ts
+++ b/cli/tsc/dts/lib.dom.d.ts
diff --git a/cli/dts/lib.dom.extras.d.ts b/cli/tsc/dts/lib.dom.extras.d.ts
index b80435a78..b80435a78 100644
--- a/cli/dts/lib.dom.extras.d.ts
+++ b/cli/tsc/dts/lib.dom.extras.d.ts
diff --git a/cli/dts/lib.dom.iterable.d.ts b/cli/tsc/dts/lib.dom.iterable.d.ts
index cde428dfc..cde428dfc 100644
--- a/cli/dts/lib.dom.iterable.d.ts
+++ b/cli/tsc/dts/lib.dom.iterable.d.ts
diff --git a/cli/dts/lib.es2015.collection.d.ts b/cli/tsc/dts/lib.es2015.collection.d.ts
index c2e7733ae..c2e7733ae 100644
--- a/cli/dts/lib.es2015.collection.d.ts
+++ b/cli/tsc/dts/lib.es2015.collection.d.ts
diff --git a/cli/dts/lib.es2015.core.d.ts b/cli/tsc/dts/lib.es2015.core.d.ts
index e55dc65c8..e55dc65c8 100644
--- a/cli/dts/lib.es2015.core.d.ts
+++ b/cli/tsc/dts/lib.es2015.core.d.ts
diff --git a/cli/dts/lib.es2015.d.ts b/cli/tsc/dts/lib.es2015.d.ts
index 791284b6d..791284b6d 100644
--- a/cli/dts/lib.es2015.d.ts
+++ b/cli/tsc/dts/lib.es2015.d.ts
diff --git a/cli/dts/lib.es2015.generator.d.ts b/cli/tsc/dts/lib.es2015.generator.d.ts
index 78f9fd5bd..78f9fd5bd 100644
--- a/cli/dts/lib.es2015.generator.d.ts
+++ b/cli/tsc/dts/lib.es2015.generator.d.ts
diff --git a/cli/dts/lib.es2015.iterable.d.ts b/cli/tsc/dts/lib.es2015.iterable.d.ts
index 8a7292383..8a7292383 100644
--- a/cli/dts/lib.es2015.iterable.d.ts
+++ b/cli/tsc/dts/lib.es2015.iterable.d.ts
diff --git a/cli/dts/lib.es2015.promise.d.ts b/cli/tsc/dts/lib.es2015.promise.d.ts
index 57eea0f6b..57eea0f6b 100644
--- a/cli/dts/lib.es2015.promise.d.ts
+++ b/cli/tsc/dts/lib.es2015.promise.d.ts
diff --git a/cli/dts/lib.es2015.proxy.d.ts b/cli/tsc/dts/lib.es2015.proxy.d.ts
index c24186615..c24186615 100644
--- a/cli/dts/lib.es2015.proxy.d.ts
+++ b/cli/tsc/dts/lib.es2015.proxy.d.ts
diff --git a/cli/dts/lib.es2015.reflect.d.ts b/cli/tsc/dts/lib.es2015.reflect.d.ts
index d1beb6862..d1beb6862 100644
--- a/cli/dts/lib.es2015.reflect.d.ts
+++ b/cli/tsc/dts/lib.es2015.reflect.d.ts
diff --git a/cli/dts/lib.es2015.symbol.d.ts b/cli/tsc/dts/lib.es2015.symbol.d.ts
index 253d2806c..253d2806c 100644
--- a/cli/dts/lib.es2015.symbol.d.ts
+++ b/cli/tsc/dts/lib.es2015.symbol.d.ts
diff --git a/cli/dts/lib.es2015.symbol.wellknown.d.ts b/cli/tsc/dts/lib.es2015.symbol.wellknown.d.ts
index b1e326436..b1e326436 100644
--- a/cli/dts/lib.es2015.symbol.wellknown.d.ts
+++ b/cli/tsc/dts/lib.es2015.symbol.wellknown.d.ts
diff --git a/cli/dts/lib.es2016.array.include.d.ts b/cli/tsc/dts/lib.es2016.array.include.d.ts
index 6bc6ef30e..6bc6ef30e 100644
--- a/cli/dts/lib.es2016.array.include.d.ts
+++ b/cli/tsc/dts/lib.es2016.array.include.d.ts
diff --git a/cli/dts/lib.es2016.d.ts b/cli/tsc/dts/lib.es2016.d.ts
index ade8175f5..ade8175f5 100644
--- a/cli/dts/lib.es2016.d.ts
+++ b/cli/tsc/dts/lib.es2016.d.ts
diff --git a/cli/dts/lib.es2016.full.d.ts b/cli/tsc/dts/lib.es2016.full.d.ts
index ad61d2325..ad61d2325 100644
--- a/cli/dts/lib.es2016.full.d.ts
+++ b/cli/tsc/dts/lib.es2016.full.d.ts
diff --git a/cli/dts/lib.es2017.d.ts b/cli/tsc/dts/lib.es2017.d.ts
index d89f58071..d89f58071 100644
--- a/cli/dts/lib.es2017.d.ts
+++ b/cli/tsc/dts/lib.es2017.d.ts
diff --git a/cli/dts/lib.es2017.full.d.ts b/cli/tsc/dts/lib.es2017.full.d.ts
index f57c645c5..f57c645c5 100644
--- a/cli/dts/lib.es2017.full.d.ts
+++ b/cli/tsc/dts/lib.es2017.full.d.ts
diff --git a/cli/dts/lib.es2017.intl.d.ts b/cli/tsc/dts/lib.es2017.intl.d.ts
index c2ab43e8f..c2ab43e8f 100644
--- a/cli/dts/lib.es2017.intl.d.ts
+++ b/cli/tsc/dts/lib.es2017.intl.d.ts
diff --git a/cli/dts/lib.es2017.object.d.ts b/cli/tsc/dts/lib.es2017.object.d.ts
index 4900d9261..4900d9261 100644
--- a/cli/dts/lib.es2017.object.d.ts
+++ b/cli/tsc/dts/lib.es2017.object.d.ts
diff --git a/cli/dts/lib.es2017.sharedmemory.d.ts b/cli/tsc/dts/lib.es2017.sharedmemory.d.ts
index 3a4ea26bd..3a4ea26bd 100644
--- a/cli/dts/lib.es2017.sharedmemory.d.ts
+++ b/cli/tsc/dts/lib.es2017.sharedmemory.d.ts
diff --git a/cli/dts/lib.es2017.string.d.ts b/cli/tsc/dts/lib.es2017.string.d.ts
index 4b219e6c5..4b219e6c5 100644
--- a/cli/dts/lib.es2017.string.d.ts
+++ b/cli/tsc/dts/lib.es2017.string.d.ts
diff --git a/cli/dts/lib.es2017.typedarrays.d.ts b/cli/tsc/dts/lib.es2017.typedarrays.d.ts
index ac6984100..ac6984100 100644
--- a/cli/dts/lib.es2017.typedarrays.d.ts
+++ b/cli/tsc/dts/lib.es2017.typedarrays.d.ts
diff --git a/cli/dts/lib.es2018.asyncgenerator.d.ts b/cli/tsc/dts/lib.es2018.asyncgenerator.d.ts
index 546a8c2e9..546a8c2e9 100644
--- a/cli/dts/lib.es2018.asyncgenerator.d.ts
+++ b/cli/tsc/dts/lib.es2018.asyncgenerator.d.ts
diff --git a/cli/dts/lib.es2018.asynciterable.d.ts b/cli/tsc/dts/lib.es2018.asynciterable.d.ts
index 88f9d8fba..88f9d8fba 100644
--- a/cli/dts/lib.es2018.asynciterable.d.ts
+++ b/cli/tsc/dts/lib.es2018.asynciterable.d.ts
diff --git a/cli/dts/lib.es2018.d.ts b/cli/tsc/dts/lib.es2018.d.ts
index db0a3d1b0..db0a3d1b0 100644
--- a/cli/dts/lib.es2018.d.ts
+++ b/cli/tsc/dts/lib.es2018.d.ts
diff --git a/cli/dts/lib.es2018.full.d.ts b/cli/tsc/dts/lib.es2018.full.d.ts
index b517dc590..b517dc590 100644
--- a/cli/dts/lib.es2018.full.d.ts
+++ b/cli/tsc/dts/lib.es2018.full.d.ts
diff --git a/cli/dts/lib.es2018.intl.d.ts b/cli/tsc/dts/lib.es2018.intl.d.ts
index 97c0eedb0..97c0eedb0 100644
--- a/cli/dts/lib.es2018.intl.d.ts
+++ b/cli/tsc/dts/lib.es2018.intl.d.ts
diff --git a/cli/dts/lib.es2018.promise.d.ts b/cli/tsc/dts/lib.es2018.promise.d.ts
index 1a95d7c87..1a95d7c87 100644
--- a/cli/dts/lib.es2018.promise.d.ts
+++ b/cli/tsc/dts/lib.es2018.promise.d.ts
diff --git a/cli/dts/lib.es2018.regexp.d.ts b/cli/tsc/dts/lib.es2018.regexp.d.ts
index 9cb3710b5..9cb3710b5 100644
--- a/cli/dts/lib.es2018.regexp.d.ts
+++ b/cli/tsc/dts/lib.es2018.regexp.d.ts
diff --git a/cli/dts/lib.es2019.array.d.ts b/cli/tsc/dts/lib.es2019.array.d.ts
index 160748346..160748346 100644
--- a/cli/dts/lib.es2019.array.d.ts
+++ b/cli/tsc/dts/lib.es2019.array.d.ts
diff --git a/cli/dts/lib.es2019.d.ts b/cli/tsc/dts/lib.es2019.d.ts
index 5eab0e2c2..5eab0e2c2 100644
--- a/cli/dts/lib.es2019.d.ts
+++ b/cli/tsc/dts/lib.es2019.d.ts
diff --git a/cli/dts/lib.es2019.full.d.ts b/cli/tsc/dts/lib.es2019.full.d.ts
index 1ebdb1fe0..1ebdb1fe0 100644
--- a/cli/dts/lib.es2019.full.d.ts
+++ b/cli/tsc/dts/lib.es2019.full.d.ts
diff --git a/cli/dts/lib.es2019.object.d.ts b/cli/tsc/dts/lib.es2019.object.d.ts
index 09b937af0..09b937af0 100644
--- a/cli/dts/lib.es2019.object.d.ts
+++ b/cli/tsc/dts/lib.es2019.object.d.ts
diff --git a/cli/dts/lib.es2019.string.d.ts b/cli/tsc/dts/lib.es2019.string.d.ts
index c7150833b..c7150833b 100644
--- a/cli/dts/lib.es2019.string.d.ts
+++ b/cli/tsc/dts/lib.es2019.string.d.ts
diff --git a/cli/dts/lib.es2019.symbol.d.ts b/cli/tsc/dts/lib.es2019.symbol.d.ts
index 58b38d5f9..58b38d5f9 100644
--- a/cli/dts/lib.es2019.symbol.d.ts
+++ b/cli/tsc/dts/lib.es2019.symbol.d.ts
diff --git a/cli/dts/lib.es2020.bigint.d.ts b/cli/tsc/dts/lib.es2020.bigint.d.ts
index a0ebccaf9..a0ebccaf9 100644
--- a/cli/dts/lib.es2020.bigint.d.ts
+++ b/cli/tsc/dts/lib.es2020.bigint.d.ts
diff --git a/cli/dts/lib.es2020.d.ts b/cli/tsc/dts/lib.es2020.d.ts
index ae81c40b4..ae81c40b4 100644
--- a/cli/dts/lib.es2020.d.ts
+++ b/cli/tsc/dts/lib.es2020.d.ts
diff --git a/cli/dts/lib.es2020.date.d.ts b/cli/tsc/dts/lib.es2020.date.d.ts
index 8eeb6b981..8eeb6b981 100644
--- a/cli/dts/lib.es2020.date.d.ts
+++ b/cli/tsc/dts/lib.es2020.date.d.ts
diff --git a/cli/dts/lib.es2020.full.d.ts b/cli/tsc/dts/lib.es2020.full.d.ts
index 165b566d2..165b566d2 100644
--- a/cli/dts/lib.es2020.full.d.ts
+++ b/cli/tsc/dts/lib.es2020.full.d.ts
diff --git a/cli/dts/lib.es2020.intl.d.ts b/cli/tsc/dts/lib.es2020.intl.d.ts
index 5bce3812d..5bce3812d 100644
--- a/cli/dts/lib.es2020.intl.d.ts
+++ b/cli/tsc/dts/lib.es2020.intl.d.ts
diff --git a/cli/dts/lib.es2020.number.d.ts b/cli/tsc/dts/lib.es2020.number.d.ts
index 89f6a2723..89f6a2723 100644
--- a/cli/dts/lib.es2020.number.d.ts
+++ b/cli/tsc/dts/lib.es2020.number.d.ts
diff --git a/cli/dts/lib.es2020.promise.d.ts b/cli/tsc/dts/lib.es2020.promise.d.ts
index 8107144ef..8107144ef 100644
--- a/cli/dts/lib.es2020.promise.d.ts
+++ b/cli/tsc/dts/lib.es2020.promise.d.ts
diff --git a/cli/dts/lib.es2020.sharedmemory.d.ts b/cli/tsc/dts/lib.es2020.sharedmemory.d.ts
index f86c5ad50..f86c5ad50 100644
--- a/cli/dts/lib.es2020.sharedmemory.d.ts
+++ b/cli/tsc/dts/lib.es2020.sharedmemory.d.ts
diff --git a/cli/dts/lib.es2020.string.d.ts b/cli/tsc/dts/lib.es2020.string.d.ts
index 19c730752..19c730752 100644
--- a/cli/dts/lib.es2020.string.d.ts
+++ b/cli/tsc/dts/lib.es2020.string.d.ts
diff --git a/cli/dts/lib.es2020.symbol.wellknown.d.ts b/cli/tsc/dts/lib.es2020.symbol.wellknown.d.ts
index 7df0a2f45..7df0a2f45 100644
--- a/cli/dts/lib.es2020.symbol.wellknown.d.ts
+++ b/cli/tsc/dts/lib.es2020.symbol.wellknown.d.ts
diff --git a/cli/dts/lib.es2021.d.ts b/cli/tsc/dts/lib.es2021.d.ts
index 74b5288d1..74b5288d1 100644
--- a/cli/dts/lib.es2021.d.ts
+++ b/cli/tsc/dts/lib.es2021.d.ts
diff --git a/cli/dts/lib.es2021.full.d.ts b/cli/tsc/dts/lib.es2021.full.d.ts
index 534887377..534887377 100644
--- a/cli/dts/lib.es2021.full.d.ts
+++ b/cli/tsc/dts/lib.es2021.full.d.ts
diff --git a/cli/dts/lib.es2021.intl.d.ts b/cli/tsc/dts/lib.es2021.intl.d.ts
index e66ebb1af..e66ebb1af 100644
--- a/cli/dts/lib.es2021.intl.d.ts
+++ b/cli/tsc/dts/lib.es2021.intl.d.ts
diff --git a/cli/dts/lib.es2021.promise.d.ts b/cli/tsc/dts/lib.es2021.promise.d.ts
index e3db43ffa..e3db43ffa 100644
--- a/cli/dts/lib.es2021.promise.d.ts
+++ b/cli/tsc/dts/lib.es2021.promise.d.ts
diff --git a/cli/dts/lib.es2021.string.d.ts b/cli/tsc/dts/lib.es2021.string.d.ts
index 89b27e2fe..89b27e2fe 100644
--- a/cli/dts/lib.es2021.string.d.ts
+++ b/cli/tsc/dts/lib.es2021.string.d.ts
diff --git a/cli/dts/lib.es2021.weakref.d.ts b/cli/tsc/dts/lib.es2021.weakref.d.ts
index eb7764242..eb7764242 100644
--- a/cli/dts/lib.es2021.weakref.d.ts
+++ b/cli/tsc/dts/lib.es2021.weakref.d.ts
diff --git a/cli/dts/lib.es2022.array.d.ts b/cli/tsc/dts/lib.es2022.array.d.ts
index 1c117c530..1c117c530 100644
--- a/cli/dts/lib.es2022.array.d.ts
+++ b/cli/tsc/dts/lib.es2022.array.d.ts
diff --git a/cli/dts/lib.es2022.d.ts b/cli/tsc/dts/lib.es2022.d.ts
index 83eb960c4..83eb960c4 100644
--- a/cli/dts/lib.es2022.d.ts
+++ b/cli/tsc/dts/lib.es2022.d.ts
diff --git a/cli/dts/lib.es2022.error.d.ts b/cli/tsc/dts/lib.es2022.error.d.ts
index 4b16e0912..4b16e0912 100644
--- a/cli/dts/lib.es2022.error.d.ts
+++ b/cli/tsc/dts/lib.es2022.error.d.ts
diff --git a/cli/dts/lib.es2022.full.d.ts b/cli/tsc/dts/lib.es2022.full.d.ts
index 19e78d48d..19e78d48d 100644
--- a/cli/dts/lib.es2022.full.d.ts
+++ b/cli/tsc/dts/lib.es2022.full.d.ts
diff --git a/cli/dts/lib.es2022.intl.d.ts b/cli/tsc/dts/lib.es2022.intl.d.ts
index ff487a11c..ff487a11c 100644
--- a/cli/dts/lib.es2022.intl.d.ts
+++ b/cli/tsc/dts/lib.es2022.intl.d.ts
diff --git a/cli/dts/lib.es2022.object.d.ts b/cli/tsc/dts/lib.es2022.object.d.ts
index 2fe2a1917..2fe2a1917 100644
--- a/cli/dts/lib.es2022.object.d.ts
+++ b/cli/tsc/dts/lib.es2022.object.d.ts
diff --git a/cli/dts/lib.es2022.sharedmemory.d.ts b/cli/tsc/dts/lib.es2022.sharedmemory.d.ts
index 43b9b88dc..43b9b88dc 100644
--- a/cli/dts/lib.es2022.sharedmemory.d.ts
+++ b/cli/tsc/dts/lib.es2022.sharedmemory.d.ts
diff --git a/cli/dts/lib.es2022.string.d.ts b/cli/tsc/dts/lib.es2022.string.d.ts
index fbfc17f16..fbfc17f16 100644
--- a/cli/dts/lib.es2022.string.d.ts
+++ b/cli/tsc/dts/lib.es2022.string.d.ts
diff --git a/cli/dts/lib.es5.d.ts b/cli/tsc/dts/lib.es5.d.ts
index 28ca95abe..28ca95abe 100644
--- a/cli/dts/lib.es5.d.ts
+++ b/cli/tsc/dts/lib.es5.d.ts
diff --git a/cli/dts/lib.es6.d.ts b/cli/tsc/dts/lib.es6.d.ts
index fabf43861..fabf43861 100644
--- a/cli/dts/lib.es6.d.ts
+++ b/cli/tsc/dts/lib.es6.d.ts
diff --git a/cli/dts/lib.esnext.array.d.ts b/cli/tsc/dts/lib.esnext.array.d.ts
index 527982ef7..527982ef7 100644
--- a/cli/dts/lib.esnext.array.d.ts
+++ b/cli/tsc/dts/lib.esnext.array.d.ts
diff --git a/cli/dts/lib.esnext.d.ts b/cli/tsc/dts/lib.esnext.d.ts
index 9605d2f9e..9605d2f9e 100644
--- a/cli/dts/lib.esnext.d.ts
+++ b/cli/tsc/dts/lib.esnext.d.ts
diff --git a/cli/dts/lib.esnext.full.d.ts b/cli/tsc/dts/lib.esnext.full.d.ts
index be12ba8e4..be12ba8e4 100644
--- a/cli/dts/lib.esnext.full.d.ts
+++ b/cli/tsc/dts/lib.esnext.full.d.ts
diff --git a/cli/dts/lib.esnext.intl.d.ts b/cli/tsc/dts/lib.esnext.intl.d.ts
index 0eaac02b9..0eaac02b9 100644
--- a/cli/dts/lib.esnext.intl.d.ts
+++ b/cli/tsc/dts/lib.esnext.intl.d.ts
diff --git a/cli/dts/lib.scripthost.d.ts b/cli/tsc/dts/lib.scripthost.d.ts
index 8ac760bab..8ac760bab 100644
--- a/cli/dts/lib.scripthost.d.ts
+++ b/cli/tsc/dts/lib.scripthost.d.ts
diff --git a/cli/dts/lib.webworker.d.ts b/cli/tsc/dts/lib.webworker.d.ts
index 30f83bc84..30f83bc84 100644
--- a/cli/dts/lib.webworker.d.ts
+++ b/cli/tsc/dts/lib.webworker.d.ts
diff --git a/cli/dts/lib.webworker.importscripts.d.ts b/cli/tsc/dts/lib.webworker.importscripts.d.ts
index 73bd28166..73bd28166 100644
--- a/cli/dts/lib.webworker.importscripts.d.ts
+++ b/cli/tsc/dts/lib.webworker.importscripts.d.ts
diff --git a/cli/dts/lib.webworker.iterable.d.ts b/cli/tsc/dts/lib.webworker.iterable.d.ts
index 3d9e75d00..3d9e75d00 100644
--- a/cli/dts/lib.webworker.iterable.d.ts
+++ b/cli/tsc/dts/lib.webworker.iterable.d.ts
diff --git a/cli/dts/typescript.d.ts b/cli/tsc/dts/typescript.d.ts
index 0fd60ae88..0fd60ae88 100644
--- a/cli/dts/typescript.d.ts
+++ b/cli/tsc/dts/typescript.d.ts
diff --git a/cli/tsc.rs b/cli/tsc/mod.rs
index 766bf09e3..a8cb7bcab 100644
--- a/cli/tsc.rs
+++ b/cli/tsc/mod.rs
@@ -1,7 +1,6 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
use crate::args::TsConfig;
-use crate::diagnostics::Diagnostics;
use crate::graph_util::GraphData;
use crate::graph_util::ModuleEntry;
use crate::node;
@@ -40,6 +39,14 @@ use std::fmt;
use std::path::PathBuf;
use std::sync::Arc;
+mod diagnostics;
+
+pub use self::diagnostics::Diagnostic;
+pub use self::diagnostics::DiagnosticCategory;
+pub use self::diagnostics::DiagnosticMessageChain;
+pub use self::diagnostics::Diagnostics;
+pub use self::diagnostics::Position;
+
// Declaration files
pub static DENO_NS_LIB: &str = include_str!("dts/lib.deno.ns.d.ts");
@@ -85,7 +92,7 @@ pub fn compiler_snapshot() -> Snapshot {
macro_rules! inc {
($e:expr) => {
- include_str!(concat!("dts/", $e))
+ include_str!(concat!("./dts/", $e))
};
}
@@ -797,10 +804,10 @@ pub fn exec(request: Request) -> Result<Response, AnyError> {
#[cfg(test)]
mod tests {
+ use super::Diagnostic;
+ use super::DiagnosticCategory;
use super::*;
use crate::args::TsConfig;
- use crate::diagnostics::Diagnostic;
- use crate::diagnostics::DiagnosticCategory;
use deno_core::futures::future;
use deno_core::OpState;
use deno_graph::ModuleKind;
diff --git a/tools/lint.js b/tools/lint.js
index 45c94abdf..4e842c2b9 100755
--- a/tools/lint.js
+++ b/tools/lint.js
@@ -24,7 +24,7 @@ async function dlint() {
":!:cli/bench/testdata/express-router.js",
":!:cli/bench/testdata/react-dom.js",
":!:cli/compilers/wasm_wrap.js",
- ":!:cli/dts/**",
+ ":!:cli/tsc/dts/**",
":!:cli/tests/testdata/encoding/**",
":!:cli/tests/testdata/error_syntax.js",
":!:cli/tests/testdata/fmt/**",