#![allow(unsafe_op_in_unsafe_fn)]
#![allow(unused_imports)]
pub mod bao_browser_global;
pub mod bun_api;
pub mod bun_build;
pub mod bun_builtins;
pub mod bun_glob_api;
pub mod bun_hash_api;
pub mod bun_inspect_api;
pub mod bun_mime_api;
pub mod bun_serde_api;
pub mod bun_spawn_sync;
pub mod bun_util_api;
pub mod bun_ffi;
pub mod bun_sqlite;
pub mod bun_test;
pub mod dispatch;
pub mod fetch_api;
pub mod ipc_channel;
pub mod workflow_host_global;
pub mod bun_listen;
pub mod bun_password;
pub mod bun_shell;
pub mod bun_udp;
pub mod fetch_async;
pub mod gc_store;
pub mod globals;
pub mod h3_fetch;
pub mod http_client;
pub mod install;
pub mod node_async_hooks;
pub mod node_buffer;
pub mod node_child_process;
pub mod node_cluster;
pub mod node_console;
pub mod node_constants;
pub mod node_crypto;
pub mod node_dgram;
pub mod node_diagnostics_channel;
pub mod node_dns;
pub mod node_domain;
pub mod node_events;
pub mod node_fs;
pub mod node_http;
pub mod node_http2;
pub mod node_http2_upgrade;
pub mod node_https;
pub mod node_inspector;
pub mod node_inspector_promises;
pub mod node_internal_http;
pub mod node_internal_streams;
pub mod node_module;
pub mod node_net;
pub mod node_os;
pub mod node_path;
pub mod node_perf_hooks;
pub mod node_punycode;
pub mod node_querystring;
pub mod node_readline;
pub mod node_repl;
pub mod node_stream;
pub mod node_stream_consumers;
pub mod node_stream_web;
pub mod node_string_decoder;
pub mod node_stubs;
pub mod node_subpath_aliases;
pub mod node_sys;
pub mod node_test;
pub mod node_timers_module;
pub mod node_tls;
pub mod node_tls_common;
pub mod node_tls_wrap;
pub mod node_trace_events;
pub mod node_tty;
pub mod node_url;
pub mod node_util;
pub mod node_util_types;
pub mod node_vm;
pub mod node_wasi;
pub mod node_worker_threads;
pub mod node_zlib;
pub mod permission_bridge;
pub mod require;
pub mod resolver_bridge;
pub mod runtime;
pub mod s3_api;
pub mod stealth_http;
pub mod timers;
pub mod uncaught;
pub mod web_api;
pub mod web_streams;
pub mod web_fetch_classes;
pub mod product_process_exit;
pub mod product_buffered_reader;
pub mod product_native_symbols;
pub mod linux_trace;
pub use runtime::BaoRuntime;
thread_local! {
static EXIT_REQUESTED: std::cell::Cell<bool> = const { std::cell::Cell::new(false) };
static EXIT_CODE: std::cell::Cell<i32> = const { std::cell::Cell::new(0) };
}
pub fn request_exit(code: i32) {
EXIT_CODE.with(|c| c.set(code));
EXIT_REQUESTED.with(|r| r.set(true));
}
pub fn should_exit() -> bool {
EXIT_REQUESTED.with(|r| r.get())
}
pub fn exit_code() -> i32 {
EXIT_CODE.with(|c| c.get())
}
pub fn set_exit_code(code: i32) {
EXIT_CODE.with(|c| c.set(code));
}
pub fn clear_exit() {
EXIT_REQUESTED.with(|r| r.set(false));
EXIT_CODE.with(|c| c.set(0));
}
pub fn install_exit_handler() {
}
pub fn shutdown_thread_sm() {
bao_engine::context::JsContext::shutdown_thread_sm();
}
pub fn shutdown_engine() {
bao_engine::context::JsContext::shutdown_engine();
}
pub unsafe fn js_to_rust_string(
cx: *mut mozjs::jsapi::JSContext,
val: mozjs::jsval::JSVal,
) -> String {
let ptr = val.to_string();
match ::std::ptr::NonNull::new(ptr) {
Some(nn) => mozjs::conversions::unsafe_jsstr_to_string(cx, nn),
None => String::new(),
}
}
pub unsafe fn jsstr_to_rust_string(
cx: *mut mozjs::jsapi::JSContext,
s: *mut mozjs::jsapi::JSString,
) -> String {
match ::std::ptr::NonNull::new(s) {
Some(nn) => mozjs::conversions::unsafe_jsstr_to_string(cx, nn),
None => String::new(),
}
}
#[inline(never)]
pub fn force_link_bun_install() {
let _ = bun_install::Subcommand::Install;
}
#[inline(never)]
fn force_link_native_c_libs() {
let _ = bun_lsquic_sys::force_link as *const () as usize;
let _ = bun_lsquic_sys::force_link_lshpack as *const () as usize;
let _ = bun_boringssl_sys::force_link as *const () as usize;
let _ = bao_uloop::force_link as *const () as usize;
let _ = bao_uloop::bao_loop_tick as *const () as usize;
let _ = bao_uloop::us_wakeup_loop as *const () as usize;
let _ = bao_uloop::uws_get_loop as *const () as usize;
product_process_exit::force_link_product_process_exit();
product_buffered_reader::force_link_product_buffered_reader();
product_native_symbols::force_link_product_native_symbols();
}
#[used]
static FORCE_NATIVE_C_LIBS: fn() = force_link_native_c_libs;