mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
fix(cli): fix panic in Deno.emit (#9302)
This commit is contained in:
parent
6ecc86cf2a
commit
fc162162a1
2 changed files with 25 additions and 3 deletions
|
@ -10,6 +10,7 @@ use crate::specifier_handler::MemoryHandler;
|
||||||
use crate::specifier_handler::SpecifierHandler;
|
use crate::specifier_handler::SpecifierHandler;
|
||||||
|
|
||||||
use deno_core::error::generic_error;
|
use deno_core::error::generic_error;
|
||||||
|
use deno_core::error::type_error;
|
||||||
use deno_core::error::AnyError;
|
use deno_core::error::AnyError;
|
||||||
use deno_core::error::Context;
|
use deno_core::error::Context;
|
||||||
use deno_core::serde_json;
|
use deno_core::serde_json;
|
||||||
|
@ -55,6 +56,7 @@ async fn op_emit(
|
||||||
) -> Result<Value, AnyError> {
|
) -> Result<Value, AnyError> {
|
||||||
deno_runtime::ops::check_unstable2(&state, "Deno.emit");
|
deno_runtime::ops::check_unstable2(&state, "Deno.emit");
|
||||||
let args: EmitArgs = serde_json::from_value(args)?;
|
let args: EmitArgs = serde_json::from_value(args)?;
|
||||||
|
let root_specifier = args.root_specifier;
|
||||||
let program_state = state.borrow().borrow::<Arc<ProgramState>>().clone();
|
let program_state = state.borrow().borrow::<Arc<ProgramState>>().clone();
|
||||||
let runtime_permissions = {
|
let runtime_permissions = {
|
||||||
let state = state.borrow();
|
let state = state.borrow();
|
||||||
|
@ -92,9 +94,16 @@ async fn op_emit(
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let mut builder = GraphBuilder::new(handler, maybe_import_map, None);
|
let mut builder = GraphBuilder::new(handler, maybe_import_map, None);
|
||||||
let root_specifier =
|
let root_specifier = ModuleSpecifier::resolve_url_or_path(&root_specifier)?;
|
||||||
ModuleSpecifier::resolve_url_or_path(&args.root_specifier)?;
|
builder
|
||||||
builder.add(&root_specifier, is_dynamic).await?;
|
.add(&root_specifier, is_dynamic)
|
||||||
|
.await
|
||||||
|
.map_err(|_| {
|
||||||
|
type_error(format!(
|
||||||
|
"Unable to handle the given specifier: {}",
|
||||||
|
&root_specifier
|
||||||
|
))
|
||||||
|
})?;
|
||||||
let bundle_type = match args.bundle {
|
let bundle_type = match args.bundle {
|
||||||
Some(RuntimeBundleType::Esm) => BundleType::Esm,
|
Some(RuntimeBundleType::Esm) => BundleType::Esm,
|
||||||
_ => BundleType::None,
|
_ => BundleType::None,
|
||||||
|
|
|
@ -292,3 +292,16 @@ Deno.test({
|
||||||
assert(diagnostics[0].messageText.includes("This import is never used"));
|
assert(diagnostics[0].messageText.includes("This import is never used"));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Deno.test({
|
||||||
|
name: "Deno.emit() - Unknown media type does not panic",
|
||||||
|
async fn() {
|
||||||
|
await assertThrowsAsync(async () => {
|
||||||
|
await Deno.emit("https://example.com/foo", {
|
||||||
|
sources: {
|
||||||
|
"https://example.com/foo": `let foo: string = "foo";`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in a new issue