@launchdarkly/js-sdk-common
Version:
LaunchDarkly SDK for JavaScript - common code
58 lines • 2.06 kB
TypeScript
import { EventListener, EventName, LDLogger } from '../../api';
import { DataSourceErrorKind } from '../../datasource';
export interface EventStream {
addEventListener(type: EventName, listener: EventListener): void;
}
export interface ObjProcessors {
[kind: string]: (object: any) => any;
}
export interface Update {
kind: string;
key: string;
version: number;
object?: any;
deleted?: boolean;
}
export interface Payload {
id: string;
version: number;
state: string;
basis: boolean;
updates: Update[];
}
export type PayloadListener = (payload: Payload) => void;
/**
* A FDv2 PayloadReader can be used to parse payloads from a stream of FDv2 events. It will send payloads
* to the PayloadListeners as the payloads are received. Invalid series of events may be dropped silently,
* but the payload reader will continue to operate.
*/
export declare class PayloadReader {
private readonly _objProcessors;
private readonly _errorHandler?;
private readonly _logger?;
private _listeners;
private _tempId?;
private _tempBasis?;
private _tempUpdates;
/**
* Creates a PayloadReader
*
* @param eventStream event stream of FDv2 events
* @param _objProcessors defines object processors for each object kind.
* @param _errorHandler that will be called with errors as they are encountered
* @param _logger for logging
*/
constructor(eventStream: EventStream, _objProcessors: ObjProcessors, _errorHandler?: ((errorKind: DataSourceErrorKind, message: string) => void) | undefined, _logger?: LDLogger | undefined);
addPayloadListener(listener: PayloadListener): void;
removePayloadListener(listener: PayloadListener): void;
private _attachHandler;
private _processObj;
private _processServerIntent;
private _processPutObject;
private _processDeleteObject;
private _processPayloadTransferred;
private _processGoodbye;
private _processError;
private _resetState;
}
//# sourceMappingURL=payloadReader.d.ts.map