import { notImplemented } from "./_utils.ts";import EventEmitter from "./events.ts";import { fromFileUrl } from "../path/mod.ts";
const customInspect = Symbol.for("Deno.customInspect");const notImplementedEvents = [ "beforeExit", "disconnect", "message", "multipleResolves", "rejectionHandled", "SIGBREAK", "SIGBUS", "SIGFPE", "SIGHUP", "SIGILL", "SIGINT", "SIGSEGV", "SIGTERM", "SIGWINCH", "uncaughtException", "uncaughtExceptionMonitor", "unhandledRejection",];
export const arch = Deno.build.arch;
const argv = ["", "", ...Deno.args];Object.defineProperty(argv, "0", { get() { return Deno.execPath(); },});Object.defineProperty(argv, "1", { get() { return fromFileUrl(Deno.mainModule); },});
export const chdir = Deno.chdir;
export const cwd = Deno.cwd;
const _env: { [customInspect]: () => string;} = {};
Object.defineProperty(_env, customInspect, { enumerable: false, configurable: true, get: function () { return Deno.env.toObject(); },});
export const env: Record<string, string> = new Proxy(_env, { get(target, prop) { if (prop === customInspect) { return target[customInspect]; } return Deno.env.get(String(prop)); }, ownKeys() { return Reflect.ownKeys(Deno.env.toObject()); }, getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }; }, set(_target, prop, value) { Deno.env.set(String(prop), String(value)); return value; },});
export const exit = Deno.exit;
export function nextTick(this: unknown, cb: () => void): void;export function nextTick<T extends Array<unknown>>( this: unknown, cb: (...args: T) => void, ...args: T): void;export function nextTick<T extends Array<unknown>>( this: unknown, cb: (...args: T) => void, ...args: T) { if (args) { queueMicrotask(() => cb.call(this, ...args)); } else { queueMicrotask(cb); }}
export const pid = Deno.pid;
export const platform = Deno.build.os === "windows" ? "win32" : Deno.build.os;
export const version = `v${Deno.version.deno}`;
export const versions = { node: Deno.version.deno, ...Deno.version,};
class Process extends EventEmitter { constructor() { super();
window.addEventListener("unload", () => { super.emit("exit", 0); }); }
arch = arch;
argv = argv;
chdir = chdir;
cwd = cwd;
exit = exit;
env = env;
nextTick = nextTick;
on(event: typeof notImplementedEvents[number], listener: Function): never; on(event: "exit", listener: (code: number) => void): this; on(event: string, listener: (...args: any[]) => void): this { if (notImplementedEvents.includes(event)) { notImplemented(); }
super.on(event, listener);
return this; }
pid = pid;
platform = platform;
removeAllListeners(_event: string): never { notImplemented(); }
removeListener( event: typeof notImplementedEvents[number], listener: Function, ): never; removeListener(event: "exit", listener: (code: number) => void): this; removeListener(event: string, listener: (...args: any[]) => void): this { if (notImplementedEvents.includes(event)) { notImplemented(); }
super.removeListener("exit", listener);
return this; }
hrtime(time?: [number, number]): [number, number] { const milli = performance.now(); const sec = Math.floor(milli / 1000); const nano = Math.floor(milli * 1_000_000 - sec * 1_000_000_000); if (!time) { return [sec, nano]; } const [prevSec, prevNano] = time; return [sec - prevSec, nano - prevNano]; }
get stderr() { return { fd: Deno.stderr.rid, get isTTY(): boolean { return Deno.isatty(this.fd); }, pipe(_destination: Deno.Writer, _options: { end: boolean }): void { notImplemented(); }, write(_chunk: string | Uint8Array, _callback: Function): void { notImplemented(); }, on(_event: string, _callback: Function): void { notImplemented(); }, }; }
get stdin() { return { fd: Deno.stdin.rid, get isTTY(): boolean { return Deno.isatty(this.fd); }, read(_size: number): void { notImplemented(); }, on(_event: string, _callback: Function): void { notImplemented(); }, }; }
get stdout() { return { fd: Deno.stdout.rid, get isTTY(): boolean { return Deno.isatty(this.fd); }, pipe(_destination: Deno.Writer, _options: { end: boolean }): void { notImplemented(); }, write(_chunk: string | Uint8Array, _callback: Function): void { notImplemented(); }, on(_event: string, _callback: Function): void { notImplemented(); }, }; }
version = version;
versions = versions;}
const process = new Process();
Object.defineProperty(process, Symbol.toStringTag, { enumerable: false, writable: true, configurable: false, value: "process",});
export const removeListener = process.removeListener;export const removeAllListeners = process.removeAllListeners;export const stderr = process.stderr;export const stdin = process.stdin;export const stdout = process.stdout;
export default process;
export { process };