char/avril

(wip) why'd you have to go and make things so complicaaaaated?

git clone https://git.t4t.associates/char/avril

Charlotte Somgenerate std typedefs from typescript impl38d7f6c

main
2.1 KiB34 linesraw
1declare module "ext:core/ops" {
2  import type { FileReply } from "ext:file/errors.js";
3
4  export type NetAddress =
5    | { readonly transport: "tcp"; readonly hostname: string; readonly port: number }
6    | { readonly transport: "unix"; readonly path: string | null };
7  export interface NetUdpAddress {
8    transport: "udp";
9    hostname: string;
10    port: number;
11  }
12  const listenerAddress: unique symbol;
13  export type NetListenerId<A extends NetAddress> = number & { readonly [listenerAddress]: A };
14  export type NetConnection<A extends NetAddress = NetAddress> = [id: number, local: A, remote: A];
15  export type NetListener<A extends NetAddress = NetAddress> = [id: NetListenerId<A>, local: A];
16  export type NetDatagram = [id: number, local: NetUdpAddress];
17  export function op_net_listen(address: NetAddress & { __proto__?: null }): FileReply<NetListener>;
18  export function op_net_connect_start(address: NetAddress & { __proto__?: null }): FileReply<number>;
19  export function op_net_connected(id: number): Promise<FileReply<NetConnection>>;
20  export function op_net_accept<A extends NetAddress>(id: NetListenerId<A>): Promise<FileReply<NetConnection<A>>>;
21  export function op_net_read(args: [id: number, count: number]): Promise<FileReply<Uint8Array<ArrayBuffer> | null>>;
22  export function op_net_write(args: [id: number, bytes: Uint8Array<ArrayBuffer>]): Promise<FileReply<number>>;
23  export function op_net_writev(args: [id: number, buffers: Uint8Array<ArrayBuffer>[]]): Promise<FileReply<number>>;
24  export function op_net_shutdown(id: number): Promise<FileReply<null>>;
25  export function op_net_close(id: number): FileReply<null>;
26  export function op_net_datagram_listen(address: NetUdpAddress & { __proto__?: null }): FileReply<NetDatagram>;
27  export function op_net_datagram_broadcast(args: [id: number, enabled: boolean]): FileReply<null>;
28  export function op_net_datagram_receive(
29    args: [id: number, count: number],
30  ): Promise<FileReply<[Uint8Array<ArrayBuffer>, NetUdpAddress]>>;
31  export function op_net_datagram_send(
32    args: [id: number, bytes: Uint8Array<ArrayBuffer>, target: NetUdpAddress],
33  ): Promise<FileReply<number>>;
34}