diff --git a/std/node/global.d.ts b/std/node/global.d.ts index b02a682c62..6e0378b9e0 100644 --- a/std/node/global.d.ts +++ b/std/node/global.d.ts @@ -1,6 +1,7 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. import { process as processModule } from "./process.ts"; import { Buffer as bufferModule } from "./buffer.ts"; +import timers from "./timers.ts"; // d.ts files allow us to declare Buffer as a value and as a type // type something = Buffer | something_else; is quite common @@ -8,6 +9,8 @@ import { Buffer as bufferModule } from "./buffer.ts"; type GlobalType = { process: typeof processModule; Buffer: typeof bufferModule; + setImmediate: typeof timers.setImmediate; + clearImmediate: typeof timers.clearImmediate; }; declare global { @@ -23,6 +26,8 @@ declare global { var process: typeof processModule; var Buffer: typeof bufferModule; type Buffer = bufferModule; + var setImmediate: typeof timers.setImmediate; + var clearImmediate: typeof timers.clearImmediate; } export {}; diff --git a/std/node/global.ts b/std/node/global.ts index d727600892..585ba14901 100644 --- a/std/node/global.ts +++ b/std/node/global.ts @@ -2,6 +2,7 @@ /// import { process as processModule } from "./process.ts"; import { Buffer as bufferModule } from "./buffer.ts"; +import timers from "./timers.ts"; Object.defineProperty(globalThis, "global", { value: globalThis, @@ -24,4 +25,18 @@ Object.defineProperty(globalThis, "Buffer", { configurable: true, }); +Object.defineProperty(globalThis, "setImmediate", { + value: timers.setImmediate, + enumerable: true, + writable: true, + configurable: true, +}); + +Object.defineProperty(globalThis, "clearImmediate", { + value: timers.clearImmediate, + enumerable: true, + writable: true, + configurable: true, +}); + export {}; diff --git a/std/node/global_test.ts b/std/node/global_test.ts index 9ce0b21325..60c997daf4 100644 --- a/std/node/global_test.ts +++ b/std/node/global_test.ts @@ -2,6 +2,7 @@ import "./global.ts"; import { assert, assertStrictEquals } from "../testing/asserts.ts"; import { Buffer as BufferModule } from "./buffer.ts"; import processModule from "./process.ts"; +import timers from "./timers.ts"; // Definitions for this are quite delicate // This ensures modifications to the global namespace don't break on TypeScript @@ -50,3 +51,21 @@ Deno.test("process is correctly defined", () => { assertStrictEquals(window.process, processModule); assert(window.process.arch); }); + +Deno.test("setImmediate is correctly defined", () => { + // deno-lint-ignore no-undef + assertStrictEquals(setImmediate, timers.setImmediate); + // deno-lint-ignore no-undef + assertStrictEquals(global.setImmediate, timers.setImmediate); + assertStrictEquals(globalThis.setImmediate, timers.setImmediate); + assertStrictEquals(window.setImmediate, timers.setImmediate); +}); + +Deno.test("clearImmediate is correctly defined", () => { + // deno-lint-ignore no-undef + assertStrictEquals(clearImmediate, timers.clearImmediate); + // deno-lint-ignore no-undef + assertStrictEquals(global.clearImmediate, timers.clearImmediate); + assertStrictEquals(globalThis.clearImmediate, timers.clearImmediate); + assertStrictEquals(window.clearImmediate, timers.clearImmediate); +});