mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-24 02:31:13 +08:00
81 lines
3.6 KiB
Rust
81 lines
3.6 KiB
Rust
use oxide_runtime_api::NativeResult;
|
|
use oxide_types::object::JsObject;
|
|
|
|
use crate::bindings::{apply_binding_table, BindEnv};
|
|
use crate::vm::Vm;
|
|
|
|
/// `__moduleWaitAll` 原生入口:委托 `Vm::module_wait_all`(聚合 gate,见 promise 模块)。
|
|
fn module_wait_all(vm: &mut Vm, args: &[u8]) -> NativeResult {
|
|
vm.module_wait_all(args)
|
|
}
|
|
|
|
/// 把普通全局函数(`isNaN`、`parseInt`、`decodeURIComponent` 等)绑定到 global。
|
|
pub fn bind_global(env: BindEnv<'_>, global: &mut JsObject) {
|
|
apply_binding_table(
|
|
env,
|
|
global,
|
|
&[
|
|
("escape", oxide_builtins::global::js_escape::<crate::vm::Vm> as *const (), 1),
|
|
("unescape", oxide_builtins::global::js_unescape::<crate::vm::Vm> as *const (), 1),
|
|
("encodeURI", oxide_builtins::global::encode_uri::<crate::vm::Vm> as *const (), 1),
|
|
("decodeURI", oxide_builtins::global::decode_uri::<crate::vm::Vm> as *const (), 1),
|
|
(
|
|
"encodeURIComponent",
|
|
oxide_builtins::global::encode_uri_component::<crate::vm::Vm> as *const (),
|
|
1,
|
|
),
|
|
(
|
|
"decodeURIComponent",
|
|
oxide_builtins::global::decode_uri_component::<crate::vm::Vm> as *const (),
|
|
1,
|
|
),
|
|
// 模块求值 / 命名空间内部辅助(import 实现;非 JS 标准全局,以下划线开头避免撞名)。
|
|
("__moduleObject", oxide_builtins::module::module_object::<crate::vm::Vm> as *const (), 0),
|
|
(
|
|
"__modulePreRegister",
|
|
oxide_builtins::module::module_pre_register::<crate::vm::Vm> as *const (),
|
|
3,
|
|
),
|
|
("__moduleSet", oxide_builtins::module::module_set::<crate::vm::Vm> as *const (), 3),
|
|
(
|
|
"__moduleSetCell",
|
|
oxide_builtins::module::module_set_cell::<crate::vm::Vm> as *const (),
|
|
3,
|
|
),
|
|
(
|
|
"__moduleSetReexport",
|
|
oxide_builtins::module::module_set_reexport::<crate::vm::Vm> as *const (),
|
|
5,
|
|
),
|
|
("__moduleAlias", oxide_builtins::module::module_alias::<crate::vm::Vm> as *const (), 3),
|
|
("__moduleGet", oxide_builtins::module::module_get::<crate::vm::Vm> as *const (), 2),
|
|
(
|
|
"__moduleLinkGet",
|
|
oxide_builtins::module::module_link_get::<crate::vm::Vm> as *const (),
|
|
2,
|
|
),
|
|
("__moduleStar", oxide_builtins::module::module_star::<crate::vm::Vm> as *const (), 3),
|
|
("__moduleSeal", oxide_builtins::module::module_seal::<crate::vm::Vm> as *const (), 1),
|
|
("__moduleEval", oxide_builtins::module::module_eval::<crate::vm::Vm> as *const (), 1),
|
|
(
|
|
"__moduleDeferObject",
|
|
oxide_builtins::module::module_defer_object::<crate::vm::Vm> as *const (),
|
|
2,
|
|
),
|
|
("__moduleData", oxide_builtins::module::module_data::<crate::vm::Vm> as *const (), 2),
|
|
(
|
|
"__moduleSourceObject",
|
|
oxide_builtins::module::module_source_object::<crate::vm::Vm> as *const (),
|
|
0,
|
|
),
|
|
("__moduleWaitAll", module_wait_all as *const (), 0),
|
|
("eval", oxide_builtins::eval::eval::<crate::vm::Vm> as *const (), 1),
|
|
(
|
|
"structuredClone",
|
|
oxide_builtins::structured_clone::structured_clone_entry::<crate::vm::Vm> as *const (),
|
|
1,
|
|
),
|
|
],
|
|
);
|
|
}
|