mirror of
https://github.com/parnic/node-intellicenter.git
synced 2025-06-16 10:10:13 -05:00
This allows require() and import to work for even better compatibility between CJS and ESM consumers. I dislike that this kills our ability for top-level awaits in example.ts, but seeing as how my primary use case for this library is a commonjs module, I think this is a fair trade-off. Also changed "messages" to not encapsulate its export under the name "messages" to remove some repetition in importing "messages" and still needing to do "messages." to get the methods out. Now it's simple to import each message by name or group them under something like "messages" as desired on a per-library-user basis. Refs: * https://www.kravchyk.com/typescript-npm-package-json-exports/ * https://arethetypeswrong.github.io/ * https://evertpot.com/universal-commonjs-esm-typescript-packages/
48 lines
2.0 KiB
TypeScript
48 lines
2.0 KiB
TypeScript
import { EventEmitter } from "events";
|
|
import { ICRequest } from "./messages/request.js";
|
|
import { ICResponse } from "./messages/response.js";
|
|
/**
|
|
* Contains methods to connect to and communicate with an IntelliCenter controller.
|
|
*
|
|
* Call `connect` to connect to the unit.
|
|
* Use `send` to send a message.
|
|
* Subscribe to events to process socket conditions, notify updates, and message responses (if not `await`ing the response)
|
|
*
|
|
* Available events:
|
|
*
|
|
* * `"response-{messageID}"` - fired once per message sent with `send()` where {messageID} is the ID specified in the {@linkcode ICRequest} given to `send()`
|
|
* * `"notify"` - fired when an update is available to a property previously subscribed to via a {@linkcode SubscribeToUpdates} request
|
|
* * `"close"` - fired any time the client is closed by any means (timeout, by request, error, etc.)
|
|
* * `"open"` - fired when the socket connects to the unit successfully
|
|
* * `"error"` - fired when the socket encounters an unrecoverable error and will close
|
|
* * `"timeout"` - fired when the socket has not received a ping response within the allowed threshold and will close
|
|
* * `"connected"` - fired when a connection has completed successfully
|
|
*/
|
|
export declare class Unit extends EventEmitter {
|
|
endpoint: string;
|
|
port: number;
|
|
private client?;
|
|
private pingTimeout?;
|
|
private pingTimer?;
|
|
private pingInterval;
|
|
constructor(endpoint: string, port?: number);
|
|
/**
|
|
* Connects to the specified unit and maintains a connection to it until `close()` is called.
|
|
*/
|
|
connect(): Promise<void>;
|
|
/**
|
|
* Closes the connection to the unit.
|
|
*/
|
|
close(): void;
|
|
private socketCleanup;
|
|
private heartbeat;
|
|
private onClientMessage;
|
|
/**
|
|
* Sends a request to the unit.
|
|
*
|
|
* @param request an message from {@linkcode messages} to send to the unit.
|
|
* @returns a promise that resolves into the {@linkcode ICResponse} with information about the request.
|
|
*/
|
|
send(request: ICRequest): Promise<ICResponse>;
|
|
}
|