diff options
author | Luca Casonato <lucacasonato@yahoo.com> | 2020-04-30 17:23:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-30 11:23:40 -0400 |
commit | 80e22111416751ce34dbc5cb32ffa9f293517370 (patch) | |
tree | 5b3fe5d16ee07143e5dcb2c766a1f48c296ad9d6 /cli/js/net_unstable.ts | |
parent | 4993a6504b4b447e0e02454094cffb02ee18c081 (diff) |
Unstable methods should not appear in runtime or d.ts (#4957)
Co-authored-by: Kitson Kelly <me@kitsonkelly.com>
Diffstat (limited to 'cli/js/net_unstable.ts')
-rw-r--r-- | cli/js/net_unstable.ts | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/cli/js/net_unstable.ts b/cli/js/net_unstable.ts new file mode 100644 index 000000000..24c1d619d --- /dev/null +++ b/cli/js/net_unstable.ts @@ -0,0 +1,79 @@ +import * as netOps from "./ops/net.ts"; +import { + Listener, + DatagramConn, + ListenerImpl, + DatagramImpl, + ConnectOptions, + Conn, + ConnImpl, + listen as stableListen, + connect as stableConnect, +} from "./net.ts"; + +export interface ListenOptions { + port: number; + hostname?: string; + transport?: "tcp" | "udp"; +} + +export interface UnixListenOptions { + transport: "unix" | "unixpacket"; + path: string; +} + +export function listen( + options: ListenOptions & { transport?: "tcp" } +): Listener; +export function listen( + options: UnixListenOptions & { transport: "unix" } +): Listener; +export function listen(options: ListenOptions | UnixListenOptions): Listener { + if (options.transport === "unix") { + const res = netOps.listen(options); + return new ListenerImpl(res.rid, res.localAddr); + } else { + return stableListen(options as ListenOptions & { transport?: "tcp" }); + } +} + +export function listenDatagram( + options: ListenOptions & { transport: "udp" } +): DatagramConn; +export function listenDatagram( + options: UnixListenOptions & { transport: "unixpacket" } +): DatagramConn; +export function listenDatagram( + options: ListenOptions | UnixListenOptions +): DatagramConn { + let res; + if (options.transport === "unixpacket") { + res = netOps.listen(options); + } else { + res = netOps.listen({ + transport: "udp", + hostname: "127.0.0.1", + ...(options as ListenOptions), + }); + } + + return new DatagramImpl(res.rid, res.localAddr); +} + +export interface UnixConnectOptions { + transport: "unix"; + path: string; +} + +export async function connect(options: UnixConnectOptions): Promise<Conn>; +export async function connect(options: ConnectOptions): Promise<Conn>; +export async function connect( + options: ConnectOptions | UnixConnectOptions +): Promise<Conn> { + if (options.transport === "unix") { + const res = await netOps.connect(options); + return new ConnImpl(res.rid, res.remoteAddr!, res.localAddr!); + } else { + return stableConnect(options as ConnectOptions); + } +} |