summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2020-07-20 19:49:57 -0400
committerGitHub <noreply@github.com>2020-07-20 19:49:57 -0400
commit2460689b1a9582ef6ab8c5fa429e281c88bc14d1 (patch)
treec6e8f7b8fda45004c0321eb2ac88a5bfb5905483
parent903d28f872b90a800c64339dea058806cde0be67 (diff)
Remove deno_typescript (#6813)
-rw-r--r--.dprintrc.json2
-rw-r--r--.gitmodules2
-rw-r--r--Cargo.lock10
-rw-r--r--Cargo.toml1
-rw-r--r--cli/Cargo.toml4
-rw-r--r--cli/README.md2
-rw-r--r--cli/build.rs24
-rw-r--r--cli/js2/99_main_compiler.js2
-rw-r--r--cli/main.rs1
-rw-r--r--cli/op_fetch_asset.rs (renamed from deno_typescript/lib.rs)12
-rw-r--r--cli/ops/compiler.rs2
-rw-r--r--cli/system_loader.js (renamed from deno_typescript/system_loader.js)0
-rw-r--r--cli/system_loader_es5.js (renamed from deno_typescript/system_loader_es5.js)0
-rw-r--r--cli/tests/unit/README.md3
m---------cli/typescript (renamed from deno_typescript/typescript)0
-rw-r--r--deno_typescript/Cargo.toml24
-rw-r--r--deno_typescript/README.md82
17 files changed, 23 insertions, 148 deletions
diff --git a/.dprintrc.json b/.dprintrc.json
index eb050a17e..c408bb8d4 100644
--- a/.dprintrc.json
+++ b/.dprintrc.json
@@ -12,7 +12,7 @@
"includes": ["**/*.{ts,tsx,js,jsx,json,md}"],
"excludes": [
".cargo_home",
- "deno_typescript/typescript",
+ "cli/typescript",
"gh-pages",
"std/**/testdata",
"std/**/vendor",
diff --git a/.gitmodules b/.gitmodules
index c35100865..480dd0206 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,7 +2,7 @@
path = third_party
url = https://github.com/denoland/deno_third_party.git
[submodule "typescript"]
- path = deno_typescript/typescript
+ path = cli/typescript
url = https://github.com/microsoft/TypeScript.git
fetchRecurseSubmodules = false
shallow = true
diff --git a/Cargo.lock b/Cargo.lock
index 1f1aeb62e..f0856e3a2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -386,7 +386,6 @@ dependencies = [
"clap",
"deno_core",
"deno_lint",
- "deno_typescript",
"dissimilar",
"dlopen",
"futures 0.3.5",
@@ -460,15 +459,6 @@ dependencies = [
]
[[package]]
-name = "deno_typescript"
-version = "0.49.0"
-dependencies = [
- "deno_core",
- "serde",
- "serde_json",
-]
-
-[[package]]
name = "derive_deref"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 00304f039..ea0e02cf9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,7 +2,6 @@
members = [
"cli",
"core",
- "deno_typescript",
"test_plugin",
"test_util",
]
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 25e0bdc31..29cd04ecd 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -16,7 +16,8 @@ path = "main.rs"
[build-dependencies]
deno_core = { path = "../core", version = "0.49.0" }
-deno_typescript = { path = "../deno_typescript", version = "0.49.0" }
+serde = { version = "1.0.112", features = ["derive"] }
+serde_json = { version = "1.0.55", features = [ "preserve_order" ] }
[target.'cfg(windows)'.build-dependencies]
winres = "0.1"
@@ -25,7 +26,6 @@ winapi = "0.3.8"
[dependencies]
deno_core = { path = "../core", version = "0.49.0" }
deno_lint = "0.1.16"
-deno_typescript = { path = "../deno_typescript", version = "0.49.0" }
atty = "0.2.14"
base64 = "0.12.2"
diff --git a/cli/README.md b/cli/README.md
index 778b279ec..18bee8a41 100644
--- a/cli/README.md
+++ b/cli/README.md
@@ -5,4 +5,4 @@
This provides the actual deno executable and the user-facing APIs.
-The deno crate uses the deno_core and deno_typescript to provide the executable.
+The deno crate uses the deno_core to provide the executable.
diff --git a/cli/build.rs b/cli/build.rs
index 89958325b..31dfc0aba 100644
--- a/cli/build.rs
+++ b/cli/build.rs
@@ -1,4 +1,6 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+//
+mod op_fetch_asset;
use deno_core::js_check;
use deno_core::CoreIsolate;
@@ -64,16 +66,23 @@ fn create_compiler_snapshot(
);
runtime_isolate.register_op(
"op_fetch_asset",
- deno_typescript::op_fetch_asset(custom_libs),
+ op_fetch_asset::op_fetch_asset(custom_libs),
);
- js_check(
- runtime_isolate.execute("typescript.js", deno_typescript::TYPESCRIPT_CODE),
- );
+ js_check(runtime_isolate.execute(
+ "typescript.js",
+ &std::fs::read_to_string("typescript/lib/typescript.js").unwrap(),
+ ));
create_snapshot(runtime_isolate, snapshot_path, files);
}
+fn ts_version() -> String {
+ let data = include_str!("typescript/package.json");
+ let pkg: serde_json::Value = serde_json::from_str(data).unwrap();
+ pkg["version"].as_str().unwrap().to_string()
+}
+
fn main() {
// Don't build V8 if "cargo doc" is being run. This is to support docs.rs.
if env::var_os("RUSTDOCFLAGS").is_some() {
@@ -81,12 +90,9 @@ fn main() {
}
// To debug snapshot issues uncomment:
- // deno_typescript::trace_serializer();
+ // op_fetch_asset::trace_serializer();
- println!(
- "cargo:rustc-env=TS_VERSION={}",
- deno_typescript::ts_version()
- );
+ println!("cargo:rustc-env=TS_VERSION={}", ts_version());
println!(
"cargo:rustc-env=TARGET={}",
diff --git a/cli/js2/99_main_compiler.js b/cli/js2/99_main_compiler.js
index b9abdde7d..d64896862 100644
--- a/cli/js2/99_main_compiler.js
+++ b/cli/js2/99_main_compiler.js
@@ -1,7 +1,5 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-// TODO(ry) Combine this implementation with //deno_typescript/compiler_main.js
-
// This module is the entry point for "compiler" isolate, ie. the one
// that is created when Deno needs to compile TS/WASM to JS.
//
diff --git a/cli/main.rs b/cli/main.rs
index cf25ed324..4a87db922 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -49,6 +49,7 @@ mod metrics;
mod module_graph;
pub mod msg;
pub mod op_error;
+mod op_fetch_asset;
pub mod ops;
pub mod permissions;
mod repl;
diff --git a/deno_typescript/lib.rs b/cli/op_fetch_asset.rs
index f01993464..114aff133 100644
--- a/deno_typescript/lib.rs
+++ b/cli/op_fetch_asset.rs
@@ -1,7 +1,5 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-extern crate deno_core;
-extern crate serde;
-extern crate serde_json;
+// Note: this module is used both in build.rs and main.rs.
pub use deno_core::v8_set_flags;
use deno_core::CoreIsolateState;
@@ -11,14 +9,6 @@ use deno_core::ZeroCopyBuf;
use std::collections::HashMap;
use std::path::PathBuf;
-pub static TYPESCRIPT_CODE: &str = include_str!("typescript/lib/typescript.js");
-
-pub fn ts_version() -> String {
- let data = include_str!("typescript/package.json");
- let pkg: serde_json::Value = serde_json::from_str(data).unwrap();
- pkg["version"].as_str().unwrap().to_string()
-}
-
fn get_asset(name: &str) -> Option<&'static str> {
macro_rules! inc {
($e:expr) => {
diff --git a/cli/ops/compiler.rs b/cli/ops/compiler.rs
index 2e5842c0f..9e56ef436 100644
--- a/cli/ops/compiler.rs
+++ b/cli/ops/compiler.rs
@@ -8,6 +8,6 @@ pub fn init(i: &mut CoreIsolate, _s: &State) {
// TODO(bartlomieju): is this op even required?
i.register_op(
"op_fetch_asset",
- deno_typescript::op_fetch_asset(custom_assets),
+ crate::op_fetch_asset::op_fetch_asset(custom_assets),
);
}
diff --git a/deno_typescript/system_loader.js b/cli/system_loader.js
index c96b2c7f6..c96b2c7f6 100644
--- a/deno_typescript/system_loader.js
+++ b/cli/system_loader.js
diff --git a/deno_typescript/system_loader_es5.js b/cli/system_loader_es5.js
index 91bae136a..91bae136a 100644
--- a/deno_typescript/system_loader_es5.js
+++ b/cli/system_loader_es5.js
diff --git a/cli/tests/unit/README.md b/cli/tests/unit/README.md
index 1546038c4..e15ad7080 100644
--- a/cli/tests/unit/README.md
+++ b/cli/tests/unit/README.md
@@ -2,9 +2,6 @@
Files in this directory are unit tests for Deno runtime.
-They are run under compiled Deno binary as opposed to files in `cli/js/` which
-are bundled and snapshotted using `deno_typescript` crate.
-
Testing Deno runtime code requires checking API under different runtime
permissions (ie. running with different `--allow-*` flags). To accomplish this
all tests exercised are created using `unitTest()` function.
diff --git a/deno_typescript/typescript b/cli/typescript
-Subproject 551f0dd9a1b57ecd527a665b0af7fc98cd107af
+Subproject 551f0dd9a1b57ecd527a665b0af7fc98cd107af
diff --git a/deno_typescript/Cargo.toml b/deno_typescript/Cargo.toml
deleted file mode 100644
index 10dd8103f..000000000
--- a/deno_typescript/Cargo.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-[package]
-name = "deno_typescript"
-version = "0.49.0"
-license = "MIT"
-description = "To compile TypeScript to a snapshot during build.rs"
-repository = "https://github.com/denoland/deno"
-authors = ["the Deno authors"]
-edition = "2018"
-
-exclude = [
- "typescript/tests/*",
- "typescript/src/*",
- "typescript/scripts/*",
- "typescript/doc/*",
- "typescript/lib/*/*.json",
-]
-
-[lib]
-path = "lib.rs"
-
-[dependencies]
-deno_core = { path = "../core", version = "0.49.0" }
-serde_json = "1.0.55"
-serde = { version = "1.0.112", features = ["derive"] }
diff --git a/deno_typescript/README.md b/deno_typescript/README.md
deleted file mode 100644
index 7ee4cf1df..000000000
--- a/deno_typescript/README.md
+++ /dev/null
@@ -1,82 +0,0 @@
-# Deno TypeScript Crate
-
-[![crates](https://img.shields.io/crates/v/deno_typescript.svg)](https://crates.io/crates/deno_typescript)
-[![docs](https://docs.rs/deno_typescript/badge.svg)](https://docs.rs/deno_typescript)
-
-This crate provides utilities to compile typescript, bundle it up, and create a
-V8 snapshot, all during build. Snapshots allow the executable to startup fast.
-
-## `system_loader.js`
-
-This is a minimalistic implementation of a
-[System](https://github.com/systemjs/systemjs) module loader. It is specifically
-designed to load modules that are emitted from TypeScript the module format is
-`"system"` and a single `"outfile"` is supplied, which is commonly refereed to
-as a bundle.
-
-Because this loader becomes part of an emitted bundle under `Deno.bundle()` and
-`deno bundle`, it has minimal comments and very terse and cryptic syntax, which
-isn't very self documenting. Because of this, a guide to this file is provided
-here.
-
-A bundle of System modules expects a `System.register()` function to be in scope
-for registering the modules. Modules that are emitted from TypeScript in a
-single out file always pass 3 arguments, the module specifier, an array of
-strings of modules specifiers that this module depends upon, and finally a
-module factory.
-
-The module factory requires two arguments to be passed, a function for exporting
-values and a context object. We have to bind to some information in the
-environment to provide these, so `gC` gets the context and `gE` gets the export
-function to be passed to a factory. The context contains information like the
-module specifier, a reference to the dynamic `import()` and the equivalent of
-`import.meta`. The export function takes either two arguments of an named export
-and its value, or an object record of keys of the named exports and the values
-of the exports.
-
-Currently, TypeScript does not re-write dynamic imports which resolve to static
-strings (see
-[microsoft/TypeScript#37429](https://github.com/microsoft/TypeScript/issues/37429)),
-which means the import specifier for a dynamic import which has been
-incorporated in the bundle does not automatically match a module specifier that
-has been registered in the bundle. The `di()` function provides the capability
-to try to identify relative import specifiers and resolve them to a specifier
-inside the bundle. If it does this, it resolves with the exports of the module,
-otherwise it simply passes the module specifier to `import()` and returns the
-resulting promise.
-
-The running of the factories is handled by `rF()`. When the factory is run, it
-returns an object with two keys, `execute` and `setters`. `execute` is a
-function which finalises that instantiation of the module, and `setters` which
-is an array of functions that sets the value of the exports of the dependent
-module.
-
-The `gExp()` and `gExpA()` are the recursive functions which returns the exports
-of a given module. It will determine if the module has been fully initialized,
-and if not, it will gather the exports of the dependencies, set those exports in
-the module via the `setters` and run the modules `execute()`. It will then
-always return or resolve with the exports of the module.
-
-As of TypeScript 3.8, top level await is supported when emitting ES or System
-modules. When Deno creates a module bundle, it creates a valid, self-contained
-ES module which exports the exports of the "main" module that was used when the
-bundle was created. If a module in the bundle requires top-level-await, then the
-`execute()` function is emitted as an async function, returning a promise. This
-means that in order to export the values of the main module, the instantiation
-needs to utilise top-level-await as well.
-
-At the time of this writing, while V8 and other JavaScript engines have
-implemented top-level-await, no browsers have it implemented, meaning that most
-browsers could not consume modules that require top-level-await.
-
-In order to allow more browsers to consume bundles, there is an argument that is
-passed to the `__instantiate()` function which determines if the code is
-bootstrapped asynchronously or not. When emitting a bundle that contains a
-module that requires top-level-await, Deno will detect this and utilise
-`await __instantiate(main, true)`.
-
-The `system_loader_es5.js` is a transpiled version of `system_loader.js` that is
-designed to work with ES5 or later, and will be used when the bundle target is <
-ES2017. While ES3 is still a potential target which can be passed in a
-`tsconfig.json` to Deno, any resulting bundle will not be compatible, as there
-is a need to utilise items like `Object.defineProperty()`.