+++ /dev/null
-let nextHandle = 1;
-const RESOLVED = (() => Promise.resolve())();
-const activeHandles: { [key: number]: any } = {};
-
-/**
- * Finds the handle in the list of active handles, and removes it.
- * Returns `true` if found, `false` otherwise. Used both to clear
- * Immediate scheduled tasks, and to identify if a task should be scheduled.
- */
-function findAndClearHandle(handle: number): boolean {
- if (handle in activeHandles) {
- delete activeHandles[handle];
- return true;
- }
- return false;
-}
-
-/**
- * Helper functions to schedule and unschedule microtasks.
- */
-export const Immediate = {
- setImmediate(cb: () => void): number {
- const handle = nextHandle++;
- activeHandles[handle] = true;
- RESOLVED.then(() => findAndClearHandle(handle) && cb());
- return handle;
- },
-
- clearImmediate(handle: number): void {
- findAndClearHandle(handle);
- },
-};
-
-/**
- * Used for internal testing purposes only. Do not export from library.
- */
-export const TestTools = {
- pending() {
- return Object.keys(activeHandles).length;
- }
-};