pub mod ai;
pub mod assert;
pub mod async_hooks;
pub mod buffer;
pub mod child_process;
pub mod commonjs_resolver;
pub mod crypto;
pub mod diagnostics_channel;
pub mod dns; pub mod events;
pub mod fast_path;
pub mod fs;
pub mod http;
pub mod http2;
pub mod https;
pub mod net;
pub mod os;
pub mod path;
pub mod perf_hooks;
pub mod performance; pub mod process; pub mod querystring;
pub mod readline;
pub mod require; pub mod stream;
pub mod string_decoder;
pub mod tcp_async; pub mod timers; pub mod tls;
pub mod tty;
pub mod url;
pub mod util; pub mod vm;
pub mod worker_threads;
pub mod zlib;
use anyhow::Result;
use rusty_v8 as v8;
pub fn setup_nodejs_core_apis(
scope: &mut v8::ContextScope<v8::HandleScope>,
context: &v8::Local<v8::Context>,
) -> Result<()> {
setup_globals(scope, context)?;
fs::setup_fs_api(scope, context)?;
crypto::setup_crypto_api(scope, context)?;
stream::setup_stream_api(scope, context)?;
events::setup_events_api(scope, context)?;
net::setup_net_api(scope, context)?;
http::setup_http_api(scope, context)?;
http2::setup_http2_api(scope, context)?;
https::setup_https_api(scope, context)?;
tls::setup_tls_api(scope, context)?;
dns::setup_dns_api(scope, context)?; buffer::setup_buffer_api(scope, context)?;
path::setup_path_api(scope, context)?;
os::setup_os_api(scope, context)?;
util::setup_util_api(scope, context)?;
url::setup_url_api(scope, context)?;
querystring::setup_querystring_api(scope, context)?;
child_process::setup_child_process_api(scope, context)?;
process::setup_process_api(scope, context)?; timers::setup_timers_api(scope, context)?; performance::setup_performance_api(scope, context)?; readline::setup_readline_api(scope, context)?; assert::setup_assert_api(scope, context)?;
zlib::setup_zlib_api(scope, context)?;
vm::setup_vm_api(scope, context)?;
tty::setup_tty_api(scope, context)?;
worker_threads::setup_worker_threads_api(scope, context)?;
diagnostics_channel::setup_diagnostics_channel_api(scope, context)?;
async_hooks::setup_async_hooks_api(scope, context)?;
string_decoder::setup_string_decoder_api(scope, context)?;
perf_hooks::setup_perf_hooks_api(scope, context)?;
ai::setup_ai_api(scope, context)?;
crate::database::setup_db_api(scope, context)?;
crate::std_lib::setup_std_api(scope, context)?;
require::setup_require_api(scope, context)?;
Ok(())
}
fn setup_globals(
scope: &mut v8::ContextScope<v8::HandleScope>,
context: &v8::Local<v8::Context>,
) -> Result<()> {
let global: _ = context.global(scope);
let global_obj: _ = v8::Object::new(scope);
let global_key: _ = v8::String::new(scope, "global").unwrap();
global.set(scope, global_key.into(), global_obj.into());
let global_alias_key: _ = v8::String::new(scope, "GLOBAL").unwrap();
global.set(scope, global_alias_key.into(), global_obj.into());
let dirname_key: _ = v8::String::new(scope, "__dirname").unwrap();
let dirname_val: _ = v8::String::new(scope, "/").unwrap();
global.set(scope, dirname_key.into(), dirname_val.into());
let filename_key: _ = v8::String::new(scope, "__filename").unwrap();
let filename_val: _ = v8::String::new(scope, "main.js").unwrap();
global.set(scope, filename_key.into(), filename_val.into());
Ok(())
}