UNPKG

@oada/client

Version:

A lightweight client tool to interact with an OADA-compliant server

55 lines (54 loc) 2.39 kB
/** * @license * Copyright 2021 Open Ag Data Alliance * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { EventEmitter } from "eventemitter3"; import _ReconnectingWebSocket from "reconnecting-websocket"; import type { Connection, ConnectionChange, ConnectionRequest, ConnectionResponse, IConnectionResponse } from "./client.js"; interface ResponseEmitter extends EventEmitter { on(event: `response:${string}`, listener: (response: Readonly<ConnectionResponse>) => void): this; on(event: `change:${string}`, listener: (response: Readonly<ConnectionChange>) => void): this; } declare module "#event-iterator" { function once(emitter: ResponseEmitter, event: `response:${string}`): Promise<[ConnectionResponse]>; function once(emitter: _ReconnectingWebSocket.default, event: "error"): Promise<[Error]>; function once(emitter: _ReconnectingWebSocket.default, event: "open"): Promise<void>; function on(emitter: ResponseEmitter, event: `change:${string}`, options?: { signal?: AbortSignal; }): AsyncIterableIterator<[ConnectionChange]>; } export declare class WebSocketClient extends EventEmitter implements Connection { #private; /** * Constructor * @param domain Domain. E.g., www.example.com * @param concurrency Number of allowed in-flight requests. Default 10. */ constructor(domain: string, { concurrency, userAgent }: { concurrency: number; userAgent: string; }); /** Disconnect the WebSocket connection */ disconnect(): Promise<void>; /** Return true if connected, otherwise false */ isConnected(): boolean; /** Wait for the connection to open */ awaitConnection(): Promise<void>; request(request: ConnectionRequest, { timeout, signal }?: { timeout?: number; signal?: AbortSignal; }): Promise<IConnectionResponse>; } export {};