summaryrefslogtreecommitdiff
path: root/core/runtime/bindings.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/runtime/bindings.rs')
-rw-r--r--core/runtime/bindings.rs55
1 files changed, 1 insertions, 54 deletions
diff --git a/core/runtime/bindings.rs b/core/runtime/bindings.rs
index 4cc27592f..2eb804e73 100644
--- a/core/runtime/bindings.rs
+++ b/core/runtime/bindings.rs
@@ -7,6 +7,7 @@ use std::os::raw::c_void;
use v8::MapFnTo;
use crate::error::is_instance_of_error;
+use crate::error::throw_type_error;
use crate::error::JsStackFrame;
use crate::modules::get_asserted_module_type_from_assertions;
use crate::modules::parse_import_assertions;
@@ -542,57 +543,3 @@ fn call_console(
inspector_console_method.call(scope, receiver.into(), &call_args);
deno_console_method.call(scope, receiver.into(), &call_args);
}
-
-/// Called by V8 during `JsRuntime::instantiate_module`.
-///
-/// This function borrows `ModuleMap` from the isolate slot,
-/// so it is crucial to ensure there are no existing borrows
-/// of `ModuleMap` when `JsRuntime::instantiate_module` is called.
-pub fn module_resolve_callback<'s>(
- context: v8::Local<'s, v8::Context>,
- specifier: v8::Local<'s, v8::String>,
- import_assertions: v8::Local<'s, v8::FixedArray>,
- referrer: v8::Local<'s, v8::Module>,
-) -> Option<v8::Local<'s, v8::Module>> {
- // SAFETY: `CallbackScope` can be safely constructed from `Local<Context>`
- let scope = &mut unsafe { v8::CallbackScope::new(context) };
-
- let module_map_rc = JsRuntime::module_map_from(scope);
- let module_map = module_map_rc.borrow();
-
- let referrer_global = v8::Global::new(scope, referrer);
-
- let referrer_info = module_map
- .get_info(&referrer_global)
- .expect("ModuleInfo not found");
- let referrer_name = referrer_info.name.as_str();
-
- let specifier_str = specifier.to_rust_string_lossy(scope);
-
- let assertions = parse_import_assertions(
- scope,
- import_assertions,
- ImportAssertionsKind::StaticImport,
- );
- let maybe_module = module_map.resolve_callback(
- scope,
- &specifier_str,
- referrer_name,
- assertions,
- );
- if let Some(module) = maybe_module {
- return Some(module);
- }
-
- let msg = format!(
- r#"Cannot resolve module "{specifier_str}" from "{referrer_name}""#
- );
- throw_type_error(scope, msg);
- None
-}
-
-pub fn throw_type_error(scope: &mut v8::HandleScope, message: impl AsRef<str>) {
- let message = v8::String::new(scope, message.as_ref()).unwrap();
- let exception = v8::Exception::type_error(scope, message);
- scope.throw_exception(exception);
-}