diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2020-03-19 03:39:53 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-18 12:39:53 -0400 |
commit | da8cb408c878aa6e90542e26173f1f14b5254d29 (patch) | |
tree | fda19fdecabb75cae8b2b5d3c72cdb9012a0af26 /cli/ops | |
parent | 83f49161953c0c79056a56a19754fbf298f53f21 (diff) |
Provide compiled JSON to TypeScript compiler. (#4404)
Fixes #4101
Previously, we would just provide the raw JSON to the TypeScript
compiler worker, but TypeScript does not transform JSON. This caused
a problem when emitting a bundle, that the JSON would just be "inlined"
into the output, instead of being transformed into a module.
This fixes this problem by providing the compiled JSON to the TypeScript
compiler, so TypeScript just sees JSON as a "normal" TypeScript module.
Diffstat (limited to 'cli/ops')
-rw-r--r-- | cli/ops/compiler.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/cli/ops/compiler.rs b/cli/ops/compiler.rs index e6ed364da..baa7b4c1c 100644 --- a/cli/ops/compiler.rs +++ b/cli/ops/compiler.rs @@ -136,9 +136,9 @@ fn op_fetch_source_files( } _ => f, }; - // Special handling of Wasm files: + // Special handling of WASM and JSON files: // compile them into JS first! - // This allows TS to do correct export types. + // This allows TS to do correct export types as well as bundles. let source_code = match file.media_type { msg::MediaType::Wasm => { global_state @@ -148,6 +148,14 @@ fn op_fetch_source_files( .map_err(|e| OpError::other(e.to_string()))? .code } + msg::MediaType::Json => { + global_state + .json_compiler + .compile(&file) + .await + .map_err(|e| OpError::other(e.to_string()))? + .code + } _ => String::from_utf8(file.source_code).unwrap(), }; Ok::<_, OpError>(json!({ |