forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								export interface Result<T> {
							 | 
						||
| 
								 | 
							
								    amountDone: number;
							 | 
						||
| 
								 | 
							
								    amountStarted: number;
							 | 
						||
| 
								 | 
							
								    amountResolved: number;
							 | 
						||
| 
								 | 
							
								    amountRejected: number;
							 | 
						||
| 
								 | 
							
								    amountNextCheckFalsey: number;
							 | 
						||
| 
								 | 
							
								    rejectedIndexes: number[];
							 | 
						||
| 
								 | 
							
								    resolvedIndexes: number[];
							 | 
						||
| 
								 | 
							
								    nextCheckFalseyIndexes: number[];
							 | 
						||
| 
								 | 
							
								    taskResults: T[];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export interface Options {
							 | 
						||
| 
								 | 
							
								    maxInProgress?: number;
							 | 
						||
| 
								 | 
							
								    failFast?: boolean;
							 | 
						||
| 
								 | 
							
								    progressCallback?: <T>(result: Result<T>) => void;
							 | 
						||
| 
								 | 
							
								    nextCheck?: nextTaskCheck;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export declare type Task<T> = () => Promise<T>;
							 | 
						||
| 
								 | 
							
								export declare type Tasks<T> = Array<Task<T>>;
							 | 
						||
| 
								 | 
							
								export declare type nextTaskCheck = <T>(status: Result<T>, tasks: Tasks<T>) => Promise<boolean>;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Raw throttle function, which can return extra meta data.
							 | 
						||
| 
								 | 
							
								 * @param tasks required array of tasks to be executed
							 | 
						||
| 
								 | 
							
								 * @param options Options object
							 | 
						||
| 
								 | 
							
								 * @returns {Promise}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function raw<T>(tasks: Tasks<T>, options?: Options): Promise<Result<T>>;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Simply run all the promises after each other, so in synchronous manner
							 | 
						||
| 
								 | 
							
								 * @param tasks required array of tasks to be executed
							 | 
						||
| 
								 | 
							
								 * @param options Options object
							 | 
						||
| 
								 | 
							
								 * @returns {Promise}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function sync<T>(tasks: Tasks<T>, options?: Options): Promise<T[]>;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Exposes the same behaviour as Promise.All(), but throttled!
							 | 
						||
| 
								 | 
							
								 * @param tasks required array of tasks to be executed
							 | 
						||
| 
								 | 
							
								 * @param options Options object
							 | 
						||
| 
								 | 
							
								 * @returns {Promise}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export declare function all<T>(tasks: Tasks<T>, options?: Options): Promise<T[]>;
							 |