mahler
Version:
A automated task composer and HTN based planner for building autonomous system agents
63 lines (62 loc) • 2.05 kB
TypeScript
export declare class UnhandledObservableError extends Error {
constructor(cause?: unknown);
}
export type Next<T> = (t: T) => void;
export interface Observer<T> {
next: Next<T>;
error<E extends Error>(e: E): void;
complete(): void;
}
export interface Subscription {
unsubscribe(): void;
}
export interface Subscribable<T> {
subscribe(subscriber: Observer<T> | Next<T>): Subscription;
}
export interface Observable<T> extends Subscribable<T> {
/**
* Transform a stream of values passing it through
* a mapping function
*/
map<U>(f: (t: T) => U): Observable<U>;
/**
* Create a new stream only for values that match a
* certain filtering function
*/
filter(f: (t: T) => boolean): Observable<T>;
}
/**
* A Subject is a special type of observable tha allows values to be
* multicasted to many observers.
*
* We use the name Subject as is the terminology used by rxjs
* https://rxjs.dev/guide/subject
*/
export declare class Subject<T> implements Observer<T>, Subscribable<T> {
private subscribers;
private cleanup;
next(t: T): void;
error(e: Error): void;
complete(): void;
subscribe(next: Observer<T> | Next<T>): Subscription;
}
type ObservableInput<T> = PromiseLike<T> | Iterable<T> | AsyncIterable<T> | Subscribable<T>;
declare function from<T>(input: ObservableInput<T>): Observable<T>;
declare function map<T, U>(o: Subscribable<T>, f: (t: T) => U): Subscribable<U>;
declare function filter<T>(o: Subscribable<T>, f: (t: T) => boolean): Subscribable<T>;
declare function of<T>(...values: T[]): Observable<T>;
declare function is<T>(x: unknown): x is Observable<T>;
/**
* Utility function to return a value on an interval.
* This is a useful observable to build new observables from
*/
export declare function interval(periodMs: number): Observable<number>;
export declare const Observable: {
of: typeof of;
from: typeof from;
is: typeof is;
map: typeof map;
filter: typeof filter;
interval: typeof interval;
};
export {};