posix-node
Version:
Missing Posix Functions for Node.js (via a native module written in Zig)
197 lines (196 loc) • 6.6 kB
TypeScript
/// <reference types="node" />
export interface Hostent {
h_name: string;
h_length: number;
h_addrtype: number;
h_addr_list: string[];
h_aliases: string[];
}
export interface Sockaddr {
sa_len: number;
sa_family: number;
sa_data: Buffer;
}
export interface Addrinfo extends Sockaddr {
ai_flags: number;
ai_family: number;
ai_socktype: number;
ai_protocol: number;
ai_addrlen: number;
ai_canonname?: string;
}
interface StatsVFS {
f_bsize: number;
f_frsize: number;
f_blocks: number;
f_bfree: number;
f_bavail: number;
f_files: number;
f_ffree: number;
f_favail: number;
f_fsid: number;
f_flag: number;
f_namemax: number;
}
interface Termios {
c_iflag: number;
c_oflag: number;
c_cflag: number;
c_lflag: number;
}
declare type PosixSpawnFileActions = any[];
interface PosixSpawnAttributes {
sched_priority?: number;
schedpolicy?: number;
flags?: number;
pgroup?: number;
sigmask?: Set<number> | number[];
sigdefault?: Set<number> | number[];
}
interface PosixFunctions {
getpid: () => number;
constants: {
[name: string]: number;
};
alarm: (seconds: number) => number;
chroot: (path: string) => void;
getegid: () => number;
geteuid: () => number;
gethostname: () => string;
getpgid: (number: any) => number;
getpgrp: () => number;
getppid: () => number;
setpgid: (pid: number, pgid: number) => void;
setregid: (rgid: number, egid: number) => void;
setreuid: (ruid: number, euid: number) => void;
setsid: () => number;
setegid: (gid: number) => void;
seteuid: (uid: number) => void;
sethostname: (name: string) => void;
sleep: (seconds: number) => number;
usleep: (microseconds: number) => number;
ttyname: (fd: number) => string;
dup: (oldfd: number) => number;
dup2: (oldfd: number, newfd: number) => number;
chdir: (path: string) => void;
getcwd: () => string;
fork: () => number;
close_event_loop: () => void;
pipe: () => {
readfd: number;
writefd: number;
};
pipe2: (flags: number) => {
readfd: number;
writefd: number;
};
getresuid: () => {
ruid: number;
euid: number;
suid: number;
};
getresgid: () => {
rgid: number;
egid: number;
sgid: number;
};
setresgid: (rgid: number, egid: number, sgid: number) => void;
setresuid: (ruid: number, euid: number, suid: number) => void;
fcntlSetFlags: (fd: number, flags: number) => void;
fcntlGetFlags: (fd: number) => number;
execv: (pathname: string, argv: string[]) => number;
execvp: (file: string, argv: string[]) => number;
execve: (pathname: string, argv: string[], env: {
[key: string]: string;
}) => number;
_execve: (pathname: string, argv: string[], envp: string[]) => number;
fexecve: (fd: number, argv: string[], env: {
[key: string]: string;
}) => number;
_fexecve: (fd: number, argv: string[], envp: string[]) => number;
fork_exec: (args: {
exec_array: string[];
argv: string[];
envp: string[];
cwd: string;
p2cread: number;
p2cwrite: number;
c2pread: number;
c2pwrite: number;
errread: number;
errwrite: number;
errpipe_read: number;
errpipe_write: number;
fds_to_keep: number[];
err_map: number[];
WASI_FD_INFO: string;
}) => number;
set_inheritable: (fd: number, inheritable: boolean) => void;
is_inheritable: (fd: number) => boolean;
lockf: (fd: number, cmd: number, size: BigInt) => void;
pause: () => number;
if_indextoname: (ifindex: number) => string;
if_nametoindex: (ifname: string) => number;
if_nameindex: () => [number, string][];
_posix_spawn: (path: string, fileActions: any, attrs: any, argv: string[], envp: string[], // same format at system call
p_version: boolean) => number;
posix_spawn: (path: string, fileActions: PosixSpawnFileActions | undefined | null, attrs: PosixSpawnAttributes | undefined | null, argv: string[], envp: {
[key: string]: string;
} | string[]) => number;
posix_spawnp: (path: string, fileActions: PosixSpawnFileActions | undefined | null, attrs: PosixSpawnAttributes | undefined | null, argv: string[], envp: {
[key: string]: string;
} | string[]) => number;
wait: () => {
wstatus: number;
ret: number;
};
wait3: (options: number) => {
wstatus: number;
ret: number;
};
waitpid: (pid: number, options: number) => {
wstatus: number;
ret: number;
};
login_tty: (fd: number) => void;
statvfs: (path: string) => StatsVFS;
fstatvfs: (fd: number) => StatsVFS;
ctermid: () => string;
gai_strerror: (errcode: number) => string;
hstrerror: (errcode: number) => string;
gethostbyname: (name: string) => Hostent;
gethostbyaddr: (addr: string) => Hostent;
getaddrinfo: (node: string, service: string, hints?: {
flags?: number;
family?: number;
socktype?: number;
protocol?: number;
}) => Addrinfo[];
accept: (socket: number) => {
fd: number;
sockaddr: Sockaddr;
};
bind: (socket: number, sockaddr: Sockaddr) => void;
connect: (socket: number, sockaddr: Sockaddr) => void;
getsockname: (socket: number) => Sockaddr;
getpeername: (socket: number) => Sockaddr;
listen: (socket: number, backlog: number) => void;
recv: (socket: number, buffer: Buffer, flags: number) => number;
send: (socket: number, buffer: Buffer, flags: number) => number;
shutdown: (socket: number, how: number) => void;
socket: (family: number, socktype: number, protocol: number) => number;
getsockopt: (socket: number, level: number, option_name: number, max_len: number) => Buffer;
setsockopt: (socket: number, level: number, option_name: number, option_value: Buffer) => void;
getChar: () => string;
enableRawInput: () => void;
setEcho: (enabled: boolean) => void;
makeStdinBlocking: () => void;
tcgetattr: (fd: number) => Termios;
tcsetattr: (fd: number, optional_actions: number, tio: Termios) => void;
watchForSignal: (signal: number) => void;
getSignalState: (signal: number) => boolean;
pollSocket: (fd: number, events: number, timeout_ms: number) => void;
}
export declare type Posix = Partial<PosixFunctions>;
declare let mod1: Posix;
export default mod1;