@ac-kit/node 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +2 -0
  3. package/dist/index.d.ts +5 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +5 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/net/connection-closed-error.d.ts +12 -0
  8. package/dist/net/connection-closed-error.d.ts.map +1 -0
  9. package/dist/net/connection-closed-error.js +15 -0
  10. package/dist/net/connection-closed-error.js.map +1 -0
  11. package/dist/net/dgram-socket.d.ts +2 -2
  12. package/dist/net/dgram-socket.d.ts.map +1 -1
  13. package/dist/net/dgram-socket.js +35 -35
  14. package/dist/net/dgram-socket.js.map +1 -1
  15. package/dist/net/inet-socket.d.ts +64 -0
  16. package/dist/net/inet-socket.d.ts.map +1 -0
  17. package/dist/net/inet-socket.js +103 -0
  18. package/dist/net/inet-socket.js.map +1 -0
  19. package/dist/net/ipc-server.d.ts +63 -0
  20. package/dist/net/ipc-server.d.ts.map +1 -0
  21. package/dist/net/ipc-server.js +75 -0
  22. package/dist/net/ipc-server.js.map +1 -0
  23. package/dist/net/ipc-socket.d.ts +55 -22
  24. package/dist/net/ipc-socket.d.ts.map +1 -1
  25. package/dist/net/ipc-socket.js +50 -46
  26. package/dist/net/ipc-socket.js.map +1 -1
  27. package/dist/net/stream-server.d.ts +80 -0
  28. package/dist/net/stream-server.d.ts.map +1 -0
  29. package/dist/net/stream-server.js +129 -0
  30. package/dist/net/stream-server.js.map +1 -0
  31. package/dist/net/stream-socket.d.ts +37 -8
  32. package/dist/net/stream-socket.d.ts.map +1 -1
  33. package/dist/net/stream-socket.js +80 -27
  34. package/dist/net/stream-socket.js.map +1 -1
  35. package/dist/net/tcp-server.d.ts +31 -73
  36. package/dist/net/tcp-server.d.ts.map +1 -1
  37. package/dist/net/tcp-server.js +41 -147
  38. package/dist/net/tcp-server.js.map +1 -1
  39. package/dist/net/tcp-socket.d.ts +21 -61
  40. package/dist/net/tcp-socket.d.ts.map +1 -1
  41. package/dist/net/tcp-socket.js +23 -126
  42. package/dist/net/tcp-socket.js.map +1 -1
  43. package/dist/net/tls-server.d.ts +87 -0
  44. package/dist/net/tls-server.d.ts.map +1 -0
  45. package/dist/net/tls-server.js +103 -0
  46. package/dist/net/tls-server.js.map +1 -0
  47. package/dist/net/tls-socket.d.ts +235 -14
  48. package/dist/net/tls-socket.d.ts.map +1 -1
  49. package/dist/net/tls-socket.js +241 -91
  50. package/dist/net/tls-socket.js.map +1 -1
  51. package/package.json +4 -4
  52. package/dist/shell/escape-command-arg.d.ts +0 -9
  53. package/dist/shell/escape-command-arg.d.ts.map +0 -1
  54. package/dist/shell/escape-command-arg.js +0 -13
  55. package/dist/shell/escape-command-arg.js.map +0 -1
  56. package/dist/shell/escape-command.d.ts +0 -10
  57. package/dist/shell/escape-command.d.ts.map +0 -1
  58. package/dist/shell/escape-command.js +0 -12
  59. package/dist/shell/escape-command.js.map +0 -1
@@ -44,6 +44,23 @@ export type StreamSocketEvents = {
44
44
  */
45
45
  timeout: [];
46
46
  };
47
+ /** Options accepted by {@link StreamSocket.from}. */
48
+ export type StreamSocketOptions = net.SocketConstructorOpts;
49
+ /** Options accepted by {@link StreamSocket.end}. */
50
+ export type StreamSocketEndOptions = {
51
+ /**
52
+ * Waits for the remote side to close as well, instead of resolving as soon as
53
+ * the local FIN is queued.
54
+ */
55
+ waitForClose?: boolean;
56
+ };
57
+ /** Options accepted by {@link StreamSocket.awaitReady}. */
58
+ export type StreamSocketAwaitReadyOptions = {
59
+ /** Aborts the attempt, destroying the socket. */
60
+ signal?: AbortSignal;
61
+ /** Starts the attempt, once the settlement listeners are in place. */
62
+ start?: () => void;
63
+ };
47
64
  /**
48
65
  * Base class for stream-oriented client sockets.
49
66
  *
@@ -64,8 +81,8 @@ export type StreamSocketEvents = {
64
81
  * Unless explicitly documented otherwise, methods mirror the semantics of their
65
82
  * underlying {@link net.Socket} counterparts.
66
83
  */
67
- export declare class StreamSocket<TSock extends net.Socket = net.Socket, TEvents extends StreamSocketEvents = StreamSocketEvents> extends EventDispatcherMapBase<TEvents> implements IEventDispatcherMap<TEvents> {
68
- protected readonly sock: TSock;
84
+ export declare class StreamSocket<TSocket extends net.Socket = net.Socket, TEvents extends StreamSocketEvents = StreamSocketEvents> extends EventDispatcherMapBase<TEvents> implements IEventDispatcherMap<TEvents> {
85
+ protected readonly socket: TSocket;
69
86
  protected readonly handledErrorEvents: Set<IError>;
70
87
  /**
71
88
  * Creates a new {@link StreamSocket} instance.
@@ -73,13 +90,13 @@ export declare class StreamSocket<TSock extends net.Socket = net.Socket, TEvents
73
90
  * @param options Options for creating the underlying Node.js socket.
74
91
  * @returns A new `StreamSocket` instance.
75
92
  */
76
- static from(options?: net.SocketConstructorOpts): StreamSocket;
93
+ static from(options?: StreamSocketOptions): StreamSocket;
77
94
  /**
78
95
  * Creates a new {@link StreamSocket} instance.
79
96
  *
80
- * @param sock The underlying Node.js socket.
97
+ * @param socket The underlying Node.js socket.
81
98
  */
82
- constructor(sock: TSock);
99
+ constructor(socket: TSocket);
83
100
  /**
84
101
  * Underlying duplex stream for reading and writing data.
85
102
  *
@@ -128,9 +145,7 @@ export declare class StreamSocket<TSock extends net.Socket = net.Socket, TEvents
128
145
  * @param options Optional settings for ending the socket.
129
146
  * @returns A promise that resolves once the socket has ended.
130
147
  */
131
- end(options?: {
132
- waitForClose?: boolean;
133
- }): Promise<void>;
148
+ end(options?: StreamSocketEndOptions): Promise<void>;
134
149
  /**
135
150
  * Writes data to the socket and resolves once that chunk has been flushed.
136
151
  *
@@ -151,6 +166,20 @@ export declare class StreamSocket<TSock extends net.Socket = net.Socket, TEvents
151
166
  * still be invoked.
152
167
  */
153
168
  destroy(): void;
169
+ /**
170
+ * Runs an operation that establishes the connection and resolves once the
171
+ * socket emits `readyEvent`.
172
+ *
173
+ * The promise always settles: an "error" event rejects it and is consumed so
174
+ * it is not also dispatched to subscribers, a "close" event without a
175
+ * preceding error rejects with {@link ConnectionClosedError}, and aborting the
176
+ * signal destroys the socket and rejects with the abort reason.
177
+ *
178
+ * @param readyEvent Underlying socket event signalling a usable connection.
179
+ * @param options Abort signal and the operation that starts the connection.
180
+ * @returns A promise that resolves once the connection is established.
181
+ */
182
+ protected awaitReady(readyEvent: string, options?: StreamSocketAwaitReadyOptions): Promise<void>;
154
183
  protected setupEventForwarding(): void;
155
184
  }
156
185
  //# sourceMappingURL=stream-socket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-socket.d.ts","sourceRoot":"","sources":["../../src/net/stream-socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC;;;;;OAKG;IACH,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEvB;;;;OAIG;IACH,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE3B;;;;OAIG;IACH,OAAO,EAAE,EAAE,CAAC;IAEZ;;;;;OAKG;IACH,KAAK,EAAE,EAAE,CAAC;IAEV;;;;;OAKG;IACH,OAAO,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,YAAY,CACxB,KAAK,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EACrC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAEvD,SAAQ,sBAAsB,CAAC,OAAO,CACtC,YAAW,mBAAmB,CAAC,OAAO,CAAC;IAmB3B,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK;IAjB1C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAE/D;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,qBAAqB,GAAG,YAAY,CAE7D;IAED;;;;OAIG;IACH,YAA+B,IAAI,EAAE,KAAK,EAGzC;IAED;;;;;OAKG;IACH,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAE1B;IAED,0DAA0D;IAC1D,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,kEAAkE;IAClE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,yDAAyD;IACzD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0DAA0D;IAC1D,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,oEAAoE;IACpE,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,yEAAyE;IACzE,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAED;;;;;;OAMG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAEjC;IAED;;;OAGG;IACH,GAAG,IAAI,IAAI,CAEV;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;;;;;;;;;OAUG;IACH,GAAG,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBvD;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrC;IAED;;;;;;OAMG;IACH,OAAO,IAAI,IAAI,CAEd;IAED,SAAS,CAAC,oBAAoB,IAAI,IAAI,CAwBrC;CACD"}
1
+ {"version":3,"file":"stream-socket.d.ts","sourceRoot":"","sources":["../../src/net/stream-socket.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as net from "node:net";
2
2
  import { EventDispatcherMapBase } from "@ac-kit/async";
3
+ import { ConnectionClosedError } from "./connection-closed-error.js";
3
4
  /**
4
5
  * Base class for stream-oriented client sockets.
5
6
  *
@@ -21,7 +22,7 @@ import { EventDispatcherMapBase } from "@ac-kit/async";
21
22
  * underlying {@link net.Socket} counterparts.
22
23
  */
23
24
  export class StreamSocket extends EventDispatcherMapBase {
24
- sock;
25
+ socket;
25
26
  handledErrorEvents = new Set();
26
27
  /**
27
28
  * Creates a new {@link StreamSocket} instance.
@@ -35,11 +36,11 @@ export class StreamSocket extends EventDispatcherMapBase {
35
36
  /**
36
37
  * Creates a new {@link StreamSocket} instance.
37
38
  *
38
- * @param sock The underlying Node.js socket.
39
+ * @param socket The underlying Node.js socket.
39
40
  */
40
- constructor(sock) {
41
+ constructor(socket) {
41
42
  super();
42
- this.sock = sock;
43
+ this.socket = socket;
43
44
  this.setupEventForwarding();
44
45
  }
45
46
  /**
@@ -49,31 +50,31 @@ export class StreamSocket extends EventDispatcherMapBase {
49
50
  * to APIs that expect a Node.js stream.
50
51
  */
51
52
  get stream() {
52
- return this.sock;
53
+ return this.socket;
53
54
  }
54
55
  /** Indicates whether the socket has been fully closed. */
55
56
  get closed() {
56
- return this.sock.closed;
57
+ return this.socket.closed;
57
58
  }
58
59
  /** Indicates whether the underlying socket has been destroyed. */
59
60
  get destroyed() {
60
- return this.sock.destroyed;
61
+ return this.socket.destroyed;
61
62
  }
62
63
  /** Total number of bytes read from the socket so far. */
63
64
  get bytesRead() {
64
- return this.sock.bytesRead;
65
+ return this.socket.bytesRead;
65
66
  }
66
67
  /** Total number of bytes written to the socket so far. */
67
68
  get bytesWritten() {
68
- return this.sock.bytesWritten;
69
+ return this.socket.bytesWritten;
69
70
  }
70
71
  /** Whether the socket is currently in the process of connecting. */
71
72
  get connecting() {
72
- return this.sock.connecting;
73
+ return this.socket.connecting;
73
74
  }
74
75
  /** Current inactivity timeout in milliseconds, or `null` if disabled. */
75
76
  get timeout() {
76
- return this.sock.timeout ?? null;
77
+ return this.socket.timeout ?? null;
77
78
  }
78
79
  /**
79
80
  * Updates the inactivity timeout for the socket.
@@ -83,21 +84,21 @@ export class StreamSocket extends EventDispatcherMapBase {
83
84
  * `null` disables the timeout entirely.
84
85
  */
85
86
  set timeout(timeout) {
86
- this.sock.setTimeout(timeout ?? 0);
87
+ this.socket.setTimeout(timeout ?? 0);
87
88
  }
88
89
  /**
89
90
  * Marks the socket as referenced, preventing the Node.js process from exiting
90
91
  * while the socket is active.
91
92
  */
92
93
  ref() {
93
- this.sock.ref();
94
+ this.socket.ref();
94
95
  }
95
96
  /**
96
97
  * Marks the socket as unreferenced, allowing the Node.js process to exit even
97
98
  * if the socket is still active.
98
99
  */
99
100
  unref() {
100
- this.sock.unref();
101
+ this.socket.unref();
101
102
  }
102
103
  /**
103
104
  * Half-closes the socket, optionally waiting for a full close.
@@ -117,17 +118,17 @@ export class StreamSocket extends EventDispatcherMapBase {
117
118
  reject(error);
118
119
  };
119
120
  const handleEnd = () => {
120
- this.sock.removeListener("error", handleError);
121
+ this.socket.removeListener("error", handleError);
121
122
  resolve();
122
123
  };
123
- this.sock.prependOnceListener("error", handleError);
124
- if (options?.waitForClose && !this.sock.closed) {
125
- this.sock.prependOnceListener("close", () => {
126
- this.sock.removeListener("error", handleError);
124
+ this.socket.prependOnceListener("error", handleError);
125
+ if (options?.waitForClose && !this.socket.closed) {
126
+ this.socket.prependOnceListener("close", () => {
127
+ this.socket.removeListener("error", handleError);
127
128
  resolve();
128
129
  });
129
130
  }
130
- this.sock.end(options?.waitForClose && !this.sock.closed ? undefined : handleEnd);
131
+ this.socket.end(options?.waitForClose && !this.socket.closed ? undefined : handleEnd);
131
132
  });
132
133
  }
133
134
  /**
@@ -150,7 +151,7 @@ export class StreamSocket extends EventDispatcherMapBase {
150
151
  }
151
152
  resolve();
152
153
  };
153
- this.sock.write(data, callback);
154
+ this.socket.write(data, callback);
154
155
  });
155
156
  }
156
157
  /**
@@ -161,26 +162,78 @@ export class StreamSocket extends EventDispatcherMapBase {
161
162
  * still be invoked.
162
163
  */
163
164
  destroy() {
164
- this.sock.destroy();
165
+ this.socket.destroy();
166
+ }
167
+ /**
168
+ * Runs an operation that establishes the connection and resolves once the
169
+ * socket emits `readyEvent`.
170
+ *
171
+ * The promise always settles: an "error" event rejects it and is consumed so
172
+ * it is not also dispatched to subscribers, a "close" event without a
173
+ * preceding error rejects with {@link ConnectionClosedError}, and aborting the
174
+ * signal destroys the socket and rejects with the abort reason.
175
+ *
176
+ * @param readyEvent Underlying socket event signalling a usable connection.
177
+ * @param options Abort signal and the operation that starts the connection.
178
+ * @returns A promise that resolves once the connection is established.
179
+ */
180
+ awaitReady(readyEvent, options) {
181
+ const { signal, start } = options ?? {};
182
+ return new Promise((resolve, reject) => {
183
+ const abortListeners = new AbortController();
184
+ const cleanup = () => {
185
+ abortListeners.abort();
186
+ this.socket.removeListener(readyEvent, handleReady);
187
+ this.socket.removeListener("error", handleError);
188
+ this.socket.removeListener("close", handleClose);
189
+ };
190
+ const handleReady = () => {
191
+ cleanup();
192
+ resolve();
193
+ };
194
+ const handleError = (error) => {
195
+ this.handledErrorEvents.add(error);
196
+ cleanup();
197
+ reject(error);
198
+ };
199
+ // A peer that drops the transport mid-connection closes it without an
200
+ // "error"; without this the promise would stay pending forever.
201
+ const handleClose = () => {
202
+ cleanup();
203
+ reject(new ConnectionClosedError(`Socket closed before the "${readyEvent}" event`));
204
+ };
205
+ if (signal) {
206
+ signal.throwIfAborted();
207
+ signal.addEventListener("abort", () => {
208
+ cleanup();
209
+ this.socket.destroy();
210
+ reject(signal.reason);
211
+ }, { once: true, signal: abortListeners.signal });
212
+ }
213
+ this.socket.once(readyEvent, handleReady);
214
+ this.socket.prependOnceListener("error", handleError);
215
+ this.socket.once("close", handleClose);
216
+ start?.();
217
+ });
165
218
  }
166
219
  setupEventForwarding() {
167
- this.sock.on("error", (err) => {
220
+ this.socket.on("error", (err) => {
168
221
  if (this.handledErrorEvents.has(err)) {
169
222
  this.handledErrorEvents.delete(err);
170
223
  return;
171
224
  }
172
225
  this.dispatch("error", [err]);
173
226
  });
174
- this.sock.on("close", (hadError) => {
227
+ this.socket.on("close", (hadError) => {
175
228
  this.dispatch("close", [hadError]);
176
229
  });
177
- this.sock.on("connect", () => {
230
+ this.socket.on("connect", () => {
178
231
  this.dispatch("connect", []);
179
232
  });
180
- this.sock.on("ready", () => {
233
+ this.socket.on("ready", () => {
181
234
  this.dispatch("ready", []);
182
235
  });
183
- this.sock.on("timeout", () => {
236
+ this.socket.on("timeout", () => {
184
237
  this.dispatch("timeout", []);
185
238
  });
186
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream-socket.js","sourceRoot":"","sources":["../../src/net/stream-socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream-socket.js","sourceRoot":"","sources":["../../src/net/stream-socket.ts"],"names":[],"mappings":"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"}
@@ -1,110 +1,68 @@
1
1
  import * as net from "node:net";
2
- import { EventDispatcherMapBase, IEventDispatcherMap } from "@ac-kit/async";
3
- import { InetEndpoint, type IError } from "@ac-kit/core";
2
+ import { InetEndpoint } from "@ac-kit/core";
4
3
  import type { Except } from "type-fest";
4
+ import { StreamServer, type StreamServerEvents } from "./stream-server.js";
5
5
  import { TcpSocket } from "./tcp-socket.js";
6
- /** Event map for TcpServer server-specific events. */
7
- export type TcpServerEvents = {
8
- /** Emitted when the server closes. */
9
- close: [];
6
+ /** Event map for {@link TcpServer}. */
7
+ export type TcpServerEvents = StreamServerEvents & {
8
+ /** Emitted when a new connection is accepted. */
9
+ connection: [socket: TcpSocket];
10
10
  /**
11
- * Emitted when a new connection is made. The connection is wrapped in a
12
- * TcpClient instance.
13
- */
14
- connection: [client: TcpSocket];
15
- /**
16
- * Emitted when a new connection is dropped. Provides the local and remote
17
- * endpoint information of the dropped connection.
11
+ * Emitted when a connection is dropped because
12
+ * {@link StreamServer.maxConnections} was reached. Each endpoint is `null`
13
+ * when Node.js did not report it.
18
14
  */
19
15
  drop: [
20
16
  localEndpoint: InetEndpoint | null,
21
17
  remoteEndpoint: InetEndpoint | null
22
18
  ];
23
- /** Emitted when an error occurs. */
24
- error: [err: IError];
25
- /** Emitted when the server has been bound after calling server.listen(). */
26
- listening: [];
27
19
  };
20
+ /** Options accepted by {@link TcpServer.from}. */
21
+ export type TcpServerOptions = net.ServerOpts;
22
+ /** Options accepted by {@link TcpServer.listen}. */
23
+ export type TcpServerListenOptions = Except<net.ListenOptions, "port" | "path" | "handle">;
28
24
  /**
29
- * TCP server to accept incoming connections.
25
+ * TCP server accepting incoming connections.
30
26
  *
31
27
  * Example usage:
32
28
  *
33
29
  * ```ts
34
30
  * const server = TcpServer.from();
35
- * server.on("connection", (client) => {
36
- * console.log("Client connected");
37
- * client.stream.on("data", (data) => {
31
+ * server.subscribe("connection", (socket) => {
32
+ * socket.stream.on("data", (data) => {
38
33
  * console.log("Received:", data.toString());
39
34
  * });
40
35
  * });
41
- * await server.listen(8080, "0.0.0.0");
36
+ * await server.listen(8080, { host: "0.0.0.0" });
42
37
  * // ... later
43
38
  * await server.close();
44
39
  * ```
45
40
  */
46
- export declare class TcpServer extends EventDispatcherMapBase<TcpServerEvents> implements IEventDispatcherMap<TcpServerEvents> {
47
- private readonly srv;
41
+ export declare class TcpServer<TServer extends net.Server = net.Server, TEvents extends TcpServerEvents = TcpServerEvents> extends StreamServer<TServer, TEvents> {
48
42
  /**
49
- * Creates a new `TcpServer` instance with the specified options.
43
+ * Creates a new {@link TcpServer} instance.
50
44
  *
51
- * @param options Options for creating the TCP server.
45
+ * @param options Options for creating the underlying Node.js server.
52
46
  * @returns A new `TcpServer` instance.
53
47
  */
54
- static from(options?: net.ServerOpts): TcpServer;
55
- private readonly handledErrorEvents;
56
- constructor(srv: net.Server);
57
- /**
58
- * Gets the current number of concurrent connections on the server.
59
- *
60
- * @returns A promise that resolves with the connection count.
61
- */
62
- getConnections(): Promise<number>;
63
- /** Gets whether the server is currently listening for connections. */
64
- get listening(): boolean;
48
+ static from(options?: TcpServerOptions): TcpServer;
65
49
  /**
66
- * Sets the maximum number of queued pending connections.
50
+ * Binds the server and resolves once it is listening.
67
51
  *
68
- * @param maxConnections The maximum number of connections to queue.
69
- */
70
- set maxConnections(maxConnections: number);
71
- /** Gets the maximum number of queued pending connections. */
72
- get maxConnections(): number;
73
- /**
74
- * References the server, preventing the process from exiting while the server
75
- * is active.
76
- */
77
- ref(): void;
78
- /**
79
- * Unreferences the server, allowing the process from exiting even if the
80
- * server is active.
81
- */
82
- unref(): void;
83
- /**
84
- * Starts the TCP server listening on the specified port and host.
85
- *
86
- * @param port The port to listen on. If 0, a random available port will be
87
- * assigned.
88
- * @param host The host/interface to bind to. Defaults to '::' (IPv6) or
89
- * '0.0.0.0' (IPv4).
52
+ * @param port The port to listen on. Use `0` to let the system assign one.
90
53
  * @param options Additional listen options.
91
- * @returns A promise that resolves when the server is successfully listening.
92
- */
93
- listen(port: number, host?: string, options?: Except<net.ListenOptions, "port" | "host">): Promise<void>;
94
- /**
95
- * Closes the TCP server, stopping it from accepting new connections. Existing
96
- * connections are not automatically closed.
97
- *
98
- * @returns A promise that resolves when the server is fully closed.
54
+ * @returns A promise that resolves once the server is listening.
55
+ * @throws When the address is already in use or cannot be bound.
99
56
  */
100
- close(): Promise<void>;
57
+ listen(port: number, options?: TcpServerListenOptions): Promise<void>;
101
58
  /**
102
- * Gets the address information of the server.
59
+ * Returns the endpoint the server is bound to.
103
60
  *
104
- * @returns The server's endpoint information or null if the server is not
105
- * listening.
61
+ * @returns The bound endpoint, or `null` when the server is not listening.
62
+ * @throws {UnsupportedError} When the server is bound to a path rather than
63
+ * an IP endpoint. Use {@link IpcServer} for those.
106
64
  */
107
65
  address(): InetEndpoint | null;
108
- private setupEventForwarding;
66
+ protected setupEventForwarding(): void;
109
67
  }
110
68
  //# sourceMappingURL=tcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tcp-server.d.ts","sourceRoot":"","sources":["../../src/net/tcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAEN,YAAY,EAEZ,KAAK,MAAM,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG;IAC7B,sCAAsC;IACtC,KAAK,EAAE,EAAE,CAAC;IAEV;;;OAGG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEhC;;;OAGG;IACH,IAAI,EAAE;QACL,aAAa,EAAE,YAAY,GAAG,IAAI;QAClC,cAAc,EAAE,YAAY,GAAG,IAAI;KACnC,CAAC;IAEF,oCAAoC;IACpC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAErB,4EAA4E;IAC5E,SAAS,EAAE,EAAE,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SACZ,SAAQ,sBAAsB,CAAC,eAAe,CAC9C,YAAW,mBAAmB,CAAC,eAAe,CAAC;IAcnC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAZhC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,SAAS,CAE/C;IAED,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0B;IAE7D,YAA6B,GAAG,EAAE,GAAG,CAAC,MAAM,EAG3C;IAED;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAUhC;IAED,sEAAsE;IACtE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;OAIG;IACH,IAAI,cAAc,CAAC,cAAc,EAAE,MAAM,EAExC;IAED,6DAA6D;IAC7D,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;OAGG;IACH,GAAG,IAAI,IAAI,CAEV;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;;;;;;;;OASG;IACH,MAAM,CACL,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAoBf;IAED;;;;;OAKG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAUrB;IAED;;;;;OAKG;IACH,OAAO,IAAI,YAAY,GAAG,IAAI,CAiB7B;IAED,OAAO,CAAC,oBAAoB;CAsD5B"}
1
+ {"version":3,"file":"tcp-server.d.ts","sourceRoot":"","sources":["../../src/net/tcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAEN,YAAY,EAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,uCAAuC;AACvC,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG;IAClD,iDAAiD;IACjD,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEhC;;;;OAIG;IACH,IAAI,EAAE;QACL,aAAa,EAAE,YAAY,GAAG,IAAI;QAClC,cAAc,EAAE,YAAY,GAAG,IAAI;KACnC,CAAC;CACF,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC;AAE9C,oDAAoD;AACpD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAC1C,GAAG,CAAC,aAAa,EACjB,MAAM,GAAG,MAAM,GAAG,QAAQ,CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,SAAS,CACrB,OAAO,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EACvC,OAAO,SAAS,eAAe,GAAG,eAAe,CAChD,SAAQ,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;IACvC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAEjD;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpE;IAED;;;;;;OAMG;IACH,OAAO,IAAI,YAAY,GAAG,IAAI,CAiB7B;IAED,UAAmB,oBAAoB,IAAI,IAAI,CA8B9C;CACD"}