Skip to main content
Module

std/node/process.ts

Deno standard library
Go to Latest
File
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.import { notImplemented } from "./_utils.ts";import EventEmitter from "./events.ts";import { fromFileUrl } from "../path/mod.ts";
const notImplementedEvents = [ "beforeExit", "disconnect", "message", "multipleResolves", "rejectionHandled", "SIGBREAK", "SIGBUS", "SIGFPE", "SIGHUP", "SIGILL", "SIGINT", "SIGSEGV", "SIGTERM", "SIGWINCH", "uncaughtException", "uncaughtExceptionMonitor", "unhandledRejection", "warning",];
/** https://nodejs.org/api/process.html#process_process_arch */export const arch = Deno.build.arch;
function getArguments() { return [Deno.execPath(), fromFileUrl(Deno.mainModule), ...Deno.args];}
//deno-lint-ignore ban-ts-comment//@ts-ignoreconst _argv: { [Deno.customInspect]: () => string; [key: number]: string;} = [];
Object.defineProperty(_argv, Deno.customInspect, { enumerable: false, configurable: false, get: function () { return getArguments(); },});
/** * https://nodejs.org/api/process.html#process_process_argv * Read permissions are required in order to get the executable route * */export const argv: Record<string, string> = new Proxy(_argv, { get(target, prop) { if (prop === Deno.customInspect) { return target[Deno.customInspect]; } return getArguments()[prop as number]; }, ownKeys() { return Reflect.ownKeys(getArguments()); },});
/** https://nodejs.org/api/process.html#process_process_chdir_directory */export const chdir = Deno.chdir;
/** https://nodejs.org/api/process.html#process_process_cwd */export const cwd = Deno.cwd;
//deno-lint-ignore ban-ts-comment//@ts-ignoreconst _env: { [Deno.customInspect]: () => string;} = {};
Object.defineProperty(_env, Deno.customInspect, { enumerable: false, configurable: false, get: function () { return Deno.env.toObject(); },});
/** * https://nodejs.org/api/process.html#process_process_env * Requires env permissions * */export const env: Record<string, string> = new Proxy(_env, { get(target, prop) { if (prop === Deno.customInspect) { return target[Deno.customInspect]; } return Deno.env.get(String(prop)); }, ownKeys() { return Reflect.ownKeys(Deno.env.toObject()); }, set(_target, prop, value) { Deno.env.set(String(prop), String(value)); return value; },});
/** https://nodejs.org/api/process.html#process_process_exit_code */export const exit = Deno.exit;
/** https://nodejs.org/api/process.html#process_process_nexttick_callback_args */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); }}
/** https://nodejs.org/api/process.html#process_process_pid */export const pid = Deno.pid;
/** https://nodejs.org/api/process.html#process_process_platform */export const platform = Deno.build.os === "windows" ? "win32" : Deno.build.os;
/** https://nodejs.org/api/process.html#process_process_version */export const version = `v${Deno.version.deno}`;
/** https://nodejs.org/api/process.html#process_process_versions */export const versions = { node: Deno.version.deno, ...Deno.version,};
class Process extends EventEmitter { constructor() { super();
//This causes the exit event to be binded to the unload event window.addEventListener("unload", () => { //TODO(Soremwar) //Get the exit code from the unload event super.emit("exit", 0); }); }
/** https://nodejs.org/api/process.html#process_process_arch */ arch = arch;
/** * https://nodejs.org/api/process.html#process_process_argv * Read permissions are required in order to get the executable route * */ argv = argv;
/** https://nodejs.org/api/process.html#process_process_chdir_directory */ chdir = chdir;
/** https://nodejs.org/api/process.html#process_process_cwd */ cwd = cwd;
/** https://nodejs.org/api/process.html#process_process_exit_code */ exit = exit;
/** * https://nodejs.org/api/process.html#process_process_env * Requires env permissions * */ env = env;
/** https://nodejs.org/api/process.html#process_process_nexttick_callback_args */ nextTick = nextTick;
/** https://nodejs.org/api/process.html#process_process_events */ //deno-lint-ignore ban-types on(event: typeof notImplementedEvents[number], listener: Function): never; on(event: "exit", listener: (code: number) => void): this; //deno-lint-ignore no-explicit-any on(event: string, listener: (...args: any[]) => void): this { if (notImplementedEvents.includes(event)) { notImplemented(); }
super.on(event, listener);
return this; }
/** https://nodejs.org/api/process.html#process_process_pid */ pid = pid;
/** https://nodejs.org/api/process.html#process_process_platform */ platform = platform;
removeAllListeners(_event: string): never { notImplemented(); }
removeListener( event: typeof notImplementedEvents[number], //deno-lint-ignore ban-types listener: Function, ): never; removeListener(event: "exit", listener: (code: number) => void): this; //deno-lint-ignore no-explicit-any removeListener(event: string, listener: (...args: any[]) => void): this { if (notImplementedEvents.includes(event)) { notImplemented(); }
super.removeListener("exit", listener);
return this; }
/** https://nodejs.org/api/process.html#process_process_stderr */ get stderr() { return { fd: Deno.stderr.rid, get isTTY(): boolean { return Deno.isatty(this.fd); }, pipe(_destination: Deno.Writer, _options: { end: boolean }): void { // TODO(JayHelton): to be implemented notImplemented(); }, // deno-lint-ignore ban-types write(_chunk: string | Uint8Array, _callback: Function): void { // TODO(JayHelton): to be implemented notImplemented(); }, // deno-lint-ignore ban-types on(_event: string, _callback: Function): void { // TODO(JayHelton): to be implemented notImplemented(); }, }; }
/** https://nodejs.org/api/process.html#process_process_stdin */ get stdin() { return { fd: Deno.stdin.rid, get isTTY(): boolean { return Deno.isatty(this.fd); }, read(_size: number): void { // TODO(JayHelton): to be implemented notImplemented(); }, // deno-lint-ignore ban-types on(_event: string, _callback: Function): void { // TODO(JayHelton): to be implemented notImplemented(); }, }; }
/** https://nodejs.org/api/process.html#process_process_stdout */ get stdout() { return { fd: Deno.stdout.rid, get isTTY(): boolean { return Deno.isatty(this.fd); }, pipe(_destination: Deno.Writer, _options: { end: boolean }): void { // TODO(JayHelton): to be implemented notImplemented(); }, // deno-lint-ignore ban-types write(_chunk: string | Uint8Array, _callback: Function): void { // TODO(JayHelton): to be implemented notImplemented(); }, // deno-lint-ignore ban-types on(_event: string, _callback: Function): void { // TODO(JayHelton): to be implemented notImplemented(); }, }; }
/** https://nodejs.org/api/process.html#process_process_version */ version = version;
/** https://nodejs.org/api/process.html#process_process_versions */ versions = versions;}
/** https://nodejs.org/api/process.html#process_process */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;
//TODO(Soremwar)//Remove on 1.0//Kept for backwars compatibility with stdexport { process };