diff --git a/src/Analytics.ts b/src/Analytics.ts index e36ddc2b9..e42822dba 100644 --- a/src/Analytics.ts +++ b/src/Analytics.ts @@ -2,7 +2,6 @@ * @flow */ -// @ts-ignore import CoreManager from './CoreManager'; /** diff --git a/src/ParseObject.ts b/src/ParseObject.ts index aa8f6eb0a..f49ec640e 100644 --- a/src/ParseObject.ts +++ b/src/ParseObject.ts @@ -2447,11 +2447,11 @@ const DefaultController = { // Queue up tasks for each object in the batch. // When every task is ready, the API request will execute - const batchReturned = new resolvingPromise(); + const batchReturned = resolvingPromise(); const batchReady: any[] = []; const batchTasks: any[] = []; batch.forEach((obj, index) => { - const ready = new resolvingPromise(); + const ready = resolvingPromise(); batchReady.push(ready); const task = function () { ready.resolve(); diff --git a/src/TaskQueue.js b/src/TaskQueue.ts similarity index 80% rename from src/TaskQueue.js rename to src/TaskQueue.ts index eedd769fe..d1b8f6440 100644 --- a/src/TaskQueue.js +++ b/src/TaskQueue.ts @@ -4,19 +4,19 @@ import { resolvingPromise } from './promiseUtils'; type Task = { - task: () => Promise, - _completion: Promise, + task: () => Promise, + _completion: resolvingPromise, }; class TaskQueue { - queue: Array; + queue: Task[]; constructor() { this.queue = []; } - enqueue(task: () => Promise): Promise { - const taskComplete = new resolvingPromise(); + enqueue(task: () => Promise): Promise { + const taskComplete = resolvingPromise(); this.queue.push({ task: task, _completion: taskComplete, @@ -55,3 +55,4 @@ class TaskQueue { } module.exports = TaskQueue; +export default TaskQueue; diff --git a/src/promiseUtils.js b/src/promiseUtils.ts similarity index 82% rename from src/promiseUtils.js rename to src/promiseUtils.ts index 176c32a0b..c012a9fc0 100644 --- a/src/promiseUtils.js +++ b/src/promiseUtils.ts @@ -1,8 +1,13 @@ // Create Deferred Promise +export interface resolvingPromise extends Promise { + resolve?:(value?: any) => void; + reject?:(value?: any) => void; +} + export function resolvingPromise() { - let res; - let rej; - const promise = new Promise((resolve, reject) => { + let res: (value: any) => void | null; + let rej: (value: any) => void | null; + const promise: resolvingPromise = new Promise((resolve, reject) => { res = resolve; rej = reject; }); @@ -32,7 +37,7 @@ export function when(promises) { return Promise.resolve(returnValue); } - const promise = new resolvingPromise(); + const promise = resolvingPromise(); const resolveOne = function () { total--; diff --git a/types/TaskQueue.d.ts b/types/TaskQueue.d.ts new file mode 100644 index 000000000..ff7abf862 --- /dev/null +++ b/types/TaskQueue.d.ts @@ -0,0 +1,15 @@ +/** + * @flow + */ +import { resolvingPromise } from './promiseUtils'; +type Task = { + task: () => Promise; + _completion: resolvingPromise; +}; +declare class TaskQueue { + queue: Task[]; + constructor(); + enqueue(task: () => Promise): Promise; + _dequeue(): void; +} +export default TaskQueue; diff --git a/types/promiseUtils.d.ts b/types/promiseUtils.d.ts new file mode 100644 index 000000000..370815429 --- /dev/null +++ b/types/promiseUtils.d.ts @@ -0,0 +1,7 @@ +export interface resolvingPromise extends Promise { + resolve?: (value?: any) => void; + reject?: (value?: any) => void; +} +export declare function resolvingPromise(): resolvingPromise; +export declare function when(promises: any): resolvingPromise | Promise; +export declare function continueWhile(test: any, emitter: any): any;