mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
refactor(core): Reduce verbosity of binding core functions (#9497)
This commit is contained in:
parent
64a1da84fe
commit
1afe6b48e0
1 changed files with 28 additions and 72 deletions
100
core/bindings.rs
100
core/bindings.rs
|
@ -103,96 +103,52 @@ pub fn initialize_context<'s>(
|
|||
|
||||
let scope = &mut v8::ContextScope::new(scope, context);
|
||||
|
||||
// global.Deno = { core: {} };
|
||||
let deno_key = v8::String::new(scope, "Deno").unwrap();
|
||||
let deno_val = v8::Object::new(scope);
|
||||
global.set(scope, deno_key.into(), deno_val.into());
|
||||
|
||||
let core_key = v8::String::new(scope, "core").unwrap();
|
||||
let core_val = v8::Object::new(scope);
|
||||
deno_val.set(scope, core_key.into(), core_val.into());
|
||||
|
||||
let print_key = v8::String::new(scope, "print").unwrap();
|
||||
let print_tmpl = v8::FunctionTemplate::new(scope, print);
|
||||
let print_val = print_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(scope, print_key.into(), print_val.into());
|
||||
|
||||
let recv_key = v8::String::new(scope, "recv").unwrap();
|
||||
let recv_tmpl = v8::FunctionTemplate::new(scope, recv);
|
||||
let recv_val = recv_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(scope, recv_key.into(), recv_val.into());
|
||||
|
||||
let send_key = v8::String::new(scope, "send").unwrap();
|
||||
let send_tmpl = v8::FunctionTemplate::new(scope, send);
|
||||
let send_val = send_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(scope, send_key.into(), send_val.into());
|
||||
|
||||
let set_macrotask_callback_key =
|
||||
v8::String::new(scope, "setMacrotaskCallback").unwrap();
|
||||
let set_macrotask_callback_tmpl =
|
||||
v8::FunctionTemplate::new(scope, set_macrotask_callback);
|
||||
let set_macrotask_callback_val =
|
||||
set_macrotask_callback_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(
|
||||
// Bind functions to Deno.core.*
|
||||
set_func(scope, core_val, "print", print);
|
||||
set_func(scope, core_val, "recv", recv);
|
||||
set_func(scope, core_val, "send", send);
|
||||
set_func(
|
||||
scope,
|
||||
set_macrotask_callback_key.into(),
|
||||
set_macrotask_callback_val.into(),
|
||||
);
|
||||
|
||||
let eval_context_key = v8::String::new(scope, "evalContext").unwrap();
|
||||
let eval_context_tmpl = v8::FunctionTemplate::new(scope, eval_context);
|
||||
let eval_context_val = eval_context_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(scope, eval_context_key.into(), eval_context_val.into());
|
||||
|
||||
let encode_key = v8::String::new(scope, "encode").unwrap();
|
||||
let encode_tmpl = v8::FunctionTemplate::new(scope, encode);
|
||||
let encode_val = encode_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(scope, encode_key.into(), encode_val.into());
|
||||
|
||||
let decode_key = v8::String::new(scope, "decode").unwrap();
|
||||
let decode_tmpl = v8::FunctionTemplate::new(scope, decode);
|
||||
let decode_val = decode_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(scope, decode_key.into(), decode_val.into());
|
||||
|
||||
let get_promise_details_key =
|
||||
v8::String::new(scope, "getPromiseDetails").unwrap();
|
||||
let get_promise_details_tmpl =
|
||||
v8::FunctionTemplate::new(scope, get_promise_details);
|
||||
let get_promise_details_val =
|
||||
get_promise_details_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(
|
||||
scope,
|
||||
get_promise_details_key.into(),
|
||||
get_promise_details_val.into(),
|
||||
);
|
||||
|
||||
let get_proxy_details_key =
|
||||
v8::String::new(scope, "getProxyDetails").unwrap();
|
||||
let get_proxy_details_tmpl =
|
||||
v8::FunctionTemplate::new(scope, get_proxy_details);
|
||||
let get_proxy_details_val =
|
||||
get_proxy_details_tmpl.get_function(scope).unwrap();
|
||||
core_val.set(
|
||||
scope,
|
||||
get_proxy_details_key.into(),
|
||||
get_proxy_details_val.into(),
|
||||
core_val,
|
||||
"setMacrotaskCallback",
|
||||
set_macrotask_callback,
|
||||
);
|
||||
set_func(scope, core_val, "evalContext", eval_context);
|
||||
set_func(scope, core_val, "encode", encode);
|
||||
set_func(scope, core_val, "decode", decode);
|
||||
set_func(scope, core_val, "getPromiseDetails", get_promise_details);
|
||||
set_func(scope, core_val, "getProxyDetails", get_proxy_details);
|
||||
|
||||
let shared_key = v8::String::new(scope, "shared").unwrap();
|
||||
core_val.set_accessor(scope, shared_key.into(), shared_getter);
|
||||
|
||||
// Direct bindings on `window`.
|
||||
let queue_microtask_key = v8::String::new(scope, "queueMicrotask").unwrap();
|
||||
let queue_microtask_tmpl = v8::FunctionTemplate::new(scope, queue_microtask);
|
||||
let queue_microtask_val = queue_microtask_tmpl.get_function(scope).unwrap();
|
||||
global.set(
|
||||
scope,
|
||||
queue_microtask_key.into(),
|
||||
queue_microtask_val.into(),
|
||||
);
|
||||
set_func(scope, global, "queueMicrotask", queue_microtask);
|
||||
|
||||
scope.escape(context)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn set_func(
|
||||
scope: &mut v8::HandleScope<'_>,
|
||||
obj: v8::Local<v8::Object>,
|
||||
name: &'static str,
|
||||
callback: impl v8::MapFnTo<v8::FunctionCallback>,
|
||||
) {
|
||||
let key = v8::String::new(scope, name).unwrap();
|
||||
let tmpl = v8::FunctionTemplate::new(scope, callback);
|
||||
let val = tmpl.get_function(scope).unwrap();
|
||||
obj.set(scope, key.into(), val.into());
|
||||
}
|
||||
|
||||
pub fn boxed_slice_to_uint8array<'sc>(
|
||||
scope: &mut v8::HandleScope<'sc>,
|
||||
buf: Box<[u8]>,
|
||||
|
|
Loading…
Add table
Reference in a new issue