UNPKG

tiny-essentials

Version:

Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.

89 lines 3.8 kB
export default TinyTimeout; /** * A utility class to manage dynamically adjusted timeouts based on how often * each unique ID is triggered. Also provides polling support for asynchronous conditions. */ declare class TinyTimeout { /** * Waits until a provided function returns `true`, checking repeatedly at the defined interval. * Useful for polling asynchronous conditions. * * @param {() => boolean} getValue - A function that returns `true` when the condition is met. * @param {number} [checkInterval=100] - How often (in ms) to check the condition. * @returns {Promise<void>} Resolves when the condition is met. * @throws {TypeError} If arguments are invalid. */ static waitForTrue(getValue: () => boolean, checkInterval?: number): Promise<void>; /** * Creates a new instance of TinyTimeout. * * @param {Object} [options={}] Optional configuration object. * @param {number} [options.cooldownWatcherTime=5000] Interval in milliseconds for reducing `now` counters. * @param {boolean} [options.allowAutoConfigChange=false] Whether to allow auto value changes for existing IDs. */ constructor({ cooldownWatcherTime, allowAutoConfigChange }?: { cooldownWatcherTime?: number | undefined; allowAutoConfigChange?: boolean | undefined; }); /** * Whether this instance has been destroyed and is no longer usable. * * @returns {boolean} */ isDestroyed(): boolean; /** * Whether auto config change is enabled. * * @returns {boolean} */ getAllowAutoConfigChange(): boolean; /** * Gets the interval time used for cooldown decrementing. * * @returns {number} */ getCooldownWatcherTime(): number; /** * Sets whether to allow auto-updating an ID's timeout config if `value` changes. * * @param {boolean} value */ setAllowAutoConfigChange(value: boolean): void; /** * Sets the cooldown watcher interval time. * Automatically resets the interval if it was already running. * * @param {number} value */ setCooldownWatcherTime(value: number): void; /** * Schedules a callback using a dynamically adjusted timeout based on usage frequency. * The more often an ID is triggered, the longer the timeout becomes, * scaled by the provided `value`. Optionally, the delay can be limited by `limit`. * * @param {string} id - A unique identifier to track timeout usage. * @param {Function} callback - The function to execute after the delay. * @param {number} value - Base delay multiplier in milliseconds. * @param {number|null} [limit=null] - Optional maximum delay cap. * @returns {number} Handle to the scheduled timeout. * @throws {Error} Throws if the instance has been destroyed or arguments are invalid. */ set(id: string, callback: Function, value: number, limit?: number | null): number; /** * Instance version of `waitForTrue`, which defaults to using the instance's * cooldownWatcherTime if not explicitly provided. * * @param {() => boolean} getValue - A function that returns `true` when the condition is met. * @param {number|null} [checkInterval=100] - How often (in ms) to check the condition. * @returns {Promise<void>} Resolves when the condition is met. * @throws {Error} If the instance is destroyed or arguments are invalid. */ waitForTrue(getValue: () => boolean, checkInterval?: number | null): Promise<void>; /** * Cleans up all internal references and stops the cooldown watcher. * After calling this, the instance becomes unusable. */ destroy(): void; #private; } //# sourceMappingURL=TinyTimeout.d.mts.map