1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 07:14:47 -05:00

cli/msg.rs -> cli/media_type.rs

This commit is contained in:
Ryan Dahl 2020-09-15 10:33:14 -04:00
parent 68099acbc6
commit b2fa903d64
9 changed files with 147 additions and 163 deletions

View file

@ -1,6 +1,6 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
use crate::msg::MediaType;
use crate::media_type::MediaType;
use deno_core::error::AnyError;
use deno_core::ModuleSpecifier;
use std::error::Error;

View file

@ -5,7 +5,7 @@ use crate::http_cache::HttpCache;
use crate::http_util;
use crate::http_util::create_http_client;
use crate::http_util::FetchOnceResult;
use crate::msg;
use crate::media_type::MediaType;
use crate::permissions::Permissions;
use crate::text_encoding;
use deno_core::error::custom_error;
@ -79,7 +79,7 @@ pub struct SourceFile {
pub url: Url,
pub filename: PathBuf,
pub types_header: Option<String>,
pub media_type: msg::MediaType,
pub media_type: MediaType,
pub source_code: TextDocument,
}
@ -573,7 +573,7 @@ impl SourceFileFetcher {
fn map_content_type(
path: &Path,
content_type: Option<&str>,
) -> (msg::MediaType, Option<String>) {
) -> (MediaType, Option<String>) {
match content_type {
Some(content_type) => {
// Sometimes there is additional data after the media type in
@ -587,7 +587,7 @@ fn map_content_type(
| "video/vnd.dlna.mpeg-tts"
| "video/mp2t"
| "application/x-typescript" => {
map_js_like_extension(path, msg::MediaType::TypeScript)
map_js_like_extension(path, MediaType::TypeScript)
}
"application/javascript"
| "text/javascript"
@ -595,15 +595,15 @@ fn map_content_type(
| "text/ecmascript"
| "application/x-javascript"
| "application/node" => {
map_js_like_extension(path, msg::MediaType::JavaScript)
map_js_like_extension(path, MediaType::JavaScript)
}
"application/json" | "text/json" => msg::MediaType::Json,
"application/wasm" => msg::MediaType::Wasm,
"application/json" | "text/json" => MediaType::Json,
"application/wasm" => MediaType::Wasm,
// Handle plain and possibly webassembly
"text/plain" | "application/octet-stream" => msg::MediaType::from(path),
"text/plain" | "application/octet-stream" => MediaType::from(path),
_ => {
debug!("unknown content type: {}", content_type);
msg::MediaType::Unknown
MediaType::Unknown
}
};
@ -614,20 +614,17 @@ fn map_content_type(
(media_type, charset)
}
None => (msg::MediaType::from(path), None),
None => (MediaType::from(path), None),
}
}
fn map_js_like_extension(
path: &Path,
default: msg::MediaType,
) -> msg::MediaType {
fn map_js_like_extension(path: &Path, default: MediaType) -> MediaType {
match path.extension() {
None => default,
Some(os_str) => match os_str.to_str() {
None => default,
Some("jsx") => msg::MediaType::JSX,
Some("tsx") => msg::MediaType::TSX,
Some("jsx") => MediaType::JSX,
Some("tsx") => MediaType::TSX,
Some(_) => default,
},
}
@ -816,7 +813,7 @@ mod tests {
r.source_code.bytes,
&b"export { printHello } from \"./print_hello.ts\";\n"[..]
);
assert_eq!(&(r.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(r.media_type), &MediaType::TypeScript);
let mut metadata =
crate::http_cache::Metadata::read(&cache_filename).unwrap();
@ -847,7 +844,7 @@ mod tests {
);
// If get_source_file does not call remote, this should be JavaScript
// as we modified before! (we do not overwrite .headers.json due to no http fetch)
assert_eq!(&(r2.media_type), &msg::MediaType::JavaScript);
assert_eq!(&(r2.media_type), &MediaType::JavaScript);
let (_, headers) = fetcher_2.http_cache.get(&module_url_1).unwrap();
assert_eq!(
@ -886,7 +883,7 @@ mod tests {
);
// If get_source_file does not call remote, this should be JavaScript
// as we modified before! (we do not overwrite .headers.json due to no http fetch)
assert_eq!(&(r3.media_type), &msg::MediaType::Json);
assert_eq!(&(r3.media_type), &MediaType::Json);
let metadata = crate::http_cache::Metadata::read(&cache_filename).unwrap();
assert_eq!(
metadata
@ -916,7 +913,7 @@ mod tests {
let expected4 = &b"export { printHello } from \"./print_hello.ts\";\n"[..];
assert_eq!(r4.source_code.bytes, expected4);
// Resolved back to TypeScript
assert_eq!(&(r4.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(r4.media_type), &MediaType::TypeScript);
}
#[tokio::test]
@ -943,7 +940,7 @@ mod tests {
let r = result.unwrap();
let expected = b"export const loaded = true;\n";
assert_eq!(r.source_code.bytes, expected);
assert_eq!(&(r.media_type), &msg::MediaType::JavaScript);
assert_eq!(&(r.media_type), &MediaType::JavaScript);
let (_, headers) = fetcher.http_cache.get(&module_url).unwrap();
assert_eq!(
headers
@ -982,7 +979,7 @@ mod tests {
// If get_source_file does not call remote, this should be TypeScript
// as we modified before! (we do not overwrite .headers.json due to no http
// fetch)
assert_eq!(&(r2.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(r2.media_type), &MediaType::TypeScript);
let metadata = crate::http_cache::Metadata::read(&cache_filename).unwrap();
assert_eq!(
metadata
@ -1013,7 +1010,7 @@ mod tests {
assert_eq!(r3.source_code.bytes, expected3);
// Now the old .headers.json file should be overwritten back to JavaScript!
// (due to http fetch)
assert_eq!(&(r3.media_type), &msg::MediaType::JavaScript);
assert_eq!(&(r3.media_type), &MediaType::JavaScript);
let (_, headers) = fetcher.http_cache.get(&module_url).unwrap();
assert_eq!(
headers
@ -1429,7 +1426,7 @@ mod tests {
assert!(result.is_ok());
let r = result.unwrap();
assert_eq!(r.source_code.bytes, b"export const loaded = true;\n");
assert_eq!(&(r.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(r.media_type), &MediaType::TypeScript);
// Modify .metadata.json, make sure read from local
let cache_filename = fetcher.http_cache.get_cache_filename(&module_url);
@ -1448,7 +1445,7 @@ mod tests {
let r2 = result2.unwrap().unwrap();
assert_eq!(r2.source_code.bytes, b"export const loaded = true;\n");
// Not MediaType::TypeScript due to .headers.json modification
assert_eq!(&(r2.media_type), &msg::MediaType::JavaScript);
assert_eq!(&(r2.media_type), &MediaType::JavaScript);
}
#[tokio::test]
@ -1469,7 +1466,7 @@ mod tests {
assert!(result.is_ok());
let r = result.unwrap();
assert_eq!(r.source_code.bytes, b"export const loaded = true;\n");
assert_eq!(&(r.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(r.media_type), &MediaType::TypeScript);
let (_, headers) = fetcher.http_cache.get(module_url).unwrap();
assert_eq!(
headers
@ -1501,7 +1498,7 @@ mod tests {
assert!(result.is_ok());
let r2 = result.unwrap();
assert_eq!(r2.source_code.bytes, b"export const loaded = true;\n");
assert_eq!(&(r2.media_type), &msg::MediaType::JavaScript);
assert_eq!(&(r2.media_type), &MediaType::JavaScript);
let (_, headers) = fetcher.http_cache.get(module_url).unwrap();
assert_eq!(
headers
@ -1533,7 +1530,7 @@ mod tests {
assert!(result.is_ok());
let r3 = result.unwrap();
assert_eq!(r3.source_code.bytes, b"export const loaded = true;\n");
assert_eq!(&(r3.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(r3.media_type), &MediaType::TypeScript);
let (_, headers) = fetcher.http_cache.get(module_url).unwrap();
assert_eq!(
headers
@ -1682,43 +1679,43 @@ mod tests {
// Extension only
assert_eq!(
map_content_type(Path::new("foo/bar.ts"), None).0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar.tsx"), None).0,
msg::MediaType::TSX
MediaType::TSX
);
assert_eq!(
map_content_type(Path::new("foo/bar.d.ts"), None).0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar.js"), None).0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar.txt"), None).0,
msg::MediaType::Unknown
MediaType::Unknown
);
assert_eq!(
map_content_type(Path::new("foo/bar.jsx"), None).0,
msg::MediaType::JSX
MediaType::JSX
);
assert_eq!(
map_content_type(Path::new("foo/bar.json"), None).0,
msg::MediaType::Json
MediaType::Json
);
assert_eq!(
map_content_type(Path::new("foo/bar.wasm"), None).0,
msg::MediaType::Wasm
MediaType::Wasm
);
assert_eq!(
map_content_type(Path::new("foo/bar.cjs"), None).0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), None).0,
msg::MediaType::Unknown
MediaType::Unknown
);
}
@ -1727,61 +1724,61 @@ mod tests {
// Media Type
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("application/typescript")).0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("text/typescript")).0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("video/vnd.dlna.mpeg-tts")).0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("video/mp2t")).0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("application/x-typescript"))
.0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("application/javascript")).0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("text/javascript")).0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("application/ecmascript")).0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("text/ecmascript")).0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("application/x-javascript"))
.0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("application/json")).0,
msg::MediaType::Json
MediaType::Json
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("application/node")).0,
msg::MediaType::JavaScript
MediaType::JavaScript
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("text/json")).0,
msg::MediaType::Json
MediaType::Json
);
assert_eq!(
map_content_type(Path::new("foo/bar"), Some("text/json; charset=utf-8 ")),
(msg::MediaType::Json, Some("utf-8".to_owned()))
(MediaType::Json, Some("utf-8".to_owned()))
);
}
@ -1789,11 +1786,11 @@ mod tests {
fn test_map_file_extension_media_type_with_extension() {
assert_eq!(
map_content_type(Path::new("foo/bar.ts"), Some("text/plain")).0,
msg::MediaType::TypeScript
MediaType::TypeScript
);
assert_eq!(
map_content_type(Path::new("foo/bar.ts"), Some("foo/bar")).0,
msg::MediaType::Unknown
MediaType::Unknown
);
assert_eq!(
map_content_type(
@ -1801,7 +1798,7 @@ mod tests {
Some("application/typescript"),
)
.0,
msg::MediaType::TSX
MediaType::TSX
);
assert_eq!(
map_content_type(
@ -1809,7 +1806,7 @@ mod tests {
Some("application/javascript"),
)
.0,
msg::MediaType::TSX
MediaType::TSX
);
assert_eq!(
map_content_type(
@ -1817,7 +1814,7 @@ mod tests {
Some("application/x-typescript"),
)
.0,
msg::MediaType::TSX
MediaType::TSX
);
assert_eq!(
map_content_type(
@ -1825,11 +1822,11 @@ mod tests {
Some("video/vnd.dlna.mpeg-tts"),
)
.0,
msg::MediaType::TSX
MediaType::TSX
);
assert_eq!(
map_content_type(Path::new("foo/bar.tsx"), Some("video/mp2t")).0,
msg::MediaType::TSX
MediaType::TSX
);
assert_eq!(
map_content_type(
@ -1837,7 +1834,7 @@ mod tests {
Some("application/javascript"),
)
.0,
msg::MediaType::JSX
MediaType::JSX
);
assert_eq!(
map_content_type(
@ -1845,7 +1842,7 @@ mod tests {
Some("application/x-typescript"),
)
.0,
msg::MediaType::JSX
MediaType::JSX
);
assert_eq!(
map_content_type(
@ -1853,11 +1850,11 @@ mod tests {
Some("application/ecmascript"),
)
.0,
msg::MediaType::JSX
MediaType::JSX
);
assert_eq!(
map_content_type(Path::new("foo/bar.jsx"), Some("text/ecmascript")).0,
msg::MediaType::JSX
MediaType::JSX
);
assert_eq!(
map_content_type(
@ -1865,7 +1862,7 @@ mod tests {
Some("application/x-javascript"),
)
.0,
msg::MediaType::JSX
MediaType::JSX
);
}
@ -1896,7 +1893,7 @@ mod tests {
assert!(source.is_ok());
let source = source.unwrap();
assert_eq!(source.source_code.bytes, b"console.log('etag')");
assert_eq!(&(source.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(source.media_type), &MediaType::TypeScript);
let (_, headers) = fetcher.http_cache.get(&module_url).unwrap();
assert_eq!(
@ -1951,7 +1948,7 @@ mod tests {
assert!(source.is_ok());
let source = source.unwrap();
assert_eq!(source.source_code.bytes, b"export const foo = 'foo';");
assert_eq!(&(source.media_type), &msg::MediaType::JavaScript);
assert_eq!(&(source.media_type), &MediaType::JavaScript);
assert_eq!(
source.types_header,
Some("./xTypeScriptTypes.d.ts".to_string())
@ -2023,7 +2020,7 @@ mod tests {
assert_eq!(&source.source_code.charset.to_lowercase()[..], charset);
let text = &source.source_code.to_str().unwrap();
assert_eq!(text, expected_content);
assert_eq!(&(source.media_type), &msg::MediaType::TypeScript);
assert_eq!(&(source.media_type), &MediaType::TypeScript);
let (_, headers) = fetcher.http_cache.get(&module_url).unwrap();
assert_eq!(

View file

@ -6,10 +6,9 @@ use crate::flags;
use crate::http_cache;
use crate::import_map::ImportMap;
use crate::lockfile::Lockfile;
use crate::media_type::MediaType;
use crate::module_graph::ModuleGraphFile;
use crate::module_graph::ModuleGraphLoader;
use crate::msg;
use crate::msg::MediaType;
use crate::permissions::Permissions;
use crate::state::exit_unstable;
use crate::tsc::CompiledModule;
@ -202,10 +201,8 @@ impl GlobalState {
// Check if we need to compile files
let was_compiled = match out.media_type {
msg::MediaType::TypeScript
| msg::MediaType::TSX
| msg::MediaType::JSX => true,
msg::MediaType::JavaScript => self.ts_compiler.compile_js,
MediaType::TypeScript | MediaType::TSX | MediaType::JSX => true,
MediaType::JavaScript => self.ts_compiler.compile_js,
_ => false,
};
@ -288,10 +285,8 @@ fn needs_compilation(
module_graph_files: &[&ModuleGraphFile],
) -> bool {
let mut needs_compilation = match media_type {
msg::MediaType::TypeScript | msg::MediaType::TSX | msg::MediaType::JSX => {
true
}
msg::MediaType::JavaScript => compile_js,
MediaType::TypeScript | MediaType::TSX | MediaType::JSX => true,
MediaType::JavaScript => compile_js,
_ => false,
};

View file

@ -1,7 +1,6 @@
use crate::colors;
use crate::global_state::GlobalState;
use crate::module_graph::{ModuleGraph, ModuleGraphFile, ModuleGraphLoader};
use crate::msg;
use crate::ModuleSpecifier;
use crate::Permissions;
use deno_core::error::AnyError;
@ -56,7 +55,8 @@ impl ModuleDepInfo {
.get_source_map_file(&module_specifier)
.ok()
.map(|file| file.filename.to_string_lossy().to_string());
let file_type = msg::enum_name_media_type(out.media_type).to_string();
let file_type =
crate::media_type::enum_name_media_type(out.media_type).to_string();
let deps = FileInfoDepTree::new(&module_graph, &module_specifier);
let dep_count = get_unique_dep_count(&module_graph) - 1;
@ -350,8 +350,8 @@ pub fn human_size(bytse: f64) -> String {
mod test {
use super::*;
use crate::ast::Location;
use crate::media_type::MediaType;
use crate::module_graph::ImportDescriptor;
use crate::MediaType;
#[test]
fn human_size_test() {

View file

@ -11,7 +11,7 @@ use crate::colors;
use crate::fmt::collect_files;
use crate::fmt::run_parallelized;
use crate::fmt_errors;
use crate::msg;
use crate::media_type::MediaType;
use deno_core::error::generic_error;
use deno_core::error::AnyError;
use deno_lint::diagnostic::LintDiagnostic;
@ -131,7 +131,7 @@ fn lint_file(
) -> Result<(Vec<LintDiagnostic>, String), AnyError> {
let file_name = file_path.to_string_lossy().to_string();
let source_code = fs::read_to_string(&file_path)?;
let media_type = msg::MediaType::from(&file_path);
let media_type = MediaType::from(&file_path);
let syntax = ast::get_syntax(&media_type);
let lint_rules = rules::get_recommended_rules();
@ -158,7 +158,7 @@ fn lint_stdin(json: bool) -> Result<(), AnyError> {
};
let mut reporter = create_reporter(reporter_kind);
let lint_rules = rules::get_recommended_rules();
let syntax = ast::get_syntax(&msg::MediaType::TypeScript);
let syntax = ast::get_syntax(&MediaType::TypeScript);
let mut linter = create_linter(syntax, lint_rules);
let mut has_error = false;
let pseudo_file_name = "_stdin.ts";

View file

@ -49,9 +49,9 @@ pub mod installer;
mod js;
mod lint;
mod lockfile;
mod media_type;
mod metrics;
mod module_graph;
pub mod msg;
mod op_fetch_asset;
pub mod ops;
pub mod permissions;
@ -77,7 +77,7 @@ use crate::file_fetcher::SourceFileFetcher;
use crate::file_fetcher::TextDocument;
use crate::fs as deno_fs;
use crate::global_state::GlobalState;
use crate::msg::MediaType;
use crate::media_type::MediaType;
use crate::permissions::Permissions;
use crate::worker::MainWorker;
use deno_core::error::AnyError;
@ -378,7 +378,7 @@ async fn doc_command(
let doc_parser = doc::DocParser::new(loader, private);
let parse_result = if source_file == "--builtin" {
let syntax = ast::get_syntax(&msg::MediaType::Dts);
let syntax = ast::get_syntax(&MediaType::Dts);
doc_parser.parse_source(
"lib.deno.d.ts",
syntax,

View file

@ -117,41 +117,8 @@ pub fn enum_name_media_type(mt: MediaType) -> &'static str {
}
}
// Warning! The values in this enum are duplicated in js/compiler.ts
// Update carefully!
#[allow(non_camel_case_types)]
#[repr(i32)]
#[derive(Clone, Copy, PartialEq, Debug)]
pub enum CompilerRequestType {
Compile = 0,
Bundle = 1,
RuntimeCompile = 2,
RuntimeBundle = 3,
RuntimeTranspile = 4,
}
impl Serialize for CompilerRequestType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let value: i32 = match self {
CompilerRequestType::Compile => 0 as i32,
CompilerRequestType::Bundle => 1 as i32,
CompilerRequestType::RuntimeCompile => 2 as i32,
CompilerRequestType::RuntimeBundle => 3 as i32,
CompilerRequestType::RuntimeTranspile => 4 as i32,
};
Serialize::serialize(&value, serializer)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_map_file_extension() {
#[test]
fn test_map_file_extension() {
assert_eq!(
MediaType::from(Path::new("foo/bar.ts")),
MediaType::TypeScript
@ -177,5 +144,4 @@ mod tests {
MediaType::Unknown
);
assert_eq!(MediaType::from(Path::new("foo/bar")), MediaType::Unknown);
}
}

View file

@ -5,7 +5,7 @@ use crate::checksum;
use crate::file_fetcher::SourceFile;
use crate::file_fetcher::SourceFileFetcher;
use crate::import_map::ImportMap;
use crate::msg::MediaType;
use crate::media_type::MediaType;
use crate::permissions::Permissions;
use crate::tsc::pre_process_file;
use crate::tsc::ImportDesc;

View file

@ -12,10 +12,9 @@ use crate::flags::Flags;
use crate::fmt_errors::JsError;
use crate::global_state::GlobalState;
use crate::js;
use crate::media_type::MediaType;
use crate::module_graph::ModuleGraph;
use crate::module_graph::ModuleGraphLoader;
use crate::msg;
use crate::msg::MediaType;
use crate::ops;
use crate::permissions::Permissions;
use crate::source_maps::SourceMapGetter;
@ -35,6 +34,7 @@ use log::Level;
use regex::Regex;
use serde::Deserialize;
use serde::Serialize;
use serde::Serializer;
use serde_json::json;
use serde_json::Value;
use sourcemap::SourceMap;
@ -630,7 +630,7 @@ impl TsCompiler {
);
let j = json!({
"type": msg::CompilerRequestType::Compile,
"type": CompilerRequestType::Compile,
"target": target,
"rootNames": root_names,
"performance": performance,
@ -751,7 +751,7 @@ impl TsCompiler {
);
let j = json!({
"type": msg::CompilerRequestType::Bundle,
"type": CompilerRequestType::Bundle,
"target": target,
"rootNames": root_names,
"performance": performance,
@ -899,9 +899,7 @@ impl TsCompiler {
// NOTE: JavaScript files are only cached to disk if `checkJs`
// option in on
if source_file.media_type == msg::MediaType::JavaScript
&& !self.compile_js
{
if source_file.media_type == MediaType::JavaScript && !self.compile_js {
continue;
}
@ -948,7 +946,7 @@ impl TsCompiler {
let compiled_module = SourceFile {
url: module_url.clone(),
filename: compiled_code_filename,
media_type: msg::MediaType::JavaScript,
media_type: MediaType::JavaScript,
source_code: compiled_code.into(),
types_header: None,
};
@ -1005,7 +1003,7 @@ impl TsCompiler {
let source_map_file = SourceFile {
url: module_specifier.as_url().to_owned(),
filename: source_map_filename,
media_type: msg::MediaType::JavaScript,
media_type: MediaType::JavaScript,
source_code: source_code.into(),
types_header: None,
};
@ -1268,7 +1266,7 @@ pub async fn runtime_compile(
serde_json::to_value(module_graph).expect("Failed to serialize data");
let req_msg = json!({
"type": msg::CompilerRequestType::RuntimeCompile,
"type": CompilerRequestType::RuntimeCompile,
"target": "runtime",
"rootNames": root_names,
"sourceFileMap": module_graph_json,
@ -1379,7 +1377,7 @@ pub async fn runtime_bundle(
tsc_config::json_merge(&mut compiler_options, &bundler_options);
let req_msg = json!({
"type": msg::CompilerRequestType::RuntimeBundle,
"type": CompilerRequestType::RuntimeBundle,
"target": "runtime",
"rootNames": root_names,
"sourceFileMap": module_graph_json,
@ -1420,7 +1418,7 @@ pub async fn runtime_transpile(
tsc_config::json_merge(&mut compiler_options, &user_options);
let req_msg = json!({
"type": msg::CompilerRequestType::RuntimeTranspile,
"type": CompilerRequestType::RuntimeTranspile,
"sources": sources,
"compilerOptions": compiler_options,
})
@ -1561,6 +1559,34 @@ fn parse_deno_types(comment: &str) -> Option<String> {
None
}
// Warning! The values in this enum are duplicated in js/compiler.ts
// Update carefully!
#[repr(i32)]
#[derive(Clone, Copy, PartialEq, Debug)]
pub enum CompilerRequestType {
Compile = 0,
Bundle = 1,
RuntimeCompile = 2,
RuntimeBundle = 3,
RuntimeTranspile = 4,
}
impl Serialize for CompilerRequestType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let value: i32 = match self {
CompilerRequestType::Compile => 0 as i32,
CompilerRequestType::Bundle => 1 as i32,
CompilerRequestType::RuntimeCompile => 2 as i32,
CompilerRequestType::RuntimeBundle => 3 as i32,
CompilerRequestType::RuntimeTranspile => 4 as i32,
};
Serialize::serialize(&value, serializer)
}
}
#[cfg(test)]
mod tests {
use super::*;
@ -1640,7 +1666,7 @@ mod tests {
let out = SourceFile {
url: specifier.as_url().clone(),
filename: PathBuf::from(p.to_str().unwrap().to_string()),
media_type: msg::MediaType::TypeScript,
media_type: MediaType::TypeScript,
source_code: include_bytes!("./tests/002_hello.ts").to_vec().into(),
types_header: None,
};
@ -1716,7 +1742,7 @@ mod tests {
let out = SourceFile {
url: specifier.as_url().clone(),
filename: PathBuf::from(p.to_str().unwrap().to_string()),
media_type: msg::MediaType::TypeScript,
media_type: MediaType::TypeScript,
source_code: include_bytes!("./tests/002_hello.ts").to_vec().into(),
types_header: None,
};