refactor: cleanup compiler pipeline (#2686)

* remove fetch_source_file_and_maybe_compile_async and 
  replace it with State.fetch_compiled_module

* remove SourceFile.js_source()

* introduce CompiledModule which is basically the same as
  deno::SourceInfo and represents arbitrary file that has been 
  compiled to JS module

* introduce //cli/compilers module containing all compilers

* introduce JsCompiler which is a no-op compiler
  - output is the same as input, no compilation takes place
  - it is used for MediaType::JavaScript and MediaType::Unknown

* introduce JsonCompiler that wraps JSON in default export

* support JS-to-JS compilation using checkJs
This commit is contained in:
Bartek Iwańczuk 2019-07-31 19:16:03 +02:00 committed by Ryan Dahl
parent e7cee29c84
commit 2e1ab82321
14 changed files with 353 additions and 199 deletions

20
cli/compilers/mod.rs Normal file
View file

@ -0,0 +1,20 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
use deno::ErrBox;
use futures::Future;
mod js;
mod json;
mod ts;
pub use js::JsCompiler;
pub use json::JsonCompiler;
pub use ts::TsCompiler;
#[derive(Debug, Clone)]
pub struct CompiledModule {
pub code: String,
pub name: String,
}
pub type CompiledModuleFuture =
dyn Future<Item = CompiledModule, Error = ErrBox> + Send;