/** * SyncTasks.ts * Author: David de Regt * Copyright: Microsoft 2015 * * A very simple promise library that resolves all promises synchronously instead of * kicking them back to the main ticking thread. This affirmatively rejects the A+ * standard for promises, and is used for a combination of performance (wrapping * things back to the main thread is really slow) and because indexeddb loses * context for its calls if you send them around the event loop and transactions * automatically close. */ export declare const config: { exceptionsToConsole: boolean; catchExceptions: boolean; traceEnabled: boolean; exceptionHandler: ((ex: Error) => void) | undefined; unhandledErrorHandler: (err: any) => void; }; export interface Es6Thenable { then(onFulfilled?: (value: R) => U | Es6Thenable, onRejected?: (error: any) => U | Es6Thenable): Es6Thenable; then(onFulfilled?: (value: R) => U | Es6Thenable, onRejected?: (error: any) => void): Es6Thenable; } export declare function fromThenable(thenable: Es6Thenable): STPromise; /** * This function will defer callback of the specified callback lambda until the next JS tick, simulating standard A+ promise behavior */ export declare function asyncCallback(callback: () => void): void; export declare type SuccessFunc = (value: T) => U | Thenable; export declare type ErrorFunc = (error: any) => U | Thenable; export declare type CancelFunc = (context: any) => void; export interface Deferred { resolve(obj: T): Deferred; reject(obj?: any): Deferred; promise(): STPromise; onCancel(callback: CancelFunc): Deferred; } export interface Thenable { then(successFunc: SuccessFunc, errorFunc?: ErrorFunc): STPromise; } export interface Cancelable { cancel(context?: any): void; } export interface STPromise extends Thenable, Cancelable { catch(errorFunc: ErrorFunc): STPromise; finally(func: (value: T | any) => void): STPromise; always(func: (value: T | any) => U | Thenable): STPromise; done(successFunc: (value: T) => void): STPromise; fail(errorFunc: (error: any) => void): STPromise; thenAsync(successFunc: SuccessFunc, errorFunc?: ErrorFunc): STPromise; setTracingEnabled(enabled: boolean): STPromise; toEs6Promise(): Promise; } export { STPromise as Promise }; export declare type Raceable = T | Thenable | undefined | null; export declare function all(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; export declare function all(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; export declare function all(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>; export declare function all(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3, T4, T5, T6, T7]>; export declare function all(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3, T4, T5, T6]>; export declare function all(values: [Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3, T4, T5]>; export declare function all(values: [Raceable, Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3, T4]>; export declare function all(values: [Raceable, Raceable, Raceable]): STPromise<[T1, T2, T3]>; export declare function all(values: [Raceable, Raceable]): STPromise<[T1, T2]>; export declare function all(values: (T | Thenable)[]): STPromise; export declare function Defer(): Deferred; export declare function Resolved(): STPromise; export declare function Resolved(val: T): STPromise; export declare function Rejected(val?: any): STPromise; export declare function race(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable, Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable, Raceable]): STPromise; export declare function race(values: [Raceable, Raceable]): STPromise; export declare function race(values: (T | Thenable)[]): STPromise; export declare type RaceTimerResponse = { timedOut: boolean; result?: T; }; export declare function raceTimer(promise: STPromise, timeMs: number): STPromise>;