import { ObjectFreeze } from "ext:core/primordials"; import { onRuntimeStart } from "ext:core/bootstrap"; import { op_process_cwd, op_runtime_info, op_sys_hostname, op_sys_loadavg, op_sys_os_release, op_sys_uptime, } from "ext:core/ops"; import { result } from "ext:file/errors.js"; // Live initialization runs before guest modules, including after snapshot restore. export const process: { pid: number; args: readonly string[]; cwd(): string; hostname(): string; osRelease(): string; uptime(): number; loadavg(): [number, number, number]; } = { pid: undefined!, args: undefined!, cwd() { return result(op_process_cwd()); }, hostname() { return result(op_sys_hostname()); }, osRelease() { return result(op_sys_os_release()); }, uptime() { return result(op_sys_uptime()); }, loadavg() { return result(op_sys_loadavg()); }, }; export const runtime: { os: "linux" | "macos" | "windows"; arch: "x86_64" | "aarch64"; version: string; v8: string; } = { os: undefined!, arch: undefined!, version: undefined!, v8: undefined!, }; onRuntimeStart(() => { const info = op_runtime_info(); process.pid = info[0]; process.args = ObjectFreeze(info[5]); runtime.os = info[1]; runtime.arch = info[2]; runtime.version = info[3]; runtime.v8 = info[4]; ObjectFreeze(process); ObjectFreeze(runtime); });