When entering a clock, the current state of the global is saved If another clock was already entered, it will revert back to that when exiting.

When we exit, if the monkey-patched global proxies get called, they will revert back to whatever the saved value was when they were patched. If that is another exited clock, it will proxy back to its original saved state, and so on, eventually hitting the original global state again if all clocks in the stack have been exited.

interface Saved {
    Date: DateConstructor | {
        UTC(year, monthIndex, date?, hours?, minutes?, seconds?, ms?): number;
        now(): number;
        parse(s): number;
        new (...args): {
            getVarDate: (() => VarDate);
            [toPrimitive](hint): string;
            [toPrimitive](hint): string;
            [toPrimitive](hint): number;
            [toPrimitive](hint): string | number;
            getDate(): number;
            getDay(): number;
            getFullYear(): number;
            getHours(): number;
            getMilliseconds(): number;
            getMinutes(): number;
            getMonth(): number;
            getSeconds(): number;
            getTime(): number;
            getTimezoneOffset(): number;
            getUTCDate(): number;
            getUTCDay(): number;
            getUTCFullYear(): number;
            getUTCHours(): number;
            getUTCMilliseconds(): number;
            getUTCMinutes(): number;
            getUTCMonth(): number;
            getUTCSeconds(): number;
            setDate(date): number;
            setFullYear(year, month?, date?): number;
            setHours(hours, min?, sec?, ms?): number;
            setMilliseconds(ms): number;
            setMinutes(min, sec?, ms?): number;
            setMonth(month, date?): number;
            setSeconds(sec, ms?): number;
            setTime(time): number;
            setUTCDate(date): number;
            setUTCFullYear(year, month?, date?): number;
            setUTCHours(hours, min?, sec?, ms?): number;
            setUTCMilliseconds(ms): number;
            setUTCMinutes(min, sec?, ms?): number;
            setUTCMonth(month, date?): number;
            setUTCSeconds(sec, ms?): number;
            toDateString(): string;
            toISOString(): string;
            toJSON(key?): string;
            toLocaleDateString(): string;
            toLocaleDateString(locales?, options?): string;
            toLocaleDateString(locales?, options?): string;
            toLocaleString(): string;
            toLocaleString(locales?, options?): string;
            toLocaleString(locales?, options?): string;
            toLocaleTimeString(): string;
            toLocaleTimeString(locales?, options?): string;
            toLocaleTimeString(locales?, options?): string;
            toString(): string;
            toTimeString(): string;
            toUTCString(): string;
            valueOf(): number;
        };
    };
    clearImmediate: ((immediateId) => void);
    clearInterval: {
        (id): void;
        (intervalId): void;
    };
    clearTimeout: {
        (id): void;
        (timeoutId): void;
    };
    performance: {
        now: (() => number);
    };
    process: {
        hrtime: {
            bigint(): bigint;
            (t?): [number, number];
        };
    };
    setImmediate: SetImmediate;
    setInterval: SetInterval;
    setTimeout: SetTimeout;
}

Properties

Date: DateConstructor | {
    UTC(year, monthIndex, date?, hours?, minutes?, seconds?, ms?): number;
    now(): number;
    parse(s): number;
    new (...args): {
        getVarDate: (() => VarDate);
        [toPrimitive](hint): string;
        [toPrimitive](hint): string;
        [toPrimitive](hint): number;
        [toPrimitive](hint): string | number;
        getDate(): number;
        getDay(): number;
        getFullYear(): number;
        getHours(): number;
        getMilliseconds(): number;
        getMinutes(): number;
        getMonth(): number;
        getSeconds(): number;
        getTime(): number;
        getTimezoneOffset(): number;
        getUTCDate(): number;
        getUTCDay(): number;
        getUTCFullYear(): number;
        getUTCHours(): number;
        getUTCMilliseconds(): number;
        getUTCMinutes(): number;
        getUTCMonth(): number;
        getUTCSeconds(): number;
        setDate(date): number;
        setFullYear(year, month?, date?): number;
        setHours(hours, min?, sec?, ms?): number;
        setMilliseconds(ms): number;
        setMinutes(min, sec?, ms?): number;
        setMonth(month, date?): number;
        setSeconds(sec, ms?): number;
        setTime(time): number;
        setUTCDate(date): number;
        setUTCFullYear(year, month?, date?): number;
        setUTCHours(hours, min?, sec?, ms?): number;
        setUTCMilliseconds(ms): number;
        setUTCMinutes(min, sec?, ms?): number;
        setUTCMonth(month, date?): number;
        setUTCSeconds(sec, ms?): number;
        toDateString(): string;
        toISOString(): string;
        toJSON(key?): string;
        toLocaleDateString(): string;
        toLocaleDateString(locales?, options?): string;
        toLocaleDateString(locales?, options?): string;
        toLocaleString(): string;
        toLocaleString(locales?, options?): string;
        toLocaleString(locales?, options?): string;
        toLocaleTimeString(): string;
        toLocaleTimeString(locales?, options?): string;
        toLocaleTimeString(locales?, options?): string;
        toString(): string;
        toTimeString(): string;
        toUTCString(): string;
        valueOf(): number;
    };
}

Type declaration

    • new (...args): {
          getVarDate: (() => VarDate);
          [toPrimitive](hint): string;
          [toPrimitive](hint): string;
          [toPrimitive](hint): number;
          [toPrimitive](hint): string | number;
          getDate(): number;
          getDay(): number;
          getFullYear(): number;
          getHours(): number;
          getMilliseconds(): number;
          getMinutes(): number;
          getMonth(): number;
          getSeconds(): number;
          getTime(): number;
          getTimezoneOffset(): number;
          getUTCDate(): number;
          getUTCDay(): number;
          getUTCFullYear(): number;
          getUTCHours(): number;
          getUTCMilliseconds(): number;
          getUTCMinutes(): number;
          getUTCMonth(): number;
          getUTCSeconds(): number;
          setDate(date): number;
          setFullYear(year, month?, date?): number;
          setHours(hours, min?, sec?, ms?): number;
          setMilliseconds(ms): number;
          setMinutes(min, sec?, ms?): number;
          setMonth(month, date?): number;
          setSeconds(sec, ms?): number;
          setTime(time): number;
          setUTCDate(date): number;
          setUTCFullYear(year, month?, date?): number;
          setUTCHours(hours, min?, sec?, ms?): number;
          setUTCMilliseconds(ms): number;
          setUTCMinutes(min, sec?, ms?): number;
          setUTCMonth(month, date?): number;
          setUTCSeconds(sec, ms?): number;
          toDateString(): string;
          toISOString(): string;
          toJSON(key?): string;
          toLocaleDateString(): string;
          toLocaleDateString(locales?, options?): string;
          toLocaleDateString(locales?, options?): string;
          toLocaleString(): string;
          toLocaleString(locales?, options?): string;
          toLocaleString(locales?, options?): string;
          toLocaleTimeString(): string;
          toLocaleTimeString(locales?, options?): string;
          toLocaleTimeString(locales?, options?): string;
          toString(): string;
          toTimeString(): string;
          toUTCString(): string;
          valueOf(): number;
      }
    • Parameters

      • Rest ...args: any[]

      Returns {
          getVarDate: (() => VarDate);
          [toPrimitive](hint): string;
          [toPrimitive](hint): string;
          [toPrimitive](hint): number;
          [toPrimitive](hint): string | number;
          getDate(): number;
          getDay(): number;
          getFullYear(): number;
          getHours(): number;
          getMilliseconds(): number;
          getMinutes(): number;
          getMonth(): number;
          getSeconds(): number;
          getTime(): number;
          getTimezoneOffset(): number;
          getUTCDate(): number;
          getUTCDay(): number;
          getUTCFullYear(): number;
          getUTCHours(): number;
          getUTCMilliseconds(): number;
          getUTCMinutes(): number;
          getUTCMonth(): number;
          getUTCSeconds(): number;
          setDate(date): number;
          setFullYear(year, month?, date?): number;
          setHours(hours, min?, sec?, ms?): number;
          setMilliseconds(ms): number;
          setMinutes(min, sec?, ms?): number;
          setMonth(month, date?): number;
          setSeconds(sec, ms?): number;
          setTime(time): number;
          setUTCDate(date): number;
          setUTCFullYear(year, month?, date?): number;
          setUTCHours(hours, min?, sec?, ms?): number;
          setUTCMilliseconds(ms): number;
          setUTCMinutes(min, sec?, ms?): number;
          setUTCMonth(month, date?): number;
          setUTCSeconds(sec, ms?): number;
          toDateString(): string;
          toISOString(): string;
          toJSON(key?): string;
          toLocaleDateString(): string;
          toLocaleDateString(locales?, options?): string;
          toLocaleDateString(locales?, options?): string;
          toLocaleString(): string;
          toLocaleString(locales?, options?): string;
          toLocaleString(locales?, options?): string;
          toLocaleTimeString(): string;
          toLocaleTimeString(locales?, options?): string;
          toLocaleTimeString(locales?, options?): string;
          toString(): string;
          toTimeString(): string;
          toUTCString(): string;
          valueOf(): number;
      }

      • getVarDate: (() => VarDate)
          • (): VarDate
          • Returns VarDate

      • [toPrimitive]:function
        • Parameters

          • hint: "default"

          Returns string

        • Parameters

          • hint: "string"

          Returns string

        • Parameters

          • hint: "number"

          Returns number

        • Parameters

          • hint: string

          Returns string | number

      • getDate:function
        • Returns number

      • getDay:function
        • Returns number

      • getFullYear:function
        • Returns number

      • getHours:function
        • Returns number

      • getMilliseconds:function
        • Returns number

      • getMinutes:function
        • Returns number

      • getMonth:function
        • Returns number

      • getSeconds:function
        • Returns number

      • getTime:function
        • Returns number

      • getTimezoneOffset:function
        • Returns number

      • getUTCDate:function
        • Returns number

      • getUTCDay:function
        • Returns number

      • getUTCFullYear:function
        • Returns number

      • getUTCHours:function
        • Returns number

      • getUTCMilliseconds:function
        • Returns number

      • getUTCMinutes:function
        • Returns number

      • getUTCMonth:function
        • Returns number

      • getUTCSeconds:function
        • Returns number

      • setDate:function
        • Parameters

          • date: number

          Returns number

      • setFullYear:function
        • Parameters

          • year: number
          • Optional month: number
          • Optional date: number

          Returns number

      • setHours:function
        • Parameters

          • hours: number
          • Optional min: number
          • Optional sec: number
          • Optional ms: number

          Returns number

      • setMilliseconds:function
        • Parameters

          • ms: number

          Returns number

      • setMinutes:function
        • Parameters

          • min: number
          • Optional sec: number
          • Optional ms: number

          Returns number

      • setMonth:function
        • Parameters

          • month: number
          • Optional date: number

          Returns number

      • setSeconds:function
        • Parameters

          • sec: number
          • Optional ms: number

          Returns number

      • setTime:function
        • Parameters

          • time: number

          Returns number

      • setUTCDate:function
        • Parameters

          • date: number

          Returns number

      • setUTCFullYear:function
        • Parameters

          • year: number
          • Optional month: number
          • Optional date: number

          Returns number

      • setUTCHours:function
        • Parameters

          • hours: number
          • Optional min: number
          • Optional sec: number
          • Optional ms: number

          Returns number

      • setUTCMilliseconds:function
        • Parameters

          • ms: number

          Returns number

      • setUTCMinutes:function
        • Parameters

          • min: number
          • Optional sec: number
          • Optional ms: number

          Returns number

      • setUTCMonth:function
        • Parameters

          • month: number
          • Optional date: number

          Returns number

      • setUTCSeconds:function
        • Parameters

          • sec: number
          • Optional ms: number

          Returns number

      • toDateString:function
        • Returns string

      • toISOString:function
        • Returns string

      • toJSON:function
        • Parameters

          • Optional key: any

          Returns string

      • toLocaleDateString:function
        • Returns string

        • Parameters

          • Optional locales: string | string[]
          • Optional options: DateTimeFormatOptions

          Returns string

        • Parameters

          • Optional locales: LocalesArgument
          • Optional options: DateTimeFormatOptions

          Returns string

      • toLocaleString:function
        • Returns string

        • Parameters

          • Optional locales: string | string[]
          • Optional options: DateTimeFormatOptions

          Returns string

        • Parameters

          • Optional locales: LocalesArgument
          • Optional options: DateTimeFormatOptions

          Returns string

      • toLocaleTimeString:function
        • Returns string

        • Parameters

          • Optional locales: string | string[]
          • Optional options: DateTimeFormatOptions

          Returns string

        • Parameters

          • Optional locales: LocalesArgument
          • Optional options: DateTimeFormatOptions

          Returns string

      • toString:function
        • Returns string

      • toTimeString:function
        • Returns string

      • toUTCString:function
        • Returns string

      • valueOf:function
        • Returns number

  • UTC:function
    • Parameters

      • year: number
      • monthIndex: number
      • Optional date: number
      • Optional hours: number
      • Optional minutes: number
      • Optional seconds: number
      • Optional ms: number

      Returns number

  • now:function
    • Returns number

  • parse:function
    • Parameters

      • s: string

      Returns number

clearImmediate: ((immediateId) => void)

Type declaration

    • (immediateId): void
    • Cancels an Immediate object created by setImmediate().

      Parameters

      • immediateId: undefined | Immediate

      Returns void

      Since

      v0.9.1

clearInterval: {
    (id): void;
    (intervalId): void;
}

Type declaration

    • (id): void
    • Parameters

      • id: undefined | number

      Returns void

    • (intervalId): void
    • Cancels a Timeout object created by setInterval().

      Parameters

      • intervalId: undefined | string | number | Timeout

      Returns void

      Since

      v0.0.1

clearTimeout: {
    (id): void;
    (timeoutId): void;
}

Type declaration

    • (id): void
    • Parameters

      • id: undefined | number

      Returns void

    • (timeoutId): void
    • Cancels a Timeout object created by setTimeout().

      Parameters

      • timeoutId: undefined | string | number | Timeout

      Returns void

      Since

      v0.0.1

performance: {
    now: (() => number);
}

Type declaration

  • now: (() => number)
      • (): number
      • Returns number

process: {
    hrtime: {
        bigint(): bigint;
        (t?): [number, number];
    };
}

Type declaration

  • hrtime: {
        bigint(): bigint;
        (t?): [number, number];
    }
      • (t?): [number, number]
      • Parameters

        • Optional t: [number, number]

        Returns [number, number]

    • bigint:function
      • Returns bigint

setImmediate: SetImmediate
setInterval: SetInterval
setTimeout: SetTimeout

Generated using TypeDoc