From 2e1ab8232156a23afd22834c1e707fb3403c0db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 31 Jul 2019 19:16:03 +0200 Subject: 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 --- cli/compilers/json.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 cli/compilers/json.rs (limited to 'cli/compilers/json.rs') 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 { + 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)) + } +} -- cgit v1.2.3