diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2021-11-01 14:46:07 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-01 14:46:07 -0400 |
commit | b92019a8475a16213028ab73b15be5a3f7c56e0a (patch) | |
tree | 610cebc1c4f3aeebb8c9d8dd585dc7e8e82805c4 /cli/compat/mod.rs | |
parent | 1b684d333df80ba7589e346cafb76b6952354d33 (diff) |
port check_if_should_use_esm_loader to rust (#12562)
Diffstat (limited to 'cli/compat/mod.rs')
-rw-r--r-- | cli/compat/mod.rs | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/cli/compat/mod.rs b/cli/compat/mod.rs index 997265f96..3797d7cb4 100644 --- a/cli/compat/mod.rs +++ b/cli/compat/mod.rs @@ -8,6 +8,7 @@ use deno_core::located_script_name; use deno_core::url::Url; use deno_core::JsRuntime; +pub use esm_resolver::check_if_should_use_esm_loader; pub(crate) use esm_resolver::NodeEsmResolver; // TODO(bartlomieju): this needs to be bumped manually for @@ -86,33 +87,6 @@ fn try_resolve_builtin_module(specifier: &str) -> Option<Url> { } } -pub(crate) async fn check_if_should_use_esm_loader( - js_runtime: &mut JsRuntime, - main_module: &str, -) -> Result<bool, AnyError> { - // Decide if we're running with Node ESM loader or CJS loader. - let source_code = &format!( - r#"(async function checkIfEsm(main) {{ - const {{ resolveMainPath, shouldUseESMLoader }} = await import("{}"); - const resolvedMain = resolveMainPath(main); - const useESMLoader = shouldUseESMLoader(resolvedMain); - return useESMLoader; - }})('{}');"#, - MODULE_URL_STR.as_str(), - escape_for_single_quote_string(main_module), - ); - let result = - js_runtime.execute_script(&located_script_name!(), source_code)?; - let use_esm_loader_global = js_runtime.resolve_value(result).await?; - let use_esm_loader = { - let scope = &mut js_runtime.handle_scope(); - let use_esm_loader_local = use_esm_loader_global.open(scope); - use_esm_loader_local.boolean_value(scope) - }; - - Ok(use_esm_loader) -} - pub(crate) fn load_cjs_module( js_runtime: &mut JsRuntime, main_module: &str, |