UNPKG

cloudrx

Version:

TypeScript library for streaming cloud provider events using RxJS with automatic persistence and replay capabilities

59 lines 2.1 kB
import { Observable } from 'rxjs'; import { Logger } from '@util'; import { EventEmitter } from 'stream'; export type Streamed<T, TMarker> = T & { __marker__?: TMarker; }; export interface ICloudProvider<TEvent, TMarker> { get id(): string; get signal(): AbortSignal; get logger(): Logger; init(): Observable<this>; all(): Observable<TEvent>; stream(): Observable<TEvent>; store<T>(item: T): Observable<T>; unmarshall<T>(event: TEvent): Streamed<T, TMarker>; } export type CloudOptions = { signal?: AbortSignal; logger?: Logger; }; export type Matcher<TEvent> = (event: TEvent) => boolean; export declare class Abort extends AbortController { constructor(signal?: AbortSignal); abort(reason?: unknown): void; } export declare class StreamEvent extends EventEmitter<{ start: []; end: []; }> { } export declare abstract class CloudProvider<TEvent, TMarker> implements ICloudProvider<TEvent, TMarker> { readonly id: string; private static instances; private _events; private _init$?; private _stream$?; private _logger; private _signal; static from<Options extends CloudOptions, Provider extends ICloudProvider<unknown, unknown>>(this: new (id: string, options?: Options) => Provider, id: string, opts?: Options): Observable<Provider>; protected constructor(id: string, opts?: CloudOptions); get logger(): Logger; get signal(): AbortSignal; protected abstract _init(): Observable<this>; protected abstract _stream(all: boolean): Observable<TEvent[]>; protected abstract _store<T>(item: T): Observable<Matcher<TEvent>>; protected abstract _unmarshall<T>(event: TEvent): Streamed<T, unknown>; init(): Observable<this>; all(): Observable<TEvent>; stream(): Observable<TEvent>; store<T>(item: T): Observable<T>; unmarshall<T>(event: TEvent): Streamed<T, TMarker>; } export declare class RetryError extends Error { constructor(message: string); } export declare class FatalError extends Error { constructor(message: string); } //# sourceMappingURL=base.d.ts.map