UNPKG

@launchdarkly/js-sdk-common

Version:
69 lines 2.36 kB
import { LDLogger } from '../../api'; import { DataSourceErrorKind } from '../../datasource'; export interface ObjProcessors { [kind: string]: (object: any) => any; } export interface FDv2EventsCollection { events: FDv2Event[]; } export interface FDv2Event { event: string; data: 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 PayloadProcessor 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 processor will continue to operate. */ export declare class PayloadProcessor { private readonly _objProcessors; private readonly _errorHandler?; private readonly _logger?; private _listeners; private _tempId?; private _tempBasis; private _tempUpdates; /** * Creates a PayloadProcessor * * @param _objProcessors defines object processors for each object kind. * @param _errorHandler that will be called with parsing errors as they are encountered * @param _logger for logging */ constructor(_objProcessors: ObjProcessors, _errorHandler?: ((errorKind: DataSourceErrorKind, message: string) => void) | undefined, _logger?: LDLogger | undefined); addPayloadListener(listener: PayloadListener): void; removePayloadListener(listener: PayloadListener): void; /** * Gives the {@link PayloadProcessor} a series of events that it will statefully, incrementally process. * This may lead to listeners being invoked as necessary. * @param events to be processed (can be a single element) */ processEvents(events: FDv2Event[]): void; private _processObj; private _processServerIntent; private _processPutObject; private _processDeleteObject; private _processIntentNone; private _processPayloadTransferred; private _processGoodbye; private _processError; private _resetAfterEmission; private _resetAfterError; private _resetAll; } //# sourceMappingURL=payloadProcessor.d.ts.map