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:: as *const (), 1), ("unescape", oxide_builtins::global::js_unescape:: as *const (), 1), ("encodeURI", oxide_builtins::global::encode_uri:: as *const (), 1), ("decodeURI", oxide_builtins::global::decode_uri:: as *const (), 1), ( "encodeURIComponent", oxide_builtins::global::encode_uri_component:: as *const (), 1, ), ( "decodeURIComponent", oxide_builtins::global::decode_uri_component:: as *const (), 1, ), // 模块求值 / 命名空间内部辅助(import 实现;非 JS 标准全局,以下划线开头避免撞名)。 ("__moduleObject", oxide_builtins::module::module_object:: as *const (), 0), ( "__modulePreRegister", oxide_builtins::module::module_pre_register:: as *const (), 3, ), ("__moduleSet", oxide_builtins::module::module_set:: as *const (), 3), ( "__moduleSetCell", oxide_builtins::module::module_set_cell:: as *const (), 3, ), ( "__moduleSetReexport", oxide_builtins::module::module_set_reexport:: as *const (), 5, ), ("__moduleAlias", oxide_builtins::module::module_alias:: as *const (), 3), ("__moduleGet", oxide_builtins::module::module_get:: as *const (), 2), ( "__moduleLinkGet", oxide_builtins::module::module_link_get:: as *const (), 2, ), ("__moduleStar", oxide_builtins::module::module_star:: as *const (), 3), ("__moduleSeal", oxide_builtins::module::module_seal:: as *const (), 1), ("__moduleEval", oxide_builtins::module::module_eval:: as *const (), 1), ( "__moduleDeferObject", oxide_builtins::module::module_defer_object:: as *const (), 2, ), ("__moduleData", oxide_builtins::module::module_data:: as *const (), 2), ("__moduleWaitAll", module_wait_all as *const (), 0), ("eval", oxide_builtins::eval::eval:: as *const (), 1), ( "structuredClone", oxide_builtins::structured_clone::structured_clone_entry:: as *const (), 1, ), ], ); }