deno.land / std@0.157.0 / node / internal / timers.mjs
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.// Copyright Joyent and Node contributors. All rights reserved. MIT license.
import { notImplemented } from "../_utils.ts";import { inspect } from "./util/inspect.mjs";import { validateNumber } from "./validators.mjs";import { ERR_OUT_OF_RANGE } from "./errors.ts";import { emitWarning } from "../process.ts";
// Timeout values > TIMEOUT_MAX are set to 1.export const TIMEOUT_MAX = 2 ** 31 - 1;
export const kTimerId = Symbol("timerId");export const kTimeout = Symbol("timeout");const kRefed = Symbol("refed");
// Timer constructor function.// The entire prototype is defined in lib/timers.jsexport function Timeout(id) { this[kTimerId] = id; this[kRefed] = true;}
// Make sure the linked list only shows the minimal necessary information.Timeout.prototype[inspect.custom] = function (_, options) { return inspect(this, { ...options, // Only inspect one level. depth: 0, // It should not recurse. customInspect: false, });};
Timeout.prototype.refresh = function () { notImplemented();};
Timeout.prototype.unref = function () { if (this[kRefed]) { this[kRefed] = false; Deno.unrefTimer(this[kTimerId]); } return this;};
Timeout.prototype.ref = function () { if (!this[kRefed]) { this[kRefed] = true; Deno.refTimer(this[kTimerId]); } return this;};
Timeout.prototype.hasRef = function () { return this[kRefed];};
Timeout.prototype[Symbol.toPrimitive] = function () { return this[kTimerId];};
/** * @param {number} msecs * @param {string} name * @returns */export function getTimerDuration(msecs, name) { validateNumber(msecs, name);
if (msecs < 0 || !Number.isFinite(msecs)) { throw new ERR_OUT_OF_RANGE(name, "a non-negative finite number", msecs); }
// Ensure that msecs fits into signed int32 if (msecs > TIMEOUT_MAX) { emitWarning( `${msecs} does not fit into a 32-bit signed integer.` + `\nTimer duration was truncated to ${TIMEOUT_MAX}.`, "TimeoutOverflowWarning", );
return TIMEOUT_MAX; }
return msecs;}
export default { TIMEOUT_MAX, kTimerId, kTimeout, Timeout, getTimerDuration,};
Version Info