mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
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:
parent
e7cee29c84
commit
2e1ab82321
14 changed files with 353 additions and 199 deletions
26
cli/compilers/json.rs
Normal file
26
cli/compilers/json.rs
Normal file
|
@ -0,0 +1,26 @@
|
|||
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
|
||||
use crate::compilers::CompiledModule;
|
||||
use crate::compilers::CompiledModuleFuture;
|
||||
use crate::file_fetcher::SourceFile;
|
||||
use crate::state::ThreadSafeState;
|
||||
use std::str;
|
||||
|
||||
pub struct JsonCompiler {}
|
||||
|
||||
impl JsonCompiler {
|
||||
pub fn compile_async(
|
||||
self: &Self,
|
||||
_state: ThreadSafeState,
|
||||
source_file: &SourceFile,
|
||||
) -> Box<CompiledModuleFuture> {
|
||||
let module = CompiledModule {
|
||||
code: format!(
|
||||
"export default {};",
|
||||
str::from_utf8(&source_file.source_code).unwrap()
|
||||
),
|
||||
name: source_file.url.to_string(),
|
||||
};
|
||||
|
||||
Box::new(futures::future::ok(module))
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue