taggedjs
Version:
tagged template reactive html
31 lines (30 loc) • 1.27 kB
TypeScript
import { Subject } from './Subject.class.js';
export type Resolve<T> = (x: T) => any;
export type Subscription<T> = ((arg: T) => void) & {
callback: SubjectSubscriber<T>;
unsubscribe: () => Subscription<T>;
add: (sub: Subscription<T>) => Subscription<T>;
next: (value?: T) => any;
subscriptions: Subscription<T>[];
};
export type SubjectSubscriber<T> = (value: T, subscription: Subscription<T>) => unknown;
export type SubjectLike<T> = {
subscribe?: (callback: SubjectSubscriber<T>) => any;
isSubject?: boolean;
};
export type Closer<T> = {
createCallback: (callback: (result: T) => any) => any;
subscribe: (subject: SubjectLike<T>) => any;
};
export type Handler<T> = (x: any) => T;
export type setHandler<T> = (x: Handler<T>) => any;
export interface UnaryFunction<T, R, RESOLVE> {
(source: T, // lastValue
pipeUtils: PipeUtils<RESOLVE>): R;
}
export type PipeUtils<H> = {
setHandler: setHandler<H>;
next: (newValue: any) => any;
};
export declare function getSubscription<T>(subject: Subject<T>, callback: SubjectSubscriber<any>, subscribers: Subscription<T>[]): Subscription<any>;
export declare function runPipedMethods(value: any, methods: UnaryFunction<any, any, any>[], onComplete: (lastValue: any) => any): void;