@oada/client
Version:
A lightweight client tool to interact with an OADA-compliant server
55 lines (54 loc) • 2.39 kB
TypeScript
/**
* @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 {};