summaryrefslogtreecommitdiff
path: root/cli/compilers/json.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-07-31 19:16:03 +0200
committerRyan Dahl <ry@tinyclouds.org>2019-07-31 13:16:03 -0400
commit2e1ab8232156a23afd22834c1e707fb3403c0db6 (patch)
tree933b5a33aaa27ce359c9b7133a4718baaa730db7 /cli/compilers/json.rs
parente7cee29c849286f9b492eb404634a0387b9a75a0 (diff)
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
Diffstat (limited to 'cli/compilers/json.rs')
-rw-r--r--cli/compilers/json.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/cli/compilers/json.rs b/cli/compilers/json.rs
new file mode 100644
index 000000000..57e44d354
--- /dev/null
+++ b/cli/compilers/json.rs
@@ -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))
+ }
+}