From d634f621f064d72fc4584ba25a46e8ce727d253f Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Tue, 5 Aug 2025 13:53:40 -0500 Subject: [PATCH 01/44] start on retry feature --- packages/pacer/src/async-batcher.ts | 20 +- packages/pacer/src/async-debouncer.ts | 20 +- packages/pacer/src/async-queuer.ts | 18 +- packages/pacer/src/async-rate-limiter.ts | 20 +- packages/pacer/src/async-retryer.ts | 442 ++++++++++++++ packages/pacer/src/async-throttler.ts | 20 +- packages/pacer/src/batcher.ts | 2 +- packages/pacer/src/debouncer.ts | 2 +- packages/pacer/src/queuer.ts | 2 +- packages/pacer/src/rate-limiter.ts | 2 +- packages/pacer/src/throttler.ts | 2 +- packages/pacer/tests/async-retryer.test.ts | 578 ++++++++++++++++++ .../src/async-batcher/useAsyncBatcher.ts | 1 + .../src/async-debouncer/useAsyncDebouncer.ts | 1 + .../src/async-queuer/useAsyncQueuer.ts | 1 + .../async-rate-limiter/useAsyncRateLimiter.ts | 1 + .../src/async-throttler/useAsyncThrottler.ts | 3 + .../react-pacer/src/batcher/useBatcher.ts | 1 + .../react-pacer/src/debouncer/useDebouncer.ts | 1 + packages/react-pacer/src/queuer/useQueuer.ts | 1 + .../src/rate-limiter/useRateLimiter.ts | 1 + .../react-pacer/src/throttler/useThrottler.ts | 1 + 22 files changed, 1122 insertions(+), 18 deletions(-) create mode 100644 packages/pacer/src/async-retryer.ts create mode 100644 packages/pacer/tests/async-retryer.test.ts diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index 026cf077..a0339c25 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -1,5 +1,7 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { AsyncRetryer } from './async-retryer' +import type { AsyncRetryerOptions } from './async-retryer' import type { OptionalKeys } from './types' export interface AsyncBatcherState { @@ -79,6 +81,12 @@ function getDefaultAsyncBatcherState(): AsyncBatcherState { * Options for configuring an AsyncBatcher instance */ export interface AsyncBatcherOptions { + /** + * Options for configuring the underlying async retryer + */ + asyncRetryerOptions?: AsyncRetryerOptions< + (items: Array) => Promise + > /** * Custom function to determine if a batch should be processed * Return true to process the batch immediately @@ -148,6 +156,9 @@ type AsyncBatcherOptionsWithOptionalCallbacks = OptionalKeys< > const defaultOptions: AsyncBatcherOptionsWithOptionalCallbacks = { + asyncRetryerOptions: { + maxAttempts: 1, + }, getShouldExecute: () => false, maxSize: Infinity, started: true, @@ -221,10 +232,11 @@ export class AsyncBatcher { getDefaultAsyncBatcherState(), ) options: AsyncBatcherOptionsWithOptionalCallbacks + asyncRetryer: AsyncRetryer #timeoutId: NodeJS.Timeout | null = null constructor( - private fn: (items: Array) => Promise, + public fn: (items: Array) => Promise, initialOptions: AsyncBatcherOptions, ) { this.options = { @@ -232,6 +244,10 @@ export class AsyncBatcher { ...initialOptions, throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } + this.asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) this.#setState(this.options.initialState ?? {}) } @@ -317,7 +333,7 @@ export class AsyncBatcher { this.#setState({ isExecuting: true }) try { - const result = await this.fn(batch) // EXECUTE + const result = await this.asyncRetryer.execute(batch) // EXECUTE this.#setState({ totalItemsProcessed: this.store.state.totalItemsProcessed + batch.length, diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index f89523c5..43ac4ece 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -1,5 +1,7 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { AsyncRetryer } from './async-retryer' +import type { AsyncRetryerOptions } from './async-retryer' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncDebouncerState { @@ -61,6 +63,10 @@ function getDefaultAsyncDebouncerState< * Options for configuring an async debounced function */ export interface AsyncDebouncerOptions { + /** + * Options for configuring the underlying async retryer + */ + asyncRetryerOptions?: AsyncRetryerOptions /** * Whether the debouncer is enabled. When disabled, maybeExecute will not trigger any executions. * Can be a boolean or a function that returns a boolean. @@ -123,6 +129,9 @@ type AsyncDebouncerOptionsWithOptionalCallbacks = OptionalKeys< > const defaultOptions: AsyncDebouncerOptionsWithOptionalCallbacks = { + asyncRetryerOptions: { + maxAttempts: 1, + }, enabled: true, leading: false, trailing: true, @@ -179,6 +188,7 @@ export class AsyncDebouncer { AsyncDebouncerState >(getDefaultAsyncDebouncerState()) options: AsyncDebouncerOptions + asyncRetryer: AsyncRetryer #abortController: AbortController | null = null #timeoutId: NodeJS.Timeout | null = null #resolvePreviousPromise: @@ -186,7 +196,7 @@ export class AsyncDebouncer { | null = null constructor( - private fn: TFn, + public fn: TFn, initialOptions: AsyncDebouncerOptions, ) { this.options = { @@ -194,6 +204,10 @@ export class AsyncDebouncer { ...initialOptions, throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } + this.asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) this.#setState(this.options.initialState ?? {}) } @@ -306,12 +320,12 @@ export class AsyncDebouncer { this.#abortController = new AbortController() try { this.#setState({ isExecuting: true }) - const result = await this.fn(...args) // EXECUTE! + const result = await this.asyncRetryer.execute(...args) // EXECUTE! this.#setState({ lastResult: result, successCount: this.store.state.successCount + 1, }) - this.options.onSuccess?.(result, args, this) + this.options.onSuccess?.(result as ReturnType, args, this) } catch (error) { this.#setState({ errorCount: this.store.state.errorCount + 1, diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index dbf48c98..ab54428e 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -1,5 +1,7 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { AsyncRetryer } from './async-retryer' +import type { AsyncRetryerOptions } from './async-retryer' import type { OptionalKeys } from './types' import type { QueuePosition } from './queuer' @@ -92,6 +94,10 @@ function getDefaultAsyncQueuerState(): AsyncQueuerState { } export interface AsyncQueuerOptions { + /** + * Options for configuring the underlying async retryer + */ + asyncRetryerOptions?: AsyncRetryerOptions<(item: TValue) => Promise> /** * Default position to add items to the queuer * @default 'back' @@ -194,6 +200,9 @@ type AsyncQueuerOptionsWithOptionalCallbacks = OptionalKeys< const defaultOptions: AsyncQueuerOptionsWithOptionalCallbacks = { addItemsTo: 'back', + asyncRetryerOptions: { + maxAttempts: 1, + }, concurrency: 1, expirationDuration: Infinity, getIsExpired: () => false, @@ -261,10 +270,11 @@ export class AsyncQueuer { AsyncQueuerState >(getDefaultAsyncQueuerState()) options: AsyncQueuerOptions + asyncRetryer: AsyncRetryer<(item: TValue) => Promise> #timeoutIds: Set = new Set() constructor( - private fn: (item: TValue) => Promise, + public fn: (item: TValue) => Promise, initialOptions: AsyncQueuerOptions = {}, ) { this.options = { @@ -272,6 +282,10 @@ export class AsyncQueuer { ...initialOptions, throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } + this.asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) const isInitiallyRunning = this.options.initialState?.isRunning ?? this.options.started ?? true this.#setState({ @@ -527,7 +541,7 @@ export class AsyncQueuer { const item = this.getNextItem(position) if (item !== undefined) { try { - const lastResult = await this.fn(item) // EXECUTE! + const lastResult = await this.asyncRetryer.execute(item) // EXECUTE! this.#setState({ successCount: this.store.state.successCount + 1, lastResult, diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index 38ca3020..994d9c29 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -1,5 +1,7 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { AsyncRetryer } from './async-retryer' +import type { AsyncRetryerOptions } from './async-retryer' import type { AnyAsyncFunction } from './types' export interface AsyncRateLimiterState { @@ -61,6 +63,10 @@ function getDefaultAsyncRateLimiterState< * Options for configuring an async rate-limited function */ export interface AsyncRateLimiterOptions { + /** + * Options for configuring the underlying async retryer + */ + asyncRetryerOptions?: AsyncRetryerOptions /** * Whether the rate limiter is enabled. When disabled, maybeExecute will not trigger any executions. * Can be a boolean or a function that returns a boolean. @@ -129,6 +135,9 @@ const defaultOptions: Omit< Required>, 'initialState' | 'onError' | 'onReject' | 'onSettled' | 'onSuccess' > = { + asyncRetryerOptions: { + maxAttempts: 1, + }, enabled: true, limit: 1, window: 0, @@ -207,10 +216,11 @@ export class AsyncRateLimiter { AsyncRateLimiterState >(getDefaultAsyncRateLimiterState()) options: AsyncRateLimiterOptions + asyncRetryer: AsyncRetryer #timeoutIds: Set = new Set() constructor( - private fn: TFn, + public fn: TFn, initialOptions: AsyncRateLimiterOptions, ) { this.options = { @@ -218,6 +228,10 @@ export class AsyncRateLimiter { ...initialOptions, throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } + this.asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) this.#setState(this.options.initialState ?? {}) for (const executionTime of this.#getExecutionTimesInWindow()) { this.#setCleanupTimeout(executionTime) @@ -331,13 +345,13 @@ export class AsyncRateLimiter { }) try { - const result = await this.fn(...args) // EXECUTE! + const result = await this.asyncRetryer.execute(...args) // EXECUTE! this.#setCleanupTimeout(now) this.#setState({ successCount: this.store.state.successCount + 1, lastResult: result, }) - this.options.onSuccess?.(result, args, this) + this.options.onSuccess?.(result as ReturnType, args, this) } catch (error) { this.#setState({ errorCount: this.store.state.errorCount + 1, diff --git a/packages/pacer/src/async-retryer.ts b/packages/pacer/src/async-retryer.ts new file mode 100644 index 00000000..f273d4db --- /dev/null +++ b/packages/pacer/src/async-retryer.ts @@ -0,0 +1,442 @@ +import { Store } from '@tanstack/store' +import { parseFunctionOrValue } from './utils' +import type { AnyAsyncFunction } from './types' + +export interface AsyncRetryerState { + /** + * The current retry attempt number (0 when not executing) + */ + currentAttempt: number + /** + * Total number of completed executions (successful or failed) + */ + executionCount: number + /** + * Whether the retryer is currently executing the function + */ + isExecuting: boolean + /** + * The most recent error encountered during execution + */ + lastError: Error | undefined + /** + * Timestamp of the last execution completion in milliseconds + */ + lastExecutionTime: number + /** + * The result from the most recent successful execution + */ + lastResult: ReturnType | undefined + /** + * Current execution status - 'disabled' when not enabled, 'idle' when ready, 'executing' when running + */ + status: 'disabled' | 'idle' | 'executing' | 'retrying' + /** + * Total time spent executing (including retries) in milliseconds + */ + totalExecutionTime: number +} + +/** + * Creates the default initial state for an AsyncRetryer instance + * @returns The default state with all values reset to initial values + */ +function getDefaultAsyncRetryerState< + TFn extends AnyAsyncFunction, +>(): AsyncRetryerState { + return structuredClone({ + currentAttempt: 0, + executionCount: 0, + isExecuting: false, + lastError: undefined, + lastExecutionTime: 0, + lastResult: undefined, + status: 'idle', + totalExecutionTime: 0, + }) +} + +export interface AsyncRetryerOptions { + /** + * The backoff strategy for retry delays: + * - 'exponential': Wait time doubles with each attempt (1s, 2s, 4s, ...) + * - 'linear': Wait time increases linearly (1s, 2s, 3s, ...) + * - 'fixed': Same wait time for all attempts + * @default 'exponential' + */ + backoff?: 'linear' | 'exponential' | 'fixed' + /** + * Base wait time in milliseconds between retries, or a function that returns the wait time + * @default 1000 + */ + baseWait?: number | ((retryer: AsyncRetryer) => number) + /** + * Whether the retryer is enabled, or a function that determines if it's enabled + * @default true + */ + enabled?: boolean | ((retryer: AsyncRetryer) => boolean) + /** + * Initial state to merge with the default state + */ + initialState?: Partial> + /** + * Maximum number of retry attempts, or a function that returns the max attempts + * @default 3 + */ + maxAttempts?: number | ((retryer: AsyncRetryer) => number) + /** + * Callback invoked when any error occurs during execution (including retries) + */ + onError?: ( + error: unknown, + args: Parameters, + retryer: AsyncRetryer, + ) => void + /** + * Callback invoked when the final error occurs after all retries are exhausted + */ + onLastError?: (error: Error, retryer: AsyncRetryer) => void + /** + * Callback invoked before each retry attempt + */ + onRetry?: (attempt: number, error: Error, retryer: AsyncRetryer) => void + /** + * Callback invoked after execution completes (success or failure) + */ + onSettled?: (args: Parameters, retryer: AsyncRetryer) => void + /** + * Callback invoked when execution succeeds + */ + onSuccess?: ( + result: ReturnType, + args: Parameters, + retryer: AsyncRetryer, + ) => void + /** + * Controls when errors are thrown: + * - 'last': Only throw the final error after all retries are exhausted + * - true: Throw every error immediately (disables retrying) + * - false: Never throw errors, return undefined instead + * @default 'last' + */ + throwOnError?: boolean | 'last' +} + +const defaultOptions: Omit< + Required>, + | 'initialState' + | 'onError' + | 'onLastError' + | 'onRetry' + | 'onSettled' + | 'onSuccess' +> = { + backoff: 'exponential', + baseWait: 1000, + enabled: true, + maxAttempts: 3, + throwOnError: 'last', +} + +/** + * Provides robust retry functionality for asynchronous functions, supporting configurable backoff strategies, + * attempt limits, and detailed state management. The AsyncRetryer class is designed to help you reliably + * execute async operations that may fail intermittently, such as network requests or database operations, + * by automatically retrying them according to your chosen policy. + * + * ## Retrying Concepts + * + * - **Retrying**: Automatically re-executes a failed async function up to a specified number of attempts. + * Useful for handling transient errors (e.g., network flakiness, rate limits, temporary server issues). + * - **Backoff Strategies**: Controls the delay between retry attempts (default: `'exponential'`): + * - `'exponential'`: Wait time doubles with each attempt (1s, 2s, 4s, ...) - **DEFAULT** + * - `'linear'`: Wait time increases linearly (1s, 2s, 3s, ...) + * - `'fixed'`: Waits a constant amount of time (`baseWait`) between each attempt + * - **Abort & Cancellation**: Supports cancellation via an internal `AbortController`. If cancelled, retries are stopped. + * - **State Management**: Tracks execution status, current attempt, last error, and result using TanStack Store. + * - **Callbacks**: Provides hooks for handling success, error, retry, and settled events. + * + * ## State Management + * - Uses TanStack Store for fine-grained reactivity. + * - State includes: `isExecuting`, `currentAttempt`, `lastError`, `lastResult`, and `status` (`idle`, `executing`, `retrying`, `disabled`). + * - State can be accessed via the `store.state` property. + * + * ## Error Handling + * The `throwOnError` option controls when errors are thrown (default: `'last'`): + * - `'last'`: Only throws the final error after all retries are exhausted - **DEFAULT** + * - `true`: Throws every error immediately (no retries) + * - `false`: Never throws errors, returns `undefined` instead + * + * Additional error handling: + * - `onError`: Called for every error (including during retries) + * - `onLastError`: Called only for the final error after all retries fail + * - If `onError` is provided but `throwOnError` is not specified, defaults to `'last'` + * + * ## Usage + * - Use for async operations that may fail transiently and benefit from retrying. + * - Configure `maxAttempts`, `backoff`, and `baseWait` to control retry behavior. + * - Use `onRetry`, `onSuccess`, `onError`, and `onSettled` for custom side effects. + * + * @example + * ```typescript + * // Retry a fetch operation up to 5 times with exponential backoff + * const retryer = new AsyncRetryer(fetchData, { + * maxAttempts: 5, + * backoff: 'exponential', + * baseWait: 1000, + * onRetry: (attempt, error) => console.log(`Retry attempt ${attempt} after error:`, error), + * onSuccess: (result) => console.log('Success:', result), + * onError: (error) => console.error('Error:', error), + * onLastError: (error) => console.error('All retries failed:', error), + * }) + * + * const result = await retryer.execute(userId) + * ``` + * + * @template TFn The async function type to be retried. + */ +export class AsyncRetryer { + readonly store: Store>> = new Store( + getDefaultAsyncRetryerState(), + ) + options: AsyncRetryerOptions & typeof defaultOptions + #abortController: AbortController | null = null + + /** + * Creates a new AsyncRetryer instance + * @param fn The async function to retry + * @param initialOptions Configuration options for the retryer + */ + constructor( + public fn: TFn, + initialOptions: AsyncRetryerOptions = {}, + ) { + this.options = { + ...defaultOptions, + ...initialOptions, + throwOnError: + initialOptions.throwOnError ?? + (initialOptions.onError ? false : defaultOptions.throwOnError), + } + this.#setState(this.options.initialState ?? {}) + } + + /** + * Updates the retryer options + * @param newOptions Partial options to merge with existing options + */ + setOptions = (newOptions: Partial>): void => { + this.options = { ...this.options, ...newOptions } + } + + #setState = (newState: Partial>): void => { + this.store.setState((state) => { + const combinedState = { + ...state, + ...newState, + } + const { isExecuting, currentAttempt } = combinedState + return { + ...combinedState, + status: !this.#getEnabled() + ? 'disabled' + : isExecuting && currentAttempt === 1 + ? 'executing' + : isExecuting && currentAttempt > 1 + ? 'retrying' + : 'idle', + } + }) + } + + #getEnabled = (): boolean => { + return !!parseFunctionOrValue(this.options.enabled, this) + } + + #getMaxAttempts = (): number => { + return parseFunctionOrValue(this.options.maxAttempts, this) + } + + #getBaseWait = (): number => { + return parseFunctionOrValue(this.options.baseWait, this) + } + + #calculateWait = (attempt: number): number => { + const baseWait = this.#getBaseWait() + + switch (this.options.backoff) { + case 'linear': + return baseWait * attempt + case 'exponential': + return baseWait * Math.pow(2, attempt - 1) + case 'fixed': + default: + return baseWait + } + } + + /** + * Executes the function with retry logic + * @param args Arguments to pass to the function + * @returns The function result, or undefined if disabled or all retries failed (when throwOnError is false) + * @throws The last error if throwOnError is true and all retries fail + */ + execute = async ( + ...args: Parameters + ): Promise | undefined> => { + if (!this.#getEnabled()) { + return undefined + } + + // Cancel any existing execution + this.cancel() + + const startTime = Date.now() + let lastError: Error | undefined + let result: ReturnType | undefined + + this.#abortController = new AbortController() + const signal = this.#abortController.signal + + this.#setState({ + isExecuting: true, + currentAttempt: 0, + lastError: undefined, + }) + + try { + let isLastAttempt = false + for (let attempt = 1; attempt <= this.#getMaxAttempts(); attempt++) { + isLastAttempt = attempt === this.#getMaxAttempts() + this.#setState({ currentAttempt: attempt }) + + try { + // Check if cancelled before executing + if (signal.aborted) { + throw new Error('Retry cancelled') + } + + result = (await this.fn(...args)) as ReturnType + + const totalTime = Date.now() - startTime + this.#setState({ + executionCount: this.store.state.executionCount + 1, + isExecuting: false, + lastExecutionTime: Date.now(), + totalExecutionTime: totalTime, + currentAttempt: 0, + lastResult: result, + }) + + this.options.onSuccess?.(result, args, this) + + return result + } catch (error) { + lastError = error instanceof Error ? error : new Error(String(error)) + this.#setState({ lastError }) + + if (attempt < this.#getMaxAttempts()) { + this.options.onRetry?.(attempt, lastError, this) + + const wait = this.#calculateWait(attempt) + if (wait > 0) { + await new Promise((resolve, reject) => { + const timeout = setTimeout(resolve, wait) + signal.addEventListener('abort', () => { + clearTimeout(timeout) + reject(new Error('Retry cancelled')) + }) + }) + } + } + } finally { + this.options.onSettled?.(args, this) + } + } + + this.#setState({ + isExecuting: false, + currentAttempt: 0, + }) + + this.options.onLastError?.(lastError!, this) + this.options.onError?.(lastError!, args, this) + this.options.onSettled?.(args, this) + + if ( + (this.options.throwOnError === 'last' && isLastAttempt) || + this.options.throwOnError === true + ) { + throw lastError + } + + return undefined as any + } catch (error) { + // Don't rethrow if the error was from cancellation + if (error instanceof Error && error.message === 'Retry cancelled') { + return undefined + } + + this.#setState({ + isExecuting: false, + currentAttempt: 0, + }) + + const errorToHandle = + error instanceof Error ? error : new Error(String(error)) + this.options.onError?.(errorToHandle, args, this) + this.options.onSettled?.(args, this) + + throw error + } finally { + this.#abortController = null + } + } + + /** + * Cancels the current execution and any pending retries + */ + cancel = (): void => { + if (this.#abortController) { + this.#abortController.abort() + this.#abortController = null + this.#setState({ + isExecuting: false, + currentAttempt: 0, + }) + } + } + + /** + * Resets the retryer to its initial state and cancels any ongoing execution + */ + reset = (): void => { + this.cancel() + this.#setState(getDefaultAsyncRetryerState()) + } +} + +/** + * Creates a retry-enabled version of an async function + * + * @param fn The async function to add retry functionality to + * @param initialOptions Configuration options for the retry behavior + * @returns A new function that executes the original with retry logic + * + * @example + * ```typescript + * const retryFetch = asyncRetry(fetch, { + * maxAttempts: 3, + * backoff: 'exponential' + * }) + * + * const response = await retryFetch('/api/data') + * ``` + */ +export function asyncRetry( + fn: TFn, + initialOptions: AsyncRetryerOptions = {}, +): (...args: Parameters) => Promise | undefined> { + const retryer = new AsyncRetryer(fn, initialOptions) + return retryer.execute +} diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index a6018403..3d523d78 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -1,5 +1,7 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { AsyncRetryer } from './async-retryer' +import type { AsyncRetryerOptions } from './async-retryer' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncThrottlerState { @@ -66,6 +68,10 @@ function getDefaultAsyncThrottlerState< * Options for configuring an async throttled function */ export interface AsyncThrottlerOptions { + /** + * Options for configuring the underlying async retryer + */ + asyncRetryerOptions?: AsyncRetryerOptions /** * Whether the throttler is enabled. When disabled, maybeExecute will not trigger any executions. * Can be a boolean or a function that returns a boolean. @@ -131,6 +137,9 @@ type AsyncThrottlerOptionsWithOptionalCallbacks = OptionalKeys< > const defaultOptions: AsyncThrottlerOptionsWithOptionalCallbacks = { + asyncRetryerOptions: { + maxAttempts: 1, + }, enabled: true, leading: true, trailing: true, @@ -190,6 +199,7 @@ export class AsyncThrottler { AsyncThrottlerState >(getDefaultAsyncThrottlerState()) options: AsyncThrottlerOptions + asyncRetryer: AsyncRetryer #abortController: AbortController | null = null #timeoutId: NodeJS.Timeout | null = null #resolvePreviousPromise: @@ -197,7 +207,7 @@ export class AsyncThrottler { | null = null constructor( - private fn: TFn, + public fn: TFn, initialOptions: AsyncThrottlerOptions, ) { this.options = { @@ -205,6 +215,10 @@ export class AsyncThrottler { ...initialOptions, throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } + this.asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) this.#setState(this.options.initialState ?? {}) } @@ -330,12 +344,12 @@ export class AsyncThrottler { this.#abortController = new AbortController() try { this.#setState({ isExecuting: true }) - const result = await this.fn(...args) // EXECUTE! + const result = await this.asyncRetryer.execute(...args) // EXECUTE! this.#setState({ lastResult: result, successCount: this.store.state.successCount + 1, }) - this.options.onSuccess?.(result, args, this) + this.options.onSuccess?.(result as ReturnType, args, this) } catch (error) { this.#setState({ errorCount: this.store.state.errorCount + 1, diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index b2687257..01239ebb 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -143,7 +143,7 @@ export class Batcher { #timeoutId: NodeJS.Timeout | null = null constructor( - private fn: (items: Array) => void, + public fn: (items: Array) => void, initialOptions: BatcherOptions, ) { this.options = { diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index 1652680c..8f28d8f4 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -123,7 +123,7 @@ export class Debouncer { #timeoutId: NodeJS.Timeout | undefined constructor( - private fn: TFn, + public fn: TFn, initialOptions: DebouncerOptions, ) { this.options = { diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index 375d8a2c..30c4a96e 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -248,7 +248,7 @@ export class Queuer { #timeoutId: NodeJS.Timeout | null = null constructor( - private fn: (item: TValue) => void, + public fn: (item: TValue) => void, initialOptions: QueuerOptions = {}, ) { this.options = { diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index 98dede16..fec03b33 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -136,7 +136,7 @@ export class RateLimiter { #timeoutIds: Set = new Set() constructor( - private fn: TFn, + public fn: TFn, initialOptions: RateLimiterOptions, ) { this.options = { diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index cf9053f9..e17a422d 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -131,7 +131,7 @@ export class Throttler { #timeoutId: NodeJS.Timeout | undefined constructor( - private fn: TFn, + public fn: TFn, initialOptions: ThrottlerOptions, ) { this.options = { diff --git a/packages/pacer/tests/async-retryer.test.ts b/packages/pacer/tests/async-retryer.test.ts new file mode 100644 index 00000000..fdc1e883 --- /dev/null +++ b/packages/pacer/tests/async-retryer.test.ts @@ -0,0 +1,578 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { AsyncRetryer, asyncRetry } from '../src/async-retryer' + +describe('AsyncRetryer', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + describe('Constructor and Defaults', () => { + it('should create with default options', () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn) + + expect(retryer.options.backoff).toBe('exponential') + expect(retryer.options.baseWait).toBe(1000) + expect(retryer.options.enabled).toBe(true) + expect(retryer.options.maxAttempts).toBe(3) + expect(retryer.options.throwOnError).toBe('last') + }) + + it('should merge custom options with defaults', () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 5, + backoff: 'linear', + baseWait: 500, + }) + + expect(retryer.options.maxAttempts).toBe(5) + expect(retryer.options.backoff).toBe('linear') + expect(retryer.options.baseWait).toBe(500) + expect(retryer.options.enabled).toBe(true) // Still default + }) + + it('should initialize with default state', () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn) + + expect(retryer.store.state).toEqual({ + currentAttempt: 0, + executionCount: 0, + isExecuting: false, + lastError: undefined, + lastExecutionTime: 0, + lastResult: undefined, + status: 'idle', + totalExecutionTime: 0, + }) + }) + + it('should merge initial state', () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn, { + initialState: { executionCount: 5 }, + }) + + expect(retryer.store.state.executionCount).toBe(5) + expect(retryer.store.state.currentAttempt).toBe(0) // Other defaults preserved + }) + }) + + describe('Successful Execution', () => { + it('should execute function successfully on first attempt', async () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn) + + const result = await retryer.execute('arg1', 'arg2') + + expect(result).toBe('success') + expect(mockFn).toHaveBeenCalledTimes(1) + expect(mockFn).toHaveBeenCalledWith('arg1', 'arg2') + expect(retryer.store.state.executionCount).toBe(1) + expect(retryer.store.state.lastResult).toBe('success') + expect(retryer.store.state.status).toBe('idle') + expect(retryer.store.state.currentAttempt).toBe(0) + }) + + it('should call onSuccess callback', async () => { + const mockFn = vi.fn().mockResolvedValue('success') + const onSuccess = vi.fn() + const retryer = new AsyncRetryer(mockFn, { onSuccess }) + + await retryer.execute('arg1') + + expect(onSuccess).toHaveBeenCalledTimes(1) + expect(onSuccess).toHaveBeenCalledWith('success', ['arg1'], retryer) + }) + + it('should update execution time and timestamp', async () => { + const mockFn = vi.fn().mockImplementation(async () => { + vi.advanceTimersByTime(100) + return 'success' + }) + const retryer = new AsyncRetryer(mockFn) + + const beforeTime = Date.now() + await retryer.execute() + const afterTime = Date.now() + + expect(retryer.store.state.totalExecutionTime).toBeGreaterThan(0) + expect(retryer.store.state.lastExecutionTime).toBeGreaterThanOrEqual(beforeTime) + expect(retryer.store.state.lastExecutionTime).toBeLessThanOrEqual(afterTime) + }) + }) + + describe('Retry Logic', () => { + it('should retry on failure and succeed on second attempt', async () => { + const mockFn = vi + .fn() + .mockRejectedValueOnce(new Error('First failure')) + .mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn, { baseWait: 100, throwOnError: 'last' }) + + const result = await retryer.execute('arg1') + + expect(result).toBe('success') + expect(mockFn).toHaveBeenCalledTimes(2) + expect(retryer.store.state.executionCount).toBe(1) + expect(retryer.store.state.lastResult).toBe('success') + expect(retryer.store.state.status).toBe('idle') + }) + + it('should call onRetry callback for each retry', async () => { + const mockFn = vi + .fn() + .mockRejectedValueOnce(new Error('First failure')) + .mockRejectedValueOnce(new Error('Second failure')) + .mockResolvedValue('success') + const onRetry = vi.fn() + const retryer = new AsyncRetryer(mockFn, { onRetry, baseWait: 100 }) + + const executePromise = retryer.execute() + + // Let first retry happen + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + + // Let second retry happen + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(200) // Exponential backoff: 100 * 2^1 + + await executePromise + + expect(onRetry).toHaveBeenCalledTimes(2) + expect(onRetry).toHaveBeenNthCalledWith(1, 1, expect.any(Error), retryer) + expect(onRetry).toHaveBeenNthCalledWith(2, 2, expect.any(Error), retryer) + }) + + it('should fail after exhausting all retries', async () => { + const error = new Error('Persistent failure') + const mockFn = vi.fn().mockRejectedValue(error) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 2, + baseWait: 100, + throwOnError: 'last' + }) + + const executePromise = retryer.execute() + + // Complete first retry + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + + await expect(executePromise).rejects.toThrow('Persistent failure') + expect(mockFn).toHaveBeenCalledTimes(2) + expect(retryer.store.state.lastError).toBe(error) + expect(retryer.store.state.status).toBe('idle') + }) + }) + + describe('Backoff Strategies', () => { + it('should use exponential backoff by default', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 3, + baseWait: 100, + throwOnError: false + }) + + const result = await retryer.execute() + + expect(result).toBeUndefined() + expect(mockFn).toHaveBeenCalledTimes(3) + }) + + it('should use linear backoff', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 3, + baseWait: 100, + backoff: 'linear', + throwOnError: false + }) + + const executePromise = retryer.execute() + + // First retry should wait 100ms (100 * 1) + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + + // Second retry should wait 200ms (100 * 2) + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(200) + + await executePromise + expect(mockFn).toHaveBeenCalledTimes(3) + }) + + it('should use fixed backoff', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 3, + baseWait: 150, + backoff: 'fixed', + throwOnError: false + }) + + const executePromise = retryer.execute() + + // Both retries should wait 150ms + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(150) + + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(150) + + await executePromise + expect(mockFn).toHaveBeenCalledTimes(3) + }) + }) + + describe('Error Handling', () => { + it('should throw on last error by default', async () => { + const error = new Error('Test error') + const mockFn = vi.fn().mockRejectedValue(error) + const retryer = new AsyncRetryer(mockFn, { maxAttempts: 1 }) + + await expect(retryer.execute()).rejects.toThrow('Test error') + }) + + it('should not throw when throwOnError is false', async () => { + const error = new Error('Test error') + const mockFn = vi.fn().mockRejectedValue(error) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 1, + throwOnError: false + }) + + const result = await retryer.execute() + expect(result).toBeUndefined() + }) + + it('should throw after retries when throwOnError is true', async () => { + const error = new Error('Test error') + const mockFn = vi.fn().mockRejectedValue(error) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 3, + baseWait: 100, + throwOnError: true + }) + + const executePromise = retryer.execute() + + // Advance through all retries + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) // First retry + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(200) // Second retry + + await expect(executePromise).rejects.toThrow('Test error') + expect(mockFn).toHaveBeenCalledTimes(3) // Should still retry but throw at end + }) + + it('should call onError for every error', async () => { + const error = new Error('Test error') + const mockFn = vi.fn().mockRejectedValue(error) + const onError = vi.fn() + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 2, + baseWait: 100, + onError, + throwOnError: false + }) + + const executePromise = retryer.execute('arg1') + + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + await executePromise + + expect(onError).toHaveBeenCalledTimes(1) // Only called once at the end after all retries fail + expect(onError).toHaveBeenCalledWith(error, ['arg1'], retryer) + }) + + it('should call onLastError only for final error', async () => { + const error = new Error('Test error') + const mockFn = vi.fn().mockRejectedValue(error) + const onLastError = vi.fn() + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 2, + baseWait: 100, + onLastError, + throwOnError: false + }) + + const executePromise = retryer.execute() + + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + await executePromise + + expect(onLastError).toHaveBeenCalledTimes(1) + expect(onLastError).toHaveBeenCalledWith(error, retryer) + }) + }) + + describe('State Management', () => { + it('should track execution state correctly', async () => { + const mockFn = vi.fn().mockImplementation(async () => { + vi.advanceTimersByTime(50) + return 'success' + }) + const retryer = new AsyncRetryer(mockFn) + + expect(retryer.store.state.status).toBe('idle') + expect(retryer.store.state.isExecuting).toBe(false) + + const executePromise = retryer.execute() + + // Should be executing now + expect(retryer.store.state.status).toBe('executing') + expect(retryer.store.state.isExecuting).toBe(true) + expect(retryer.store.state.currentAttempt).toBe(1) + + await executePromise + + expect(retryer.store.state.status).toBe('idle') + expect(retryer.store.state.isExecuting).toBe(false) + expect(retryer.store.state.currentAttempt).toBe(0) + }) + + it('should show retrying status during retries', async () => { + const mockFn = vi + .fn() + .mockRejectedValueOnce(new Error('Failure')) + .mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn, { baseWait: 100, throwOnError: false }) + + const result = await retryer.execute() + + expect(retryer.store.state.status).toBe('idle') + }) + + it('should show disabled status when not enabled', async () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn, { enabled: false }) + + expect(retryer.store.state.status).toBe('disabled') + + const result = await retryer.execute() + expect(result).toBeUndefined() + expect(mockFn).not.toHaveBeenCalled() + }) + }) + + describe('Callbacks', () => { + it('should call onSettled after every execution attempt', async () => { + const mockFn = vi + .fn() + .mockRejectedValueOnce(new Error('Failure')) + .mockResolvedValue('success') + const onSettled = vi.fn() + const retryer = new AsyncRetryer(mockFn, { onSettled, baseWait: 100 }) + + const executePromise = retryer.execute('arg1') + + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + await executePromise + + // Called after each attempt (failed + successful) + expect(onSettled).toHaveBeenCalledTimes(2) + expect(onSettled).toHaveBeenCalledWith(['arg1'], retryer) + }) + }) + + describe('Dynamic Options', () => { + it('should support function-based maxAttempts', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const maxAttemptsFn = vi.fn().mockReturnValue(2) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: maxAttemptsFn, + baseWait: 100, + throwOnError: false + }) + + const executePromise = retryer.execute() + + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + await executePromise + + expect(maxAttemptsFn).toHaveBeenCalledWith(retryer) + expect(mockFn).toHaveBeenCalledTimes(2) + }) + + it('should support function-based baseWait', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const baseWaitFn = vi.fn().mockReturnValue(200) + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 2, + baseWait: baseWaitFn, + throwOnError: false + }) + + const executePromise = retryer.execute() + + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(200) // Should use function return value + await executePromise + + expect(baseWaitFn).toHaveBeenCalledWith(retryer) + }) + + it('should support function-based enabled', async () => { + const mockFn = vi.fn().mockResolvedValue('success') + const enabledFn = vi.fn().mockReturnValue(false) + const retryer = new AsyncRetryer(mockFn, { enabled: enabledFn }) + + const result = await retryer.execute() + + expect(enabledFn).toHaveBeenCalledWith(retryer) + expect(result).toBeUndefined() + expect(mockFn).not.toHaveBeenCalled() + }) + }) + + describe('Cancellation', () => { + it('should allow new executions after cancel', async () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn) + + // Start and immediately cancel + const executePromise1 = retryer.execute() + retryer.cancel() + + const result1 = await executePromise1 + + // Should be able to execute again after cancel + const result2 = await retryer.execute() + + expect(result2).toBe('success') + expect(retryer.store.state.isExecuting).toBe(false) + }) + + it('should cancel retry delays', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const retryer = new AsyncRetryer(mockFn, { baseWait: 1000, throwOnError: false }) + + const executePromise = retryer.execute() + + // Wait for first attempt to fail + await vi.runOnlyPendingTimersAsync() + + // Cancel during retry delay + retryer.cancel() + + const result = await executePromise + expect(result).toBeUndefined() + expect(mockFn).toHaveBeenCalledTimes(1) // Only first attempt + }) + }) + + describe('Reset', () => { + it('should reset to initial state', async () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn) + + await retryer.execute() + expect(retryer.store.state.executionCount).toBe(1) + expect(retryer.store.state.lastResult).toBe('success') + + retryer.reset() + + expect(retryer.store.state).toEqual({ + currentAttempt: 0, + executionCount: 0, + isExecuting: false, + lastError: undefined, + lastExecutionTime: 0, + lastResult: undefined, + status: 'idle', + totalExecutionTime: 0, + }) + }) + + it('should cancel ongoing execution when resetting', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const retryer = new AsyncRetryer(mockFn, { baseWait: 1000, throwOnError: false }) + + const executePromise = retryer.execute() + + // Wait for first attempt to fail and retry delay to start + await vi.runOnlyPendingTimersAsync() + + retryer.reset() + + const result = await executePromise + expect(result).toBeUndefined() + expect(mockFn).toHaveBeenCalledTimes(1) // Only first attempt before reset + }) + }) + + describe('setOptions', () => { + it('should update options', () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryer = new AsyncRetryer(mockFn, { maxAttempts: 3 }) + + expect(retryer.options.maxAttempts).toBe(3) + + retryer.setOptions({ maxAttempts: 5, backoff: 'linear' }) + + expect(retryer.options.maxAttempts).toBe(5) + expect(retryer.options.backoff).toBe('linear') + expect(retryer.options.baseWait).toBe(1000) // Unchanged + }) + }) +}) + +describe('asyncRetry utility function', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + it('should create a retry-enabled function', async () => { + const mockFn = vi.fn().mockResolvedValue('success') + const retryFn = asyncRetry(mockFn, { maxAttempts: 2 }) + + const result = await retryFn('arg1', 'arg2') + + expect(result).toBe('success') + expect(mockFn).toHaveBeenCalledWith('arg1', 'arg2') + }) + + it('should retry on failure', async () => { + const mockFn = vi + .fn() + .mockRejectedValueOnce(new Error('Failure')) + .mockResolvedValue('success') + const retryFn = asyncRetry(mockFn, { baseWait: 100, throwOnError: 'last' }) + + const executePromise = retryFn() + + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + const result = await executePromise + + expect(result).toBe('success') + expect(mockFn).toHaveBeenCalledTimes(2) + }) + + it('should use default options', async () => { + const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) + const retryFn = asyncRetry(mockFn, { throwOnError: false }) + + const executePromise = retryFn() + + // Should retry 3 times by default + vi.advanceTimersByTime(1000) // First retry: 1000ms + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(2000) // Second retry: 2000ms + await vi.runOnlyPendingTimersAsync() + + const result = await executePromise + expect(result).toBeUndefined() + expect(mockFn).toHaveBeenCalledTimes(3) // Default maxAttempts + }) +}) \ No newline at end of file diff --git a/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts b/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts index ac4b408f..ec9aa342 100644 --- a/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts +++ b/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts @@ -174,6 +174,7 @@ export function useAsyncBatcher( const state = useStore(asyncBatcher.store, selector) + asyncBatcher.fn = fn asyncBatcher.setOptions(options) return useMemo( diff --git a/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts b/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts index ac025570..86637757 100644 --- a/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts +++ b/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts @@ -156,6 +156,7 @@ export function useAsyncDebouncer( const state = useStore(asyncDebouncer.store, selector) + asyncDebouncer.fn = fn asyncDebouncer.setOptions(options) useEffect(() => { diff --git a/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts b/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts index 094a3f24..2e925fd7 100644 --- a/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts +++ b/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts @@ -174,6 +174,7 @@ export function useAsyncQueuer( const state = useStore(asyncQueuer.store, selector) + asyncQueuer.fn = fn asyncQueuer.setOptions(options) return useMemo( diff --git a/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts b/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts index 6d804054..179a8277 100644 --- a/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts +++ b/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts @@ -190,6 +190,7 @@ export function useAsyncRateLimiter< const state = useStore(asyncRateLimiter.store, selector) + asyncRateLimiter.fn = fn asyncRateLimiter.setOptions(options) return useMemo( diff --git a/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts b/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts index 8bc7cd9c..08f083b8 100644 --- a/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts +++ b/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts @@ -167,6 +167,9 @@ export function useAsyncThrottler( const state = useStore(asyncThrottler.store, selector) + asyncThrottler.fn = fn + asyncThrottler.setOptions(options) + useEffect(() => { return () => asyncThrottler.cancel() }, [asyncThrottler]) diff --git a/packages/react-pacer/src/batcher/useBatcher.ts b/packages/react-pacer/src/batcher/useBatcher.ts index 0ab43d92..2709d6d0 100644 --- a/packages/react-pacer/src/batcher/useBatcher.ts +++ b/packages/react-pacer/src/batcher/useBatcher.ts @@ -128,6 +128,7 @@ export function useBatcher( const state = useStore(batcher.store, selector) + batcher.fn = fn batcher.setOptions(options) return useMemo( diff --git a/packages/react-pacer/src/debouncer/useDebouncer.ts b/packages/react-pacer/src/debouncer/useDebouncer.ts index 5f43608f..24674b64 100644 --- a/packages/react-pacer/src/debouncer/useDebouncer.ts +++ b/packages/react-pacer/src/debouncer/useDebouncer.ts @@ -108,6 +108,7 @@ export function useDebouncer( const state = useStore(debouncer.store, selector) + debouncer.fn = fn debouncer.setOptions(options) useEffect(() => { diff --git a/packages/react-pacer/src/queuer/useQueuer.ts b/packages/react-pacer/src/queuer/useQueuer.ts index d490486a..dec8992b 100644 --- a/packages/react-pacer/src/queuer/useQueuer.ts +++ b/packages/react-pacer/src/queuer/useQueuer.ts @@ -138,6 +138,7 @@ export function useQueuer( const state = useStore(queuer.store, selector) + queuer.fn = fn queuer.setOptions(options) return useMemo( diff --git a/packages/react-pacer/src/rate-limiter/useRateLimiter.ts b/packages/react-pacer/src/rate-limiter/useRateLimiter.ts index 2e43de2f..8bf4442f 100644 --- a/packages/react-pacer/src/rate-limiter/useRateLimiter.ts +++ b/packages/react-pacer/src/rate-limiter/useRateLimiter.ts @@ -147,6 +147,7 @@ export function useRateLimiter( const state = useStore(rateLimiter.store, selector) + rateLimiter.fn = fn rateLimiter.setOptions(options) return useMemo( diff --git a/packages/react-pacer/src/throttler/useThrottler.ts b/packages/react-pacer/src/throttler/useThrottler.ts index e164db6e..3bed9bef 100644 --- a/packages/react-pacer/src/throttler/useThrottler.ts +++ b/packages/react-pacer/src/throttler/useThrottler.ts @@ -113,6 +113,7 @@ export function useThrottler( const state = useStore(throttler.store, selector) + throttler.fn = fn throttler.setOptions(options) useEffect(() => { From d03fe2b10e718b728c8ead3566aa76334f8aa3f4 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 6 Aug 2025 18:46:52 -0500 Subject: [PATCH 02/44] add retry example --- .../react/useAsyncDebouncer/src/index.tsx | 1 - examples/react/useAsyncRetryer/.eslintrc.cjs | 13 ++ examples/react/useAsyncRetryer/.gitignore | 27 +++ examples/react/useAsyncRetryer/README.md | 6 + examples/react/useAsyncRetryer/index.html | 16 ++ examples/react/useAsyncRetryer/package.json | 34 ++++ .../useAsyncRetryer/public/emblem-light.svg | 13 ++ examples/react/useAsyncRetryer/src/index.tsx | 137 +++++++++++++ examples/react/useAsyncRetryer/tsconfig.json | 23 +++ examples/react/useAsyncRetryer/vite.config.ts | 13 ++ packages/pacer/package.json | 10 + packages/pacer/src/async-retryer.ts | 132 +++++-------- packages/pacer/src/index.ts | 1 + packages/pacer/tests/async-retryer.test.ts | 38 +++- packages/react-pacer/package.json | 10 + .../react-pacer/src/async-retryer/index.ts | 1 + .../src/async-retryer/useAsyncRetryer.ts | 180 ++++++++++++++++++ packages/react-pacer/src/index.ts | 3 + packages/react-pacer/vite.config.ts | 1 + pnpm-lock.yaml | 25 +++ 20 files changed, 598 insertions(+), 86 deletions(-) create mode 100644 examples/react/useAsyncRetryer/.eslintrc.cjs create mode 100644 examples/react/useAsyncRetryer/.gitignore create mode 100644 examples/react/useAsyncRetryer/README.md create mode 100644 examples/react/useAsyncRetryer/index.html create mode 100644 examples/react/useAsyncRetryer/package.json create mode 100644 examples/react/useAsyncRetryer/public/emblem-light.svg create mode 100644 examples/react/useAsyncRetryer/src/index.tsx create mode 100644 examples/react/useAsyncRetryer/tsconfig.json create mode 100644 examples/react/useAsyncRetryer/vite.config.ts create mode 100644 packages/react-pacer/src/async-retryer/index.ts create mode 100644 packages/react-pacer/src/async-retryer/useAsyncRetryer.ts diff --git a/examples/react/useAsyncDebouncer/src/index.tsx b/examples/react/useAsyncDebouncer/src/index.tsx index 956aded5..cf7cea5a 100644 --- a/examples/react/useAsyncDebouncer/src/index.tsx +++ b/examples/react/useAsyncDebouncer/src/index.tsx @@ -23,7 +23,6 @@ function App() { // The function that will become debounced const handleSearch = async (term: string) => { - throw new Error('Test error') if (!term) { setResults([]) return diff --git a/examples/react/useAsyncRetryer/.eslintrc.cjs b/examples/react/useAsyncRetryer/.eslintrc.cjs new file mode 100644 index 00000000..9ff0b9fc --- /dev/null +++ b/examples/react/useAsyncRetryer/.eslintrc.cjs @@ -0,0 +1,13 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + settings: { + extends: ['plugin:react/recommended', 'plugin:react-hooks/recommended'], + rules: { + 'react/no-children-prop': 'off', + }, + }, +} + +module.exports = config diff --git a/examples/react/useAsyncRetryer/.gitignore b/examples/react/useAsyncRetryer/.gitignore new file mode 100644 index 00000000..4673b022 --- /dev/null +++ b/examples/react/useAsyncRetryer/.gitignore @@ -0,0 +1,27 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +pnpm-lock.yaml +yarn.lock +package-lock.json + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/examples/react/useAsyncRetryer/README.md b/examples/react/useAsyncRetryer/README.md new file mode 100644 index 00000000..1cf88926 --- /dev/null +++ b/examples/react/useAsyncRetryer/README.md @@ -0,0 +1,6 @@ +# Example + +To run this example: + +- `npm install` +- `npm run dev` diff --git a/examples/react/useAsyncRetryer/index.html b/examples/react/useAsyncRetryer/index.html new file mode 100644 index 00000000..701aa26e --- /dev/null +++ b/examples/react/useAsyncRetryer/index.html @@ -0,0 +1,16 @@ + + + + + + + + + TanStack Pacer Example + + + +
+ + + diff --git a/examples/react/useAsyncRetryer/package.json b/examples/react/useAsyncRetryer/package.json new file mode 100644 index 00000000..99d2327e --- /dev/null +++ b/examples/react/useAsyncRetryer/package.json @@ -0,0 +1,34 @@ +{ + "name": "@tanstack/pacer-example-react-use-async-retryer", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port=3005", + "build": "vite build", + "preview": "vite preview", + "test:types": "tsc" + }, + "dependencies": { + "@tanstack/react-pacer": "^0.14.0", + "react": "^19.1.1", + "react-dom": "^19.1.1" + }, + "devDependencies": { + "@types/react": "^19.1.9", + "@types/react-dom": "^19.1.7", + "@vitejs/plugin-react": "^4.7.0", + "vite": "^7.0.6" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/examples/react/useAsyncRetryer/public/emblem-light.svg b/examples/react/useAsyncRetryer/public/emblem-light.svg new file mode 100644 index 00000000..a58e69ad --- /dev/null +++ b/examples/react/useAsyncRetryer/public/emblem-light.svg @@ -0,0 +1,13 @@ + + + + emblem-light + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/examples/react/useAsyncRetryer/src/index.tsx b/examples/react/useAsyncRetryer/src/index.tsx new file mode 100644 index 00000000..44d839c2 --- /dev/null +++ b/examples/react/useAsyncRetryer/src/index.tsx @@ -0,0 +1,137 @@ +import { useState } from 'react' +import ReactDOM from 'react-dom/client' +import { useAsyncRetryer } from '@tanstack/react-pacer/async-retryer' + +interface UserData { + id: number + name: string + email: string +} + +// Simulate API call with fake data that fails randomly +const fakeApi = async (userId: string): Promise => { + await new Promise((resolve) => setTimeout(resolve, 800)) // Simulate network delay + + // Randomly fail 60% of the time to demonstrate retry functionality + if (Math.random() < 0.6) { + throw new Error(`Network error fetching user ${userId}`) + } + + return { + id: parseInt(userId), + name: `User ${userId}`, + email: `user${userId}@example.com` + } +} + +function App() { + const [userId, setUserId] = useState('123') + const [userData, setUserData] = useState(null) + + // The function that will be retried + const fetchUser = async (id: string) => { + const data = await fakeApi(id) + setUserData(data) + return data + } + + // hook that gives you an async retryer instance + const asyncRetryer = useAsyncRetryer( + fetchUser, + { + maxAttempts: 5, // Retry up to 5 times + backoff: 'exponential', // Exponential backoff (1s, 2s, 4s, 8s, 16s) + baseWait: 1000, // Start with 1 second wait + onRetry: (attempt, error) => { + console.log(`Retry attempt ${attempt} after error:`, error.message) + }, + onError: (error) => { + console.error('Request failed:', error.message) + }, + onLastError: (error) => { + console.error('All retries failed:', error.message) + setUserData(null) + }, + onSuccess: (result) => { + console.log('Request succeeded:', result) + }, + }, + // Optional Selector function to pick the state you want to track and use + (state) => ({ + isExecuting: state.isExecuting, + currentAttempt: state.currentAttempt, + executionCount: state.executionCount, + lastError: state.lastError, + status: state.status, + }), + ) + + // get and name our retry function + const handleFetchUser = asyncRetryer.execute + + // event handler that calls the retry function + async function onFetchUser() { + const result = await handleFetchUser(userId) // optionally await result if you need to + console.log('Final result:', result) + } + + return ( +
+

TanStack Pacer useAsyncRetryer Example

+
+ setUserId(e.target.value)} + placeholder="Enter user ID..." + style={{ marginRight: '10px' }} + /> + +
+ +
+ + +
+ +
+

Status: {asyncRetryer.state.status}

+ {asyncRetryer.state.currentAttempt > 0 && ( +

Current Attempt: {asyncRetryer.state.currentAttempt}

+ )} +

Total Executions: {asyncRetryer.state.executionCount}

+ {asyncRetryer.state.lastError && ( +

Last Error: {asyncRetryer.state.lastError.message}

+ )} +
+ + {userData && ( +
+

User Data:

+

ID: {userData.id}

+

Name: {userData.name}

+

Email: {userData.email}

+
+ )} + +
+        {JSON.stringify(asyncRetryer.store.state, null, 2)}
+      
+
+ ) +} + +const root = ReactDOM.createRoot(document.getElementById('root')!) + +let mounted = true +root.render() + +// demo unmounting and cancellation +document.addEventListener('keydown', (e) => { + if (e.shiftKey && e.key === 'Enter') { + mounted = !mounted + root.render(mounted ? : null) + } +}) diff --git a/examples/react/useAsyncRetryer/tsconfig.json b/examples/react/useAsyncRetryer/tsconfig.json new file mode 100644 index 00000000..6e9088d6 --- /dev/null +++ b/examples/react/useAsyncRetryer/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "Bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src", "vite.config.ts"] +} diff --git a/examples/react/useAsyncRetryer/vite.config.ts b/examples/react/useAsyncRetryer/vite.config.ts new file mode 100644 index 00000000..4e194366 --- /dev/null +++ b/examples/react/useAsyncRetryer/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + react({ + // babel: { + // plugins: [['babel-plugin-react-compiler', { target: '19' }]], + // }, + }), + ], +}) diff --git a/packages/pacer/package.json b/packages/pacer/package.json index ccb7fbfa..6d0d117e 100644 --- a/packages/pacer/package.json +++ b/packages/pacer/package.json @@ -77,6 +77,16 @@ "default": "./dist/cjs/async-rate-limiter.cjs" } }, + "./async-retryer": { + "import": { + "types": "./dist/esm/async-retryer.d.ts", + "default": "./dist/esm/async-retryer.js" + }, + "require": { + "types": "./dist/cjs/async-retryer.d.cts", + "default": "./dist/cjs/async-retryer.cjs" + } + }, "./async-throttler": { "import": { "types": "./dist/esm/async-throttler.d.ts", diff --git a/packages/pacer/src/async-retryer.ts b/packages/pacer/src/async-retryer.ts index f273d4db..9c57763a 100644 --- a/packages/pacer/src/async-retryer.ts +++ b/packages/pacer/src/async-retryer.ts @@ -304,93 +304,65 @@ export class AsyncRetryer { lastError: undefined, }) - try { - let isLastAttempt = false - for (let attempt = 1; attempt <= this.#getMaxAttempts(); attempt++) { - isLastAttempt = attempt === this.#getMaxAttempts() - this.#setState({ currentAttempt: attempt }) - - try { - // Check if cancelled before executing - if (signal.aborted) { - throw new Error('Retry cancelled') - } - - result = (await this.fn(...args)) as ReturnType - - const totalTime = Date.now() - startTime - this.#setState({ - executionCount: this.store.state.executionCount + 1, - isExecuting: false, - lastExecutionTime: Date.now(), - totalExecutionTime: totalTime, - currentAttempt: 0, - lastResult: result, - }) - - this.options.onSuccess?.(result, args, this) - - return result - } catch (error) { - lastError = error instanceof Error ? error : new Error(String(error)) - this.#setState({ lastError }) - - if (attempt < this.#getMaxAttempts()) { - this.options.onRetry?.(attempt, lastError, this) - - const wait = this.#calculateWait(attempt) - if (wait > 0) { - await new Promise((resolve, reject) => { - const timeout = setTimeout(resolve, wait) - signal.addEventListener('abort', () => { - clearTimeout(timeout) - reject(new Error('Retry cancelled')) - }) + let isLastAttempt = false + for (let attempt = 1; attempt <= this.#getMaxAttempts(); attempt++) { + isLastAttempt = attempt === this.#getMaxAttempts() + this.#setState({ currentAttempt: attempt }) + + try { + result = (await this.fn(...args)) as ReturnType + + const totalTime = Date.now() - startTime + this.#setState({ + executionCount: this.store.state.executionCount + 1, + isExecuting: false, + lastExecutionTime: Date.now(), + totalExecutionTime: totalTime, + currentAttempt: 0, + lastResult: result, + }) + + this.options.onSuccess?.(result, args, this) + + return result + } catch (error) { + lastError = error instanceof Error ? error : new Error(String(error)) + this.#setState({ lastError }) + + if (attempt < this.#getMaxAttempts()) { + this.options.onRetry?.(attempt, lastError, this) + + const wait = this.#calculateWait(attempt) + if (wait > 0) { + await new Promise((resolve, reject) => { + const timeout = setTimeout(resolve, wait) + signal.addEventListener('abort', () => { + clearTimeout(timeout) + reject(new Error('Retry cancelled')) }) - } + }) } - } finally { - this.options.onSettled?.(args, this) } + } finally { + this.options.onSettled?.(args, this) + this.#setState({ + isExecuting: false, + }) } + } - this.#setState({ - isExecuting: false, - currentAttempt: 0, - }) - - this.options.onLastError?.(lastError!, this) - this.options.onError?.(lastError!, args, this) - this.options.onSettled?.(args, this) - - if ( - (this.options.throwOnError === 'last' && isLastAttempt) || - this.options.throwOnError === true - ) { - throw lastError - } - - return undefined as any - } catch (error) { - // Don't rethrow if the error was from cancellation - if (error instanceof Error && error.message === 'Retry cancelled') { - return undefined - } - - this.#setState({ - isExecuting: false, - currentAttempt: 0, - }) - - const errorToHandle = - error instanceof Error ? error : new Error(String(error)) - this.options.onError?.(errorToHandle, args, this) - this.options.onSettled?.(args, this) + this.options.onLastError?.(lastError!, this) + this.options.onError?.(lastError!, args, this) + this.options.onSettled?.(args, this) - throw error - } finally { - this.#abortController = null + if ( + (this.options.throwOnError === 'last' && isLastAttempt) || + this.options.throwOnError === true + ) { + throw lastError } + + return undefined as any } /** diff --git a/packages/pacer/src/index.ts b/packages/pacer/src/index.ts index 194ea6f7..280f82f4 100644 --- a/packages/pacer/src/index.ts +++ b/packages/pacer/src/index.ts @@ -2,6 +2,7 @@ export * from './async-batcher' export * from './async-debouncer' export * from './async-queuer' export * from './async-rate-limiter' +export * from './async-retryer' export * from './async-throttler' export * from './batcher' export * from './debouncer' diff --git a/packages/pacer/tests/async-retryer.test.ts b/packages/pacer/tests/async-retryer.test.ts index fdc1e883..81409086 100644 --- a/packages/pacer/tests/async-retryer.test.ts +++ b/packages/pacer/tests/async-retryer.test.ts @@ -111,7 +111,13 @@ describe('AsyncRetryer', () => { .mockResolvedValue('success') const retryer = new AsyncRetryer(mockFn, { baseWait: 100, throwOnError: 'last' }) - const result = await retryer.execute('arg1') + const executePromise = retryer.execute('arg1') + + // Let the retry timer run + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + + const result = await executePromise expect(result).toBe('success') expect(mockFn).toHaveBeenCalledTimes(2) @@ -177,10 +183,21 @@ describe('AsyncRetryer', () => { throwOnError: false }) - const result = await retryer.execute() - - expect(result).toBeUndefined() + const executePromise = retryer.execute() + + // First retry: wait 100ms (100 * 2^0) + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(100) + + // Second retry: wait 200ms (100 * 2^1) + await vi.runOnlyPendingTimersAsync() + vi.advanceTimersByTime(200) + + // Third attempt will not retry, just finish + await executePromise + expect(mockFn).toHaveBeenCalledTimes(3) + expect(retryer.store.state.currentAttempt).toBe(3) }) it('should use linear backoff', async () => { @@ -346,8 +363,19 @@ describe('AsyncRetryer', () => { .mockResolvedValue('success') const retryer = new AsyncRetryer(mockFn, { baseWait: 100, throwOnError: false }) - const result = await retryer.execute() + // Start execution but do not await yet + const executePromise = retryer.execute() + + // After first rejection, status should be 'retrying' + // Fast-forward timers to trigger retry wait + await vi.runOnlyPendingTimersAsync() + expect(retryer.store.state.status).toBe('retrying') + + // Fast-forward the retry wait time + vi.advanceTimersByTime(100) + await executePromise + // After completion, status should be 'idle' expect(retryer.store.state.status).toBe('idle') }) diff --git a/packages/react-pacer/package.json b/packages/react-pacer/package.json index 57ef5374..baa62f7f 100644 --- a/packages/react-pacer/package.json +++ b/packages/react-pacer/package.json @@ -77,6 +77,16 @@ "default": "./dist/cjs/async-rate-limiter/index.cjs" } }, + "./async-retryer": { + "import": { + "types": "./dist/esm/async-retryer/index.d.ts", + "default": "./dist/esm/async-retryer/index.js" + }, + "require": { + "types": "./dist/cjs/async-retryer/index.d.cts", + "default": "./dist/cjs/async-retryer/index.cjs" + } + }, "./async-throttler": { "import": { "types": "./dist/esm/async-throttler/index.d.ts", diff --git a/packages/react-pacer/src/async-retryer/index.ts b/packages/react-pacer/src/async-retryer/index.ts new file mode 100644 index 00000000..c3c6a39d --- /dev/null +++ b/packages/react-pacer/src/async-retryer/index.ts @@ -0,0 +1 @@ +export * from './useAsyncRetryer' \ No newline at end of file diff --git a/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts new file mode 100644 index 00000000..7981b11d --- /dev/null +++ b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts @@ -0,0 +1,180 @@ +import { useEffect, useMemo, useState } from 'react' +import { AsyncRetryer } from '@tanstack/pacer/async-retryer' +import { useStore } from '@tanstack/react-store' +import type { Store } from '@tanstack/react-store' +import type { AnyAsyncFunction } from '@tanstack/pacer/types' +import type { + AsyncRetryerOptions, + AsyncRetryerState, +} from '@tanstack/pacer/async-retryer' + +export interface ReactAsyncRetryer< + TFn extends AnyAsyncFunction, + TSelected = {}, +> extends Omit, 'store'> { + /** + * Reactive state that will be updated and re-rendered when the retryer state changes + * + * Use this instead of `retryer.store.state` + */ + readonly state: Readonly + /** + * @deprecated Use `retryer.state` instead of `retryer.store.state` if you want to read reactive state. + * The state on the store object is not reactive, as it has not been wrapped in a `useStore` hook internally. + * Although, you can make the state reactive by using the `useStore` in your own usage. + */ + readonly store: Store>> +} + +/** + * A low-level React hook that creates an `AsyncRetryer` instance to retry execution of an async function. + * + * This hook is designed to be flexible and state-management agnostic - it simply returns a retryer instance that + * you can integrate with any state management solution (useState, Redux, Zustand, Jotai, etc). + * + * Async retrying automatically re-executes a failed async function up to a specified number of attempts with + * configurable backoff strategies. This is useful for handling transient errors like network failures, temporary + * server issues, or rate limiting where you want to automatically retry the operation. + * + * Error Handling: + * - If an `onError` handler is provided, it will be called for every error during execution + * - If an `onLastError` handler is provided, it will be called only for the final error after all retries fail + * - If `throwOnError` is 'last' (default), only the final error after all retries will be thrown + * - If `throwOnError` is true, every error will be thrown immediately (disables retrying) + * - If `throwOnError` is false, errors are never thrown and undefined is returned instead + * + * ## State Management and Selector + * + * The hook uses TanStack Store for reactive state management. The `selector` parameter allows you + * to specify which state changes will trigger a re-render, optimizing performance by preventing + * unnecessary re-renders when irrelevant state changes occur. + * + * **By default, there will be no reactive state subscriptions** and you must opt-in to state + * tracking by providing a selector function. This prevents unnecessary re-renders and gives you + * full control over when your component updates. Only when you provide a selector will the + * component re-render when the selected state values change. + * + * Available state properties: + * - `currentAttempt`: The current retry attempt number (0 when not executing) + * - `executionCount`: Total number of completed executions (successful or failed) + * - `isExecuting`: Whether the retryer is currently executing the function + * - `lastError`: The most recent error encountered during execution + * - `lastExecutionTime`: Timestamp of the last execution completion in milliseconds + * - `lastResult`: The result from the most recent successful execution + * - `status`: Current execution status ('disabled' | 'idle' | 'executing' | 'retrying') + * - `totalExecutionTime`: Total time spent executing (including retries) in milliseconds + * + * @example + * ```tsx + * // Default behavior - no reactive state subscriptions + * const apiRetryer = useAsyncRetryer( + * async (userId: string) => { + * const response = await fetch(`/api/users/${userId}`); + * if (!response.ok) throw new Error('Failed to fetch user'); + * return response.json(); + * }, + * { maxAttempts: 3, backoff: 'exponential' } + * ); + * + * // Opt-in to re-render when execution state changes (optimized for loading indicators) + * const apiRetryer = useAsyncRetryer( + * async (userId: string) => { + * const response = await fetch(`/api/users/${userId}`); + * if (!response.ok) throw new Error('Failed to fetch user'); + * return response.json(); + * }, + * { maxAttempts: 3, backoff: 'exponential' }, + * (state) => ({ + * isExecuting: state.isExecuting, + * currentAttempt: state.currentAttempt + * }) + * ); + * + * // Opt-in to re-render when results are available (optimized for data display) + * const apiRetryer = useAsyncRetryer( + * async (userId: string) => { + * const response = await fetch(`/api/users/${userId}`); + * if (!response.ok) throw new Error('Failed to fetch user'); + * return response.json(); + * }, + * { maxAttempts: 3, backoff: 'exponential' }, + * (state) => ({ + * lastResult: state.lastResult, + * executionCount: state.executionCount + * }) + * ); + * + * // Opt-in to re-render when error state changes (optimized for error handling) + * const apiRetryer = useAsyncRetryer( + * async (userId: string) => { + * const response = await fetch(`/api/users/${userId}`); + * if (!response.ok) throw new Error('Failed to fetch user'); + * return response.json(); + * }, + * { + * maxAttempts: 3, + * backoff: 'exponential', + * onError: (error) => console.error('API call failed:', error), + * onLastError: (error) => console.error('All retries failed:', error) + * }, + * (state) => ({ + * lastError: state.lastError, + * status: state.status + * }) + * ); + * + * // With state management + * const [userData, setUserData] = useState(null); + * const { execute, state } = useAsyncRetryer( + * async (userId) => { + * const response = await fetch(`/api/users/${userId}`); + * if (!response.ok) throw new Error('Failed to fetch user'); + * const data = await response.json(); + * setUserData(data); + * return data; + * }, + * { + * maxAttempts: 5, + * backoff: 'exponential', + * baseWait: 1000, + * onRetry: (attempt, error) => { + * console.log(`Retry attempt ${attempt} after error:`, error); + * }, + * onError: (error) => { + * console.error('Request failed:', error); + * } + * } + * ); + * + * // Access the selected state (will be empty object {} unless selector provided) + * const { isExecuting, currentAttempt } = state; + * ``` + */ +export function useAsyncRetryer( + fn: TFn, + options: AsyncRetryerOptions, + selector: (state: AsyncRetryerState) => TSelected = () => + ({}) as TSelected, +): ReactAsyncRetryer { + const [asyncRetryer] = useState(() => new AsyncRetryer(fn, options)) + + const state = useStore(asyncRetryer.store, selector) + + asyncRetryer.fn = fn + asyncRetryer.setOptions(options) + + useEffect(() => { + return () => { + asyncRetryer.cancel() + } + }, [asyncRetryer]) + + return useMemo( + () => + ({ + ...asyncRetryer, + state, + }) as ReactAsyncRetryer, // omit `store` in favor of `state` + [asyncRetryer, state], + ) +} \ No newline at end of file diff --git a/packages/react-pacer/src/index.ts b/packages/react-pacer/src/index.ts index 49344428..ac8d7af4 100644 --- a/packages/react-pacer/src/index.ts +++ b/packages/react-pacer/src/index.ts @@ -21,6 +21,9 @@ export * from './async-queuer/useAsyncQueuedState' export * from './async-rate-limiter/useAsyncRateLimiter' export * from './async-rate-limiter/useAsyncRateLimitedCallback' +// async-retryer +export * from './async-retryer/useAsyncRetryer' + // async-throttler export * from './async-throttler/useAsyncThrottler' export * from './async-throttler/useAsyncThrottledCallback' diff --git a/packages/react-pacer/vite.config.ts b/packages/react-pacer/vite.config.ts index 2657f80b..663acd9a 100644 --- a/packages/react-pacer/vite.config.ts +++ b/packages/react-pacer/vite.config.ts @@ -23,6 +23,7 @@ export default mergeConfig( './src/async-debouncer/index.ts', './src/async-queuer/index.ts', './src/async-rate-limiter/index.ts', + './src/async-retryer/index.ts', './src/async-throttler/index.ts', './src/batcher/index.ts', './src/debouncer/index.ts', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99843150..3ad50443 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -602,6 +602,31 @@ importers: specifier: ^7.0.6 version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + examples/react/useAsyncRetryer: + dependencies: + '@tanstack/react-pacer': + specifier: ^0.14.0 + version: link:../../../packages/react-pacer + react: + specifier: ^19.1.1 + version: 19.1.1 + react-dom: + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) + devDependencies: + '@types/react': + specifier: ^19.1.9 + version: 19.1.9 + '@types/react-dom': + specifier: ^19.1.7 + version: 19.1.7(@types/react@19.1.9) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite: + specifier: ^7.0.6 + version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + examples/react/useAsyncThrottler: dependencies: '@tanstack/react-pacer': From 338db04c57ad796d5648e0dd86c1867ba9bdda87 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Sun, 10 Aug 2025 09:38:48 -0500 Subject: [PATCH 03/44] aborts through async-retryer only --- examples/react/useAsyncRetryer/src/index.tsx | 60 +++++-- packages/pacer/src/async-debouncer.ts | 8 +- packages/pacer/src/async-retryer.ts | 46 ++++- packages/pacer/src/async-throttler.ts | 8 +- packages/pacer/tests/async-retryer.test.ts | 162 ++++++++++-------- .../react-pacer/src/async-retryer/index.ts | 2 +- .../src/async-retryer/useAsyncRetryer.ts | 8 +- 7 files changed, 182 insertions(+), 112 deletions(-) diff --git a/examples/react/useAsyncRetryer/src/index.tsx b/examples/react/useAsyncRetryer/src/index.tsx index 44d839c2..b295750b 100644 --- a/examples/react/useAsyncRetryer/src/index.tsx +++ b/examples/react/useAsyncRetryer/src/index.tsx @@ -11,16 +11,16 @@ interface UserData { // Simulate API call with fake data that fails randomly const fakeApi = async (userId: string): Promise => { await new Promise((resolve) => setTimeout(resolve, 800)) // Simulate network delay - + // Randomly fail 60% of the time to demonstrate retry functionality if (Math.random() < 0.6) { throw new Error(`Network error fetching user ${userId}`) } - + return { id: parseInt(userId), name: `User ${userId}`, - email: `user${userId}@example.com` + email: `user${userId}@example.com`, } } @@ -90,33 +90,65 @@ function App() { {asyncRetryer.state.isExecuting ? 'Fetching...' : 'Fetch User'} - +
- +
-

Status: {asyncRetryer.state.status}

+

+ Status: {asyncRetryer.state.status} +

{asyncRetryer.state.currentAttempt > 0 && ( -

Current Attempt: {asyncRetryer.state.currentAttempt}

+

+ Current Attempt:{' '} + {asyncRetryer.state.currentAttempt} +

)} -

Total Executions: {asyncRetryer.state.executionCount}

+

+ Total Executions: {asyncRetryer.state.executionCount} +

{asyncRetryer.state.lastError && ( -

Last Error: {asyncRetryer.state.lastError.message}

+

+ Last Error: {asyncRetryer.state.lastError.message} +

)}
{userData && ( -
+

User Data:

-

ID: {userData.id}

-

Name: {userData.name}

-

Email: {userData.email}

+

+ ID: {userData.id} +

+

+ Name: {userData.name} +

+

+ Email: {userData.email} +

)} -
+      
         {JSON.stringify(asyncRetryer.store.state, null, 2)}
       
diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 503708b2..3311d240 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -189,7 +189,6 @@ export class AsyncDebouncer { >(getDefaultAsyncDebouncerState()) options: AsyncDebouncerOptions asyncRetryer: AsyncRetryer - #abortController: AbortController | null = null #timeoutId: NodeJS.Timeout | null = null #resolvePreviousPromise: | ((value?: ReturnType | undefined) => void) @@ -317,7 +316,6 @@ export class AsyncDebouncer { ...args: Parameters ): Promise | undefined> => { if (!this.#getEnabled()) return undefined - this.#abortController = new AbortController() try { this.#setState({ isExecuting: true }) const result = await this.asyncRetryer.execute(...args) // EXECUTE! @@ -341,7 +339,6 @@ export class AsyncDebouncer { lastArgs: undefined, settleCount: this.store.state.settleCount + 1, }) - this.#abortController = null this.options.onSettled?.(args, this) } return this.store.state.lastResult @@ -389,10 +386,7 @@ export class AsyncDebouncer { } #abortExecution = (): void => { - if (this.#abortController) { - this.#abortController.abort() - this.#abortController = null - } + this.asyncRetryer.cancel() } /** diff --git a/packages/pacer/src/async-retryer.ts b/packages/pacer/src/async-retryer.ts index 9c57763a..36f3274a 100644 --- a/packages/pacer/src/async-retryer.ts +++ b/packages/pacer/src/async-retryer.ts @@ -298,6 +298,12 @@ export class AsyncRetryer { this.#abortController = new AbortController() const signal = this.#abortController.signal + const createAbortError = (): Error => { + const error = new Error('Aborted') + ;(error as any).name = 'AbortError' + return error + } + this.#setState({ isExecuting: true, currentAttempt: 0, @@ -310,8 +316,15 @@ export class AsyncRetryer { this.#setState({ currentAttempt: attempt }) try { + if (signal.aborted) { + return undefined as any + } result = (await this.fn(...args)) as ReturnType + if (signal.aborted) { + return undefined as any + } + const totalTime = Date.now() - startTime this.#setState({ executionCount: this.store.state.executionCount + 1, @@ -326,6 +339,10 @@ export class AsyncRetryer { return result } catch (error) { + // Treat abort as a non-error cancellation outcome + if ((error as any)?.name === 'AbortError') { + return undefined as any + } lastError = error instanceof Error ? error : new Error(String(error)) this.#setState({ lastError }) @@ -334,23 +351,36 @@ export class AsyncRetryer { const wait = this.#calculateWait(attempt) if (wait > 0) { - await new Promise((resolve, reject) => { - const timeout = setTimeout(resolve, wait) - signal.addEventListener('abort', () => { + // Eagerly reflect retrying status during the wait window + this.#setState({ isExecuting: true, currentAttempt: attempt + 1 }) + await new Promise((resolve) => { + const timeout = setTimeout(() => { + signal.removeEventListener('abort', onAbort) + resolve() + }, wait) + const onAbort = () => { clearTimeout(timeout) - reject(new Error('Retry cancelled')) - }) + signal.removeEventListener('abort', onAbort) + resolve() + } + signal.addEventListener('abort', onAbort) }) + if (signal.aborted) { + // When cancelled during retry wait, surface the last error exactly once + if (lastError) { + this.options.onError?.(lastError, args, this) + } + return undefined as any + } } } } finally { this.options.onSettled?.(args, this) - this.#setState({ - isExecuting: false, - }) } } + // Exhausted retries - finalize state + this.#setState({ isExecuting: false }) this.options.onLastError?.(lastError!, this) this.options.onError?.(lastError!, args, this) this.options.onSettled?.(args, this) diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index 4b59260a..5e89eaeb 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -200,7 +200,6 @@ export class AsyncThrottler { >(getDefaultAsyncThrottlerState()) options: AsyncThrottlerOptions asyncRetryer: AsyncRetryer - #abortController: AbortController | null = null #timeoutId: NodeJS.Timeout | null = null #resolvePreviousPromise: | ((value?: ReturnType | undefined) => void) @@ -341,7 +340,6 @@ export class AsyncThrottler { ...args: Parameters ): Promise | undefined> => { if (!this.#getEnabled() || this.store.state.isExecuting) return undefined - this.#abortController = new AbortController() try { this.#setState({ isExecuting: true }) const result = await this.asyncRetryer.execute(...args) // EXECUTE! @@ -368,7 +366,6 @@ export class AsyncThrottler { lastExecutionTime, nextExecutionTime, }) - this.#abortController = null this.options.onSettled?.(args, this) setTimeout(() => { if (!this.store.state.isPending) { @@ -424,10 +421,7 @@ export class AsyncThrottler { } #abortExecution = (): void => { - if (this.#abortController) { - this.#abortController.abort() - this.#abortController = null - } + this.asyncRetryer.cancel() } /** diff --git a/packages/pacer/tests/async-retryer.test.ts b/packages/pacer/tests/async-retryer.test.ts index 81409086..8fbb81c3 100644 --- a/packages/pacer/tests/async-retryer.test.ts +++ b/packages/pacer/tests/async-retryer.test.ts @@ -98,8 +98,12 @@ describe('AsyncRetryer', () => { const afterTime = Date.now() expect(retryer.store.state.totalExecutionTime).toBeGreaterThan(0) - expect(retryer.store.state.lastExecutionTime).toBeGreaterThanOrEqual(beforeTime) - expect(retryer.store.state.lastExecutionTime).toBeLessThanOrEqual(afterTime) + expect(retryer.store.state.lastExecutionTime).toBeGreaterThanOrEqual( + beforeTime, + ) + expect(retryer.store.state.lastExecutionTime).toBeLessThanOrEqual( + afterTime, + ) }) }) @@ -109,7 +113,10 @@ describe('AsyncRetryer', () => { .fn() .mockRejectedValueOnce(new Error('First failure')) .mockResolvedValue('success') - const retryer = new AsyncRetryer(mockFn, { baseWait: 100, throwOnError: 'last' }) + const retryer = new AsyncRetryer(mockFn, { + baseWait: 100, + throwOnError: 'last', + }) const executePromise = retryer.execute('arg1') @@ -136,15 +143,15 @@ describe('AsyncRetryer', () => { const retryer = new AsyncRetryer(mockFn, { onRetry, baseWait: 100 }) const executePromise = retryer.execute() - + // Let first retry happen await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) - + // Let second retry happen await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(200) // Exponential backoff: 100 * 2^1 - + await executePromise expect(onRetry).toHaveBeenCalledTimes(2) @@ -155,18 +162,18 @@ describe('AsyncRetryer', () => { it('should fail after exhausting all retries', async () => { const error = new Error('Persistent failure') const mockFn = vi.fn().mockRejectedValue(error) - const retryer = new AsyncRetryer(mockFn, { - maxAttempts: 2, + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 2, baseWait: 100, - throwOnError: 'last' + throwOnError: 'last', }) const executePromise = retryer.execute() - + // Complete first retry await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) - + await expect(executePromise).rejects.toThrow('Persistent failure') expect(mockFn).toHaveBeenCalledTimes(2) expect(retryer.store.state.lastError).toBe(error) @@ -177,10 +184,10 @@ describe('AsyncRetryer', () => { describe('Backoff Strategies', () => { it('should use exponential backoff by default', async () => { const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) - const retryer = new AsyncRetryer(mockFn, { - maxAttempts: 3, + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 3, baseWait: 100, - throwOnError: false + throwOnError: false, }) const executePromise = retryer.execute() @@ -202,45 +209,45 @@ describe('AsyncRetryer', () => { it('should use linear backoff', async () => { const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) - const retryer = new AsyncRetryer(mockFn, { - maxAttempts: 3, + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 3, baseWait: 100, backoff: 'linear', - throwOnError: false + throwOnError: false, }) const executePromise = retryer.execute() - + // First retry should wait 100ms (100 * 1) await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) - + // Second retry should wait 200ms (100 * 2) await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(200) - + await executePromise expect(mockFn).toHaveBeenCalledTimes(3) }) it('should use fixed backoff', async () => { const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) - const retryer = new AsyncRetryer(mockFn, { - maxAttempts: 3, + const retryer = new AsyncRetryer(mockFn, { + maxAttempts: 3, baseWait: 150, backoff: 'fixed', - throwOnError: false + throwOnError: false, }) const executePromise = retryer.execute() - + // Both retries should wait 150ms await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(150) - + await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(150) - + await executePromise expect(mockFn).toHaveBeenCalledTimes(3) }) @@ -258,9 +265,9 @@ describe('AsyncRetryer', () => { it('should not throw when throwOnError is false', async () => { const error = new Error('Test error') const mockFn = vi.fn().mockRejectedValue(error) - const retryer = new AsyncRetryer(mockFn, { + const retryer = new AsyncRetryer(mockFn, { maxAttempts: 1, - throwOnError: false + throwOnError: false, }) const result = await retryer.execute() @@ -270,20 +277,20 @@ describe('AsyncRetryer', () => { it('should throw after retries when throwOnError is true', async () => { const error = new Error('Test error') const mockFn = vi.fn().mockRejectedValue(error) - const retryer = new AsyncRetryer(mockFn, { + const retryer = new AsyncRetryer(mockFn, { maxAttempts: 3, baseWait: 100, - throwOnError: true + throwOnError: true, }) const executePromise = retryer.execute() - + // Advance through all retries await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) // First retry await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(200) // Second retry - + await expect(executePromise).rejects.toThrow('Test error') expect(mockFn).toHaveBeenCalledTimes(3) // Should still retry but throw at end }) @@ -292,15 +299,15 @@ describe('AsyncRetryer', () => { const error = new Error('Test error') const mockFn = vi.fn().mockRejectedValue(error) const onError = vi.fn() - const retryer = new AsyncRetryer(mockFn, { + const retryer = new AsyncRetryer(mockFn, { maxAttempts: 2, baseWait: 100, onError, - throwOnError: false + throwOnError: false, }) const executePromise = retryer.execute('arg1') - + await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) await executePromise @@ -313,15 +320,15 @@ describe('AsyncRetryer', () => { const error = new Error('Test error') const mockFn = vi.fn().mockRejectedValue(error) const onLastError = vi.fn() - const retryer = new AsyncRetryer(mockFn, { + const retryer = new AsyncRetryer(mockFn, { maxAttempts: 2, baseWait: 100, onLastError, - throwOnError: false + throwOnError: false, }) const executePromise = retryer.execute() - + await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) await executePromise @@ -343,8 +350,8 @@ describe('AsyncRetryer', () => { expect(retryer.store.state.isExecuting).toBe(false) const executePromise = retryer.execute() - - // Should be executing now + + // Should be executing now expect(retryer.store.state.status).toBe('executing') expect(retryer.store.state.isExecuting).toBe(true) expect(retryer.store.state.currentAttempt).toBe(1) @@ -361,14 +368,17 @@ describe('AsyncRetryer', () => { .fn() .mockRejectedValueOnce(new Error('Failure')) .mockResolvedValue('success') - const retryer = new AsyncRetryer(mockFn, { baseWait: 100, throwOnError: false }) + const retryer = new AsyncRetryer(mockFn, { + baseWait: 100, + throwOnError: false, + }) // Start execution but do not await yet const executePromise = retryer.execute() // After first rejection, status should be 'retrying' - // Fast-forward timers to trigger retry wait - await vi.runOnlyPendingTimersAsync() + // Allow microtasks to schedule the retry wait without advancing timers + await Promise.resolve() expect(retryer.store.state.status).toBe('retrying') // Fast-forward the retry wait time @@ -401,7 +411,7 @@ describe('AsyncRetryer', () => { const retryer = new AsyncRetryer(mockFn, { onSettled, baseWait: 100 }) const executePromise = retryer.execute('arg1') - + await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) await executePromise @@ -416,14 +426,14 @@ describe('AsyncRetryer', () => { it('should support function-based maxAttempts', async () => { const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) const maxAttemptsFn = vi.fn().mockReturnValue(2) - const retryer = new AsyncRetryer(mockFn, { + const retryer = new AsyncRetryer(mockFn, { maxAttempts: maxAttemptsFn, baseWait: 100, - throwOnError: false + throwOnError: false, }) const executePromise = retryer.execute() - + await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) await executePromise @@ -435,14 +445,14 @@ describe('AsyncRetryer', () => { it('should support function-based baseWait', async () => { const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) const baseWaitFn = vi.fn().mockReturnValue(200) - const retryer = new AsyncRetryer(mockFn, { + const retryer = new AsyncRetryer(mockFn, { maxAttempts: 2, baseWait: baseWaitFn, - throwOnError: false + throwOnError: false, }) const executePromise = retryer.execute() - + await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(200) // Should use function return value await executePromise @@ -464,38 +474,47 @@ describe('AsyncRetryer', () => { }) describe('Cancellation', () => { - it('should allow new executions after cancel', async () => { + it('should allow new executions after cancel and resolve undefined without error', async () => { const mockFn = vi.fn().mockResolvedValue('success') - const retryer = new AsyncRetryer(mockFn) + const onError = vi.fn() + const retryer = new AsyncRetryer(mockFn, { onError, throwOnError: false }) // Start and immediately cancel const executePromise1 = retryer.execute() retryer.cancel() - + const result1 = await executePromise1 - + expect(result1).toBeUndefined() + expect(onError).not.toHaveBeenCalled() + // Should be able to execute again after cancel const result2 = await retryer.execute() - + expect(result2).toBe('success') expect(retryer.store.state.isExecuting).toBe(false) }) - it('should cancel retry delays', async () => { + it('should cancel retry delays without error', async () => { const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) - const retryer = new AsyncRetryer(mockFn, { baseWait: 1000, throwOnError: false }) + const onError = vi.fn() + const retryer = new AsyncRetryer(mockFn, { + baseWait: 1000, + throwOnError: false, + onError, + }) const executePromise = retryer.execute() - - // Wait for first attempt to fail - await vi.runOnlyPendingTimersAsync() - + + // Wait for first attempt to fail and retry wait to be scheduled + await Promise.resolve() + // Cancel during retry delay retryer.cancel() const result = await executePromise expect(result).toBeUndefined() expect(mockFn).toHaveBeenCalledTimes(1) // Only first attempt + expect(onError).toHaveBeenCalledTimes(1) // only final onError after loop completion before cancel }) }) @@ -524,13 +543,16 @@ describe('AsyncRetryer', () => { it('should cancel ongoing execution when resetting', async () => { const mockFn = vi.fn().mockRejectedValue(new Error('Failure')) - const retryer = new AsyncRetryer(mockFn, { baseWait: 1000, throwOnError: false }) + const retryer = new AsyncRetryer(mockFn, { + baseWait: 1000, + throwOnError: false, + }) const executePromise = retryer.execute() - - // Wait for first attempt to fail and retry delay to start - await vi.runOnlyPendingTimersAsync() - + + // Wait for first attempt to fail and retry wait to be scheduled + await Promise.resolve() + retryer.reset() const result = await executePromise @@ -578,7 +600,7 @@ describe('asyncRetry utility function', () => { const retryFn = asyncRetry(mockFn, { baseWait: 100, throwOnError: 'last' }) const executePromise = retryFn() - + await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(100) const result = await executePromise @@ -592,15 +614,15 @@ describe('asyncRetry utility function', () => { const retryFn = asyncRetry(mockFn, { throwOnError: false }) const executePromise = retryFn() - + // Should retry 3 times by default vi.advanceTimersByTime(1000) // First retry: 1000ms await vi.runOnlyPendingTimersAsync() vi.advanceTimersByTime(2000) // Second retry: 2000ms await vi.runOnlyPendingTimersAsync() - + const result = await executePromise expect(result).toBeUndefined() expect(mockFn).toHaveBeenCalledTimes(3) // Default maxAttempts }) -}) \ No newline at end of file +}) diff --git a/packages/react-pacer/src/async-retryer/index.ts b/packages/react-pacer/src/async-retryer/index.ts index c3c6a39d..6ec6da8e 100644 --- a/packages/react-pacer/src/async-retryer/index.ts +++ b/packages/react-pacer/src/async-retryer/index.ts @@ -1 +1 @@ -export * from './useAsyncRetryer' \ No newline at end of file +export * from './useAsyncRetryer' diff --git a/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts index 7981b11d..9b7b5380 100644 --- a/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts +++ b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts @@ -8,10 +8,8 @@ import type { AsyncRetryerState, } from '@tanstack/pacer/async-retryer' -export interface ReactAsyncRetryer< - TFn extends AnyAsyncFunction, - TSelected = {}, -> extends Omit, 'store'> { +export interface ReactAsyncRetryer + extends Omit, 'store'> { /** * Reactive state that will be updated and re-rendered when the retryer state changes * @@ -177,4 +175,4 @@ export function useAsyncRetryer( }) as ReactAsyncRetryer, // omit `store` in favor of `state` [asyncRetryer, state], ) -} \ No newline at end of file +} From 0f16e6c3122f0ee12eaa4515e47bcbae4b81d7ec Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Sun, 10 Aug 2025 12:29:35 -0500 Subject: [PATCH 04/44] add an optional pacer provider --- packages/pacer/src/async-retryer.ts | 6 -- packages/react-pacer/package.json | 10 +++ .../src/async-batcher/useAsyncBatcher.ts | 14 ++++- .../src/async-debouncer/useAsyncDebouncer.ts | 14 ++++- .../src/async-queuer/useAsyncQueuer.ts | 14 ++++- .../async-rate-limiter/useAsyncRateLimiter.ts | 14 +++-- .../src/async-retryer/useAsyncRetryer.ts | 14 ++++- .../src/async-throttler/useAsyncThrottler.ts | 14 ++++- .../react-pacer/src/batcher/useBatcher.ts | 12 +++- .../react-pacer/src/debouncer/useDebouncer.ts | 12 +++- packages/react-pacer/src/index.ts | 3 + .../src/provider/PacerProvider.tsx | 62 +++++++++++++++++++ packages/react-pacer/src/provider/index.ts | 1 + packages/react-pacer/src/queuer/useQueuer.ts | 12 +++- .../src/rate-limiter/useRateLimiter.ts | 12 +++- .../react-pacer/src/throttler/useThrottler.ts | 12 +++- packages/react-pacer/vite.config.ts | 1 + 17 files changed, 187 insertions(+), 40 deletions(-) create mode 100644 packages/react-pacer/src/provider/PacerProvider.tsx create mode 100644 packages/react-pacer/src/provider/index.ts diff --git a/packages/pacer/src/async-retryer.ts b/packages/pacer/src/async-retryer.ts index 36f3274a..f1a905f3 100644 --- a/packages/pacer/src/async-retryer.ts +++ b/packages/pacer/src/async-retryer.ts @@ -298,12 +298,6 @@ export class AsyncRetryer { this.#abortController = new AbortController() const signal = this.#abortController.signal - const createAbortError = (): Error => { - const error = new Error('Aborted') - ;(error as any).name = 'AbortError' - return error - } - this.#setState({ isExecuting: true, currentAttempt: 0, diff --git a/packages/react-pacer/package.json b/packages/react-pacer/package.json index 177b1aa6..b66c5a91 100644 --- a/packages/react-pacer/package.json +++ b/packages/react-pacer/package.json @@ -137,6 +137,16 @@ "default": "./dist/cjs/rate-limiter/index.cjs" } }, + "./provider": { + "import": { + "types": "./dist/esm/provider/index.d.ts", + "default": "./dist/esm/provider/index.js" + }, + "require": { + "types": "./dist/cjs/provider/index.d.cts", + "default": "./dist/cjs/provider/index.cjs" + } + }, "./throttler": { "import": { "types": "./dist/esm/throttler/index.d.ts", diff --git a/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts b/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts index ec9aa342..c008aead 100644 --- a/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts +++ b/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts @@ -6,6 +6,7 @@ import type { AsyncBatcherOptions, AsyncBatcherState, } from '@tanstack/pacer/async-batcher' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncBatcher extends Omit, 'store'> { @@ -170,12 +171,19 @@ export function useAsyncBatcher( selector: (state: AsyncBatcherState) => TSelected = () => ({}) as TSelected, ): ReactAsyncBatcher { - const [asyncBatcher] = useState(() => new AsyncBatcher(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().asyncBatcher, + ...options, + } as AsyncBatcherOptions - const state = useStore(asyncBatcher.store, selector) + const [asyncBatcher] = useState( + () => new AsyncBatcher(fn, mergedOptions), + ) asyncBatcher.fn = fn - asyncBatcher.setOptions(options) + asyncBatcher.setOptions(mergedOptions) + + const state = useStore(asyncBatcher.store, selector) return useMemo( () => diff --git a/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts b/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts index 86637757..162ca21d 100644 --- a/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts +++ b/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts @@ -7,6 +7,7 @@ import type { AsyncDebouncerOptions, AsyncDebouncerState, } from '@tanstack/pacer/async-debouncer' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncDebouncer< TFn extends AnyAsyncFunction, @@ -152,12 +153,19 @@ export function useAsyncDebouncer( selector: (state: AsyncDebouncerState) => TSelected = () => ({}) as TSelected, ): ReactAsyncDebouncer { - const [asyncDebouncer] = useState(() => new AsyncDebouncer(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().asyncDebouncer, + ...options, + } as AsyncDebouncerOptions - const state = useStore(asyncDebouncer.store, selector) + const [asyncDebouncer] = useState( + () => new AsyncDebouncer(fn, mergedOptions), + ) asyncDebouncer.fn = fn - asyncDebouncer.setOptions(options) + asyncDebouncer.setOptions(mergedOptions) + + const state = useStore(asyncDebouncer.store, selector) useEffect(() => { return () => { diff --git a/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts b/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts index 2e925fd7..4a3c2dc9 100644 --- a/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts +++ b/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts @@ -6,6 +6,7 @@ import type { AsyncQueuerOptions, AsyncQueuerState, } from '@tanstack/pacer/async-queuer' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncQueuer extends Omit, 'store'> { @@ -170,12 +171,19 @@ export function useAsyncQueuer( selector: (state: AsyncQueuerState) => TSelected = () => ({}) as TSelected, ): ReactAsyncQueuer { - const [asyncQueuer] = useState(() => new AsyncQueuer(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().asyncQueuer, + ...options, + } as AsyncQueuerOptions - const state = useStore(asyncQueuer.store, selector) + const [asyncQueuer] = useState( + () => new AsyncQueuer(fn, mergedOptions), + ) asyncQueuer.fn = fn - asyncQueuer.setOptions(options) + asyncQueuer.setOptions(mergedOptions) + + const state = useStore(asyncQueuer.store, selector) return useMemo( () => diff --git a/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts b/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts index 179a8277..ecb2a3ad 100644 --- a/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts +++ b/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts @@ -7,6 +7,7 @@ import type { AsyncRateLimiterOptions, AsyncRateLimiterState, } from '@tanstack/pacer/async-rate-limiter' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncRateLimiter< TFn extends AnyAsyncFunction, @@ -184,14 +185,19 @@ export function useAsyncRateLimiter< selector: (state: AsyncRateLimiterState) => TSelected = () => ({}) as TSelected, ): ReactAsyncRateLimiter { + const mergedOptions = { + ...useDefaultPacerOptions().asyncRateLimiter, + ...options, + } as AsyncRateLimiterOptions + const [asyncRateLimiter] = useState( - () => new AsyncRateLimiter(fn, options), + () => new AsyncRateLimiter(fn, mergedOptions), ) - const state = useStore(asyncRateLimiter.store, selector) - asyncRateLimiter.fn = fn - asyncRateLimiter.setOptions(options) + asyncRateLimiter.setOptions(mergedOptions) + + const state = useStore(asyncRateLimiter.store, selector) return useMemo( () => diff --git a/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts index 9b7b5380..77fd5743 100644 --- a/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts +++ b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts @@ -7,6 +7,7 @@ import type { AsyncRetryerOptions, AsyncRetryerState, } from '@tanstack/pacer/async-retryer' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncRetryer extends Omit, 'store'> { @@ -154,12 +155,19 @@ export function useAsyncRetryer( selector: (state: AsyncRetryerState) => TSelected = () => ({}) as TSelected, ): ReactAsyncRetryer { - const [asyncRetryer] = useState(() => new AsyncRetryer(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().asyncRetryer, + ...options, + } as AsyncRetryerOptions - const state = useStore(asyncRetryer.store, selector) + const [asyncRetryer] = useState( + () => new AsyncRetryer(fn, mergedOptions), + ) asyncRetryer.fn = fn - asyncRetryer.setOptions(options) + asyncRetryer.setOptions(mergedOptions) + + const state = useStore(asyncRetryer.store, selector) useEffect(() => { return () => { diff --git a/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts b/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts index 08f083b8..c4590cbb 100644 --- a/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts +++ b/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts @@ -7,6 +7,7 @@ import type { AsyncThrottlerOptions, AsyncThrottlerState, } from '@tanstack/pacer/async-throttler' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncThrottler< TFn extends AnyAsyncFunction, @@ -163,12 +164,19 @@ export function useAsyncThrottler( selector: (state: AsyncThrottlerState) => TSelected = () => ({}) as TSelected, ): ReactAsyncThrottler { - const [asyncThrottler] = useState(() => new AsyncThrottler(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().asyncThrottler, + ...options, + } as AsyncThrottlerOptions - const state = useStore(asyncThrottler.store, selector) + const [asyncThrottler] = useState( + () => new AsyncThrottler(fn, mergedOptions), + ) asyncThrottler.fn = fn - asyncThrottler.setOptions(options) + asyncThrottler.setOptions(mergedOptions) + + const state = useStore(asyncThrottler.store, selector) useEffect(() => { return () => asyncThrottler.cancel() diff --git a/packages/react-pacer/src/batcher/useBatcher.ts b/packages/react-pacer/src/batcher/useBatcher.ts index 2709d6d0..13df5bae 100644 --- a/packages/react-pacer/src/batcher/useBatcher.ts +++ b/packages/react-pacer/src/batcher/useBatcher.ts @@ -3,6 +3,7 @@ import { Batcher } from '@tanstack/pacer/batcher' import { useStore } from '@tanstack/react-store' import type { Store } from '@tanstack/react-store' import type { BatcherOptions, BatcherState } from '@tanstack/pacer/batcher' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactBatcher extends Omit, 'store'> { @@ -124,12 +125,17 @@ export function useBatcher( selector: (state: BatcherState) => TSelected = () => ({}) as TSelected, ): ReactBatcher { - const [batcher] = useState(() => new Batcher(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().batcher, + ...options, + } as BatcherOptions - const state = useStore(batcher.store, selector) + const [batcher] = useState(() => new Batcher(fn, mergedOptions)) batcher.fn = fn - batcher.setOptions(options) + batcher.setOptions(mergedOptions) + + const state = useStore(batcher.store, selector) return useMemo( () => diff --git a/packages/react-pacer/src/debouncer/useDebouncer.ts b/packages/react-pacer/src/debouncer/useDebouncer.ts index 24674b64..9c984fe3 100644 --- a/packages/react-pacer/src/debouncer/useDebouncer.ts +++ b/packages/react-pacer/src/debouncer/useDebouncer.ts @@ -7,6 +7,7 @@ import type { DebouncerState, } from '@tanstack/pacer/debouncer' import type { AnyFunction } from '@tanstack/pacer/types' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactDebouncer extends Omit, 'store'> { @@ -104,12 +105,15 @@ export function useDebouncer( options: DebouncerOptions, selector: (state: DebouncerState) => TSelected = () => ({}) as TSelected, ): ReactDebouncer { - const [debouncer] = useState(() => new Debouncer(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().debouncer, + ...options, + } as DebouncerOptions - const state = useStore(debouncer.store, selector) + const [debouncer] = useState(() => new Debouncer(fn, mergedOptions)) debouncer.fn = fn - debouncer.setOptions(options) + debouncer.setOptions(mergedOptions) useEffect(() => { return () => { @@ -117,6 +121,8 @@ export function useDebouncer( } }, [debouncer]) + const state = useStore(debouncer.store, selector) + return useMemo( () => ({ diff --git a/packages/react-pacer/src/index.ts b/packages/react-pacer/src/index.ts index ac8d7af4..5ba57315 100644 --- a/packages/react-pacer/src/index.ts +++ b/packages/react-pacer/src/index.ts @@ -1,6 +1,9 @@ // re-export everything from the core pacer package export * from '@tanstack/pacer' +// provider +export * from './provider/PacerProvider' + /** * Export every hook individually - DON'T export from barrel files */ diff --git a/packages/react-pacer/src/provider/PacerProvider.tsx b/packages/react-pacer/src/provider/PacerProvider.tsx new file mode 100644 index 00000000..c6f24d5c --- /dev/null +++ b/packages/react-pacer/src/provider/PacerProvider.tsx @@ -0,0 +1,62 @@ +import React, { createContext, useContext, ReactNode } from 'react' +import type { + AnyAsyncFunction, + AnyFunction, + AsyncBatcherOptions, + AsyncDebouncerOptions, + AsyncQueuerOptions, + AsyncRateLimiterOptions, + AsyncRetryerOptions, + AsyncThrottlerOptions, + BatcherOptions, + DebouncerOptions, + QueuerOptions, + RateLimiterOptions, + ThrottlerOptions, +} from '@tanstack/pacer' + +export interface PacerProviderOptions { + asyncBatcher?: Partial> + asyncDebouncer?: Partial> + asyncQueuer?: Partial> + asyncRateLimiter?: Partial> + asyncRetryer?: Partial> + asyncThrottler?: Partial> + batcher?: Partial> + debouncer?: Partial> + queuer?: Partial> + rateLimiter?: Partial> + throttler?: Partial> +} + +interface PacerContextValue { + options: PacerProviderOptions +} + +const PacerContext = createContext(null) + +export interface PacerProviderProps { + children: ReactNode + options?: PacerProviderOptions +} + +export function PacerProvider({ children, options = {} }: PacerProviderProps) { + const contextValue: PacerContextValue = { + options, + } + + return ( + + {children} + + ) +} + +export function usePacerContext() { + return useContext(PacerContext) +} + +export function useDefaultPacerOptions() { + const context = useContext(PacerContext) + return context?.options ?? {} +} diff --git a/packages/react-pacer/src/provider/index.ts b/packages/react-pacer/src/provider/index.ts new file mode 100644 index 00000000..5f4fe385 --- /dev/null +++ b/packages/react-pacer/src/provider/index.ts @@ -0,0 +1 @@ +export * from './PacerProvider' diff --git a/packages/react-pacer/src/queuer/useQueuer.ts b/packages/react-pacer/src/queuer/useQueuer.ts index dec8992b..11d1cc40 100644 --- a/packages/react-pacer/src/queuer/useQueuer.ts +++ b/packages/react-pacer/src/queuer/useQueuer.ts @@ -3,6 +3,7 @@ import { Queuer } from '@tanstack/pacer/queuer' import { useStore } from '@tanstack/react-store' import type { Store } from '@tanstack/react-store' import type { QueuerOptions, QueuerState } from '@tanstack/pacer/queuer' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactQueuer extends Omit, 'store'> { @@ -134,12 +135,17 @@ export function useQueuer( options: QueuerOptions = {}, selector: (state: QueuerState) => TSelected = () => ({}) as TSelected, ): ReactQueuer { - const [queuer] = useState(() => new Queuer(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().queuer, + ...options, + } as QueuerOptions - const state = useStore(queuer.store, selector) + const [queuer] = useState(() => new Queuer(fn, mergedOptions)) queuer.fn = fn - queuer.setOptions(options) + queuer.setOptions(mergedOptions) + + const state = useStore(queuer.store, selector) return useMemo( () => diff --git a/packages/react-pacer/src/rate-limiter/useRateLimiter.ts b/packages/react-pacer/src/rate-limiter/useRateLimiter.ts index 8bf4442f..9b0d0b5c 100644 --- a/packages/react-pacer/src/rate-limiter/useRateLimiter.ts +++ b/packages/react-pacer/src/rate-limiter/useRateLimiter.ts @@ -7,6 +7,7 @@ import type { RateLimiterState, } from '@tanstack/pacer/rate-limiter' import type { AnyFunction } from '@tanstack/pacer/types' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactRateLimiter extends Omit, 'store'> { @@ -143,12 +144,17 @@ export function useRateLimiter( options: RateLimiterOptions, selector: (state: RateLimiterState) => TSelected = () => ({}) as TSelected, ): ReactRateLimiter { - const [rateLimiter] = useState(() => new RateLimiter(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().rateLimiter, + ...options, + } as RateLimiterOptions - const state = useStore(rateLimiter.store, selector) + const [rateLimiter] = useState(() => new RateLimiter(fn, mergedOptions)) rateLimiter.fn = fn - rateLimiter.setOptions(options) + rateLimiter.setOptions(mergedOptions) + + const state = useStore(rateLimiter.store, selector) return useMemo( () => diff --git a/packages/react-pacer/src/throttler/useThrottler.ts b/packages/react-pacer/src/throttler/useThrottler.ts index 3bed9bef..ade211c0 100644 --- a/packages/react-pacer/src/throttler/useThrottler.ts +++ b/packages/react-pacer/src/throttler/useThrottler.ts @@ -7,6 +7,7 @@ import type { ThrottlerOptions, ThrottlerState, } from '@tanstack/pacer/throttler' +import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactThrottler extends Omit, 'store'> { @@ -109,12 +110,17 @@ export function useThrottler( options: ThrottlerOptions, selector: (state: ThrottlerState) => TSelected = () => ({}) as TSelected, ): ReactThrottler { - const [throttler] = useState(() => new Throttler(fn, options)) + const mergedOptions = { + ...useDefaultPacerOptions().throttler, + ...options, + } as ThrottlerOptions - const state = useStore(throttler.store, selector) + const [throttler] = useState(() => new Throttler(fn, mergedOptions)) throttler.fn = fn - throttler.setOptions(options) + throttler.setOptions(mergedOptions) + + const state = useStore(throttler.store, selector) useEffect(() => { return () => { diff --git a/packages/react-pacer/vite.config.ts b/packages/react-pacer/vite.config.ts index 663acd9a..4d8e77bf 100644 --- a/packages/react-pacer/vite.config.ts +++ b/packages/react-pacer/vite.config.ts @@ -28,6 +28,7 @@ export default mergeConfig( './src/batcher/index.ts', './src/debouncer/index.ts', './src/index.ts', + './src/provider/index.ts', './src/queuer/index.ts', './src/rate-limiter/index.ts', './src/throttler/index.ts', From 3b86df9154708a9afe52f254cd0f3d4af7482701 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Sun, 10 Aug 2025 20:11:19 -0500 Subject: [PATCH 05/44] add providers to main examples --- examples/react/useAsyncBatcher/src/index.tsx | 14 ++++++++- .../react/useAsyncDebouncer/src/index.tsx | 29 +++++++++++++++++-- examples/react/useAsyncQueuer/src/index.tsx | 14 ++++++++- .../react/useAsyncRateLimiter/src/index.tsx | 29 +++++++++++++++++-- .../react/useAsyncThrottler/src/index.tsx | 29 +++++++++++++++++-- examples/react/useBatcher/src/index.tsx | 18 +++++++++--- examples/react/useDebouncer/src/index.tsx | 25 +++++++++++----- examples/react/useQueuer/src/index.tsx | 20 +++++++++---- examples/react/useRateLimiter/src/index.tsx | 24 ++++++++++----- examples/react/useThrottler/src/index.tsx | 24 ++++++++++----- 10 files changed, 188 insertions(+), 38 deletions(-) diff --git a/examples/react/useAsyncBatcher/src/index.tsx b/examples/react/useAsyncBatcher/src/index.tsx index c7ea201b..af588817 100644 --- a/examples/react/useAsyncBatcher/src/index.tsx +++ b/examples/react/useAsyncBatcher/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useAsyncBatcher } from '@tanstack/react-pacer/async-batcher' +import { PacerProvider } from '@tanstack/react-pacer/provider' const fakeProcessingTime = 1000 @@ -215,4 +216,15 @@ function App() { } const root = ReactDOM.createRoot(document.getElementById('root')!) -root.render() +root.render( + // optionally, provide default options to an optional PacerProvider + + + , +) diff --git a/examples/react/useAsyncDebouncer/src/index.tsx b/examples/react/useAsyncDebouncer/src/index.tsx index cf7cea5a..5a342fa6 100644 --- a/examples/react/useAsyncDebouncer/src/index.tsx +++ b/examples/react/useAsyncDebouncer/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useAsyncDebouncer } from '@tanstack/react-pacer/async-debouncer' +import { PacerProvider } from '@tanstack/react-pacer/provider' interface SearchResult { id: number @@ -106,12 +107,36 @@ function App() { const root = ReactDOM.createRoot(document.getElementById('root')!) let mounted = true -root.render() +root.render( + // optionally, provide default options to an optional PacerProvider + + + , +) // demo unmounting and cancellation document.addEventListener('keydown', (e) => { if (e.shiftKey && e.key === 'Enter') { mounted = !mounted - root.render(mounted ? : null) + root.render( + mounted ? ( + // optionally, provide default options to an optional PacerProvider + + + + ) : null, + ) } }) diff --git a/examples/react/useAsyncQueuer/src/index.tsx b/examples/react/useAsyncQueuer/src/index.tsx index 28899e78..6ae40ca7 100644 --- a/examples/react/useAsyncQueuer/src/index.tsx +++ b/examples/react/useAsyncQueuer/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useAsyncQueuer } from '@tanstack/react-pacer/async-queuer' +import { PacerProvider } from '@tanstack/react-pacer/provider' const fakeWaitTime = 500 @@ -142,4 +143,15 @@ function App() { } const root = ReactDOM.createRoot(document.getElementById('root')!) -root.render() +root.render( + // optionally, provide default options to an optional PacerProvider + + + , +) diff --git a/examples/react/useAsyncRateLimiter/src/index.tsx b/examples/react/useAsyncRateLimiter/src/index.tsx index e88ef1e3..ec8f77c1 100644 --- a/examples/react/useAsyncRateLimiter/src/index.tsx +++ b/examples/react/useAsyncRateLimiter/src/index.tsx @@ -1,6 +1,7 @@ import { useEffect, useState } from 'react' import ReactDOM from 'react-dom/client' import { useAsyncRateLimiter } from '@tanstack/react-pacer/async-rate-limiter' +import { PacerProvider } from '@tanstack/react-pacer/provider' interface SearchResult { id: number @@ -165,12 +166,36 @@ function App() { const root = ReactDOM.createRoot(document.getElementById('root')!) let mounted = true -root.render() +root.render( + // optionally, provide default options to an optional PacerProvider + + + , +) // demo unmounting and cancellation document.addEventListener('keydown', (e) => { if (e.key === 'Enter') { mounted = !mounted - root.render(mounted ? : null) + root.render( + mounted ? ( + // optionally, provide default options to an optional PacerProvider + + + + ) : null, + ) } }) diff --git a/examples/react/useAsyncThrottler/src/index.tsx b/examples/react/useAsyncThrottler/src/index.tsx index 2ef4878a..75b78299 100644 --- a/examples/react/useAsyncThrottler/src/index.tsx +++ b/examples/react/useAsyncThrottler/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useAsyncThrottler } from '@tanstack/react-pacer/async-throttler' +import { PacerProvider } from '@tanstack/react-pacer/provider' interface SearchResult { id: number @@ -115,12 +116,36 @@ function App() { const root = ReactDOM.createRoot(document.getElementById('root')!) let mounted = true -root.render() +root.render( + // optionally, provide default options to an optional PacerProvider + + + , +) // demo unmounting and cancellation document.addEventListener('keydown', (e) => { if (e.shiftKey && e.key === 'Enter') { mounted = !mounted - root.render(mounted ? : null) + root.render( + mounted ? ( + // optionally, provide default options to an optional PacerProvider + + + + ) : null, + ) } }) diff --git a/examples/react/useBatcher/src/index.tsx b/examples/react/useBatcher/src/index.tsx index 03e9bd8b..e6bc1067 100644 --- a/examples/react/useBatcher/src/index.tsx +++ b/examples/react/useBatcher/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useBatcher } from '@tanstack/react-pacer/batcher' +import { PacerProvider } from '@tanstack/react-pacer/provider' function App1() { // Use your state management library of choice @@ -83,8 +84,17 @@ function App1() { const root = ReactDOM.createRoot(document.getElementById('root')!) root.render( -
- -
-
, + // optionally, provide default options to an optional PacerProvider + +
+ +
+
+
, ) diff --git a/examples/react/useDebouncer/src/index.tsx b/examples/react/useDebouncer/src/index.tsx index 575945e7..88f3f309 100644 --- a/examples/react/useDebouncer/src/index.tsx +++ b/examples/react/useDebouncer/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useDebouncer } from '@tanstack/react-pacer/debouncer' +import { PacerProvider } from '@tanstack/react-pacer/provider' function App1() { // Use your state management library of choice @@ -254,11 +255,21 @@ function App3() { const root = ReactDOM.createRoot(document.getElementById('root')!) root.render( -
- -
- -
- -
, + // optionally, provide default options to an optional PacerProvider + +
+ +
+ +
+ +
+ , +
, ) diff --git a/examples/react/useQueuer/src/index.tsx b/examples/react/useQueuer/src/index.tsx index 31196fca..c1682678 100644 --- a/examples/react/useQueuer/src/index.tsx +++ b/examples/react/useQueuer/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useQueuer } from '@tanstack/react-pacer/queuer' +import { PacerProvider } from '@tanstack/react-pacer/provider' function App1() { // The function that we will be queuing @@ -228,9 +229,18 @@ function App2() { const root = ReactDOM.createRoot(document.getElementById('root')!) root.render( -
- -
- -
, + // optionally, provide default options to an optional PacerProvider + +
+ +
+ +
+
, ) diff --git a/examples/react/useRateLimiter/src/index.tsx b/examples/react/useRateLimiter/src/index.tsx index 5ca429a6..308bbd06 100644 --- a/examples/react/useRateLimiter/src/index.tsx +++ b/examples/react/useRateLimiter/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useRateLimiter } from '@tanstack/react-pacer/rate-limiter' +import { PacerProvider } from '@tanstack/react-pacer/provider' function App1() { const [windowType, setWindowType] = useState<'fixed' | 'sliding'>('fixed') @@ -310,11 +311,20 @@ function App3() { const root = ReactDOM.createRoot(document.getElementById('root')!) root.render( -
- -
- -
- -
, + // optionally, provide default options to an optional PacerProvider + +
+ +
+ +
+ +
+
, ) diff --git a/examples/react/useThrottler/src/index.tsx b/examples/react/useThrottler/src/index.tsx index 991b77f1..963f4042 100644 --- a/examples/react/useThrottler/src/index.tsx +++ b/examples/react/useThrottler/src/index.tsx @@ -1,6 +1,7 @@ import { useState } from 'react' import ReactDOM from 'react-dom/client' import { useThrottler } from '@tanstack/react-pacer/throttler' +import { PacerProvider } from '@tanstack/react-pacer/provider' function App1() { // Use your state management library of choice @@ -226,11 +227,20 @@ function App3() { const root = ReactDOM.createRoot(document.getElementById('root')!) root.render( -
- -
- -
- -
, + // optionally, provide default options to an optional PacerProvider + +
+ +
+ +
+ +
+
, ) From a59452923054ed328bf7facb78079f8e3c20e05d Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Mon, 11 Aug 2025 11:15:00 +0200 Subject: [PATCH 06/44] feat: add initial setup for devtools --- examples/react/queue/package.json | 4 +- examples/react/queue/src/index.tsx | 8 + package.json | 7 +- packages/pacer-devtools/eslint.config.js | 10 + packages/pacer-devtools/package.json | 69 +++++ .../src/context/context-provider.tsx | 60 ++++ .../pacer-devtools/src/context/context.ts | 31 ++ .../src/context/use-context-hooks.ts | 13 + packages/pacer-devtools/src/core.tsx | 44 +++ packages/pacer-devtools/src/devtools.tsx | 21 ++ packages/pacer-devtools/src/index.ts | 2 + packages/pacer-devtools/tests/test-setup.ts | 1 + packages/pacer-devtools/tsconfig.docs.json | 4 + packages/pacer-devtools/tsconfig.json | 8 + packages/pacer-devtools/vite.config.ts | 24 ++ .../pacer-react-devtools/eslint.config.js | 10 + packages/pacer-react-devtools/package.json | 75 +++++ .../pacer-react-devtools/src/devtools.tsx | 26 ++ packages/pacer-react-devtools/src/index.ts | 1 + .../pacer-react-devtools/tests/test-setup.ts | 1 + .../pacer-react-devtools/tsconfig.docs.json | 4 + packages/pacer-react-devtools/tsconfig.json | 7 + packages/pacer-react-devtools/vite.config.ts | 24 ++ .../pacer-solid-devtools/eslint.config.js | 10 + packages/pacer-solid-devtools/package.json | 69 +++++ .../pacer-solid-devtools/src/devtools.tsx | 28 ++ packages/pacer-solid-devtools/src/index.ts | 1 + .../pacer-solid-devtools/tests/test-setup.ts | 1 + .../pacer-solid-devtools/tsconfig.docs.json | 4 + packages/pacer-solid-devtools/tsconfig.json | 8 + packages/pacer-solid-devtools/vite.config.ts | 24 ++ packages/pacer/package.json | 13 +- packages/pacer/src/async-batcher.ts | 7 +- packages/pacer/src/async-debouncer.ts | 7 +- packages/pacer/src/async-queuer.ts | 8 +- packages/pacer/src/async-rate-limiter.ts | 7 +- packages/pacer/src/async-throttler.ts | 7 +- packages/pacer/src/batcher.ts | 8 +- packages/pacer/src/debouncer.ts | 7 +- packages/pacer/src/event-client.ts | 37 +++ packages/pacer/src/index.ts | 1 + packages/pacer/src/queuer.ts | 8 +- packages/pacer/src/rate-limiter.ts | 7 +- packages/pacer/src/throttler.ts | 7 +- pnpm-lock.yaml | 272 ++++++++++++++++-- 45 files changed, 953 insertions(+), 42 deletions(-) create mode 100644 packages/pacer-devtools/eslint.config.js create mode 100644 packages/pacer-devtools/package.json create mode 100644 packages/pacer-devtools/src/context/context-provider.tsx create mode 100644 packages/pacer-devtools/src/context/context.ts create mode 100644 packages/pacer-devtools/src/context/use-context-hooks.ts create mode 100644 packages/pacer-devtools/src/core.tsx create mode 100644 packages/pacer-devtools/src/devtools.tsx create mode 100644 packages/pacer-devtools/src/index.ts create mode 100644 packages/pacer-devtools/tests/test-setup.ts create mode 100644 packages/pacer-devtools/tsconfig.docs.json create mode 100644 packages/pacer-devtools/tsconfig.json create mode 100644 packages/pacer-devtools/vite.config.ts create mode 100644 packages/pacer-react-devtools/eslint.config.js create mode 100644 packages/pacer-react-devtools/package.json create mode 100644 packages/pacer-react-devtools/src/devtools.tsx create mode 100644 packages/pacer-react-devtools/src/index.ts create mode 100644 packages/pacer-react-devtools/tests/test-setup.ts create mode 100644 packages/pacer-react-devtools/tsconfig.docs.json create mode 100644 packages/pacer-react-devtools/tsconfig.json create mode 100644 packages/pacer-react-devtools/vite.config.ts create mode 100644 packages/pacer-solid-devtools/eslint.config.js create mode 100644 packages/pacer-solid-devtools/package.json create mode 100644 packages/pacer-solid-devtools/src/devtools.tsx create mode 100644 packages/pacer-solid-devtools/src/index.ts create mode 100644 packages/pacer-solid-devtools/tests/test-setup.ts create mode 100644 packages/pacer-solid-devtools/tsconfig.docs.json create mode 100644 packages/pacer-solid-devtools/tsconfig.json create mode 100644 packages/pacer-solid-devtools/vite.config.ts create mode 100644 packages/pacer/src/event-client.ts diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index ac17376b..fbf100a9 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -17,6 +17,8 @@ "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^4.7.0", + "@tanstack/pacer-react-devtools": "0.14.0", + "@tanstack/react-devtools": "0.2.2", "vite": "^7.0.6" }, "browserslist": { @@ -31,4 +33,4 @@ "last 1 safari version" ] } -} +} \ No newline at end of file diff --git a/examples/react/queue/src/index.tsx b/examples/react/queue/src/index.tsx index 66853232..36f2921c 100644 --- a/examples/react/queue/src/index.tsx +++ b/examples/react/queue/src/index.tsx @@ -1,5 +1,7 @@ import { useCallback, useState } from 'react' import ReactDOM from 'react-dom/client' +import { PacerDevtoolsPanel } from "@tanstack/pacer-react-devtools" +import { TanstackDevtools } from "@tanstack/react-devtools" import { queue } from '@tanstack/react-pacer/queuer' function App1() { @@ -210,5 +212,11 @@ root.render(
+ + } + ]} /> , ) diff --git a/package.json b/package.json index 4d87d3b8..9629cf10 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,9 @@ "overrides": { "@tanstack/pacer": "workspace:*", "@tanstack/react-pacer": "workspace:*", - "@tanstack/solid-pacer": "workspace:*" + "@tanstack/solid-pacer": "workspace:*", + "@tanstack/pacer-devtools": "workspace:*", + "@tanstack/pacer-solid-devtools": "workspace:*", + "@tanstack/pacer-react-devtools": "workspace:*" } -} +} \ No newline at end of file diff --git a/packages/pacer-devtools/eslint.config.js b/packages/pacer-devtools/eslint.config.js new file mode 100644 index 00000000..e472c69e --- /dev/null +++ b/packages/pacer-devtools/eslint.config.js @@ -0,0 +1,10 @@ +// @ts-check + +import rootConfig from '../../eslint.config.js' + +export default [ + ...rootConfig, + { + rules: {}, + }, +] diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json new file mode 100644 index 00000000..771738de --- /dev/null +++ b/packages/pacer-devtools/package.json @@ -0,0 +1,69 @@ +{ + "name": "@tanstack/pacer-devtools", + "version": "0.14.0", + "description": "Devtools for Pacer.", + "author": "Tanner Linsley", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/pacer.git", + "directory": "packages/pacer" + }, + "homepage": "https://tanstack.com/pacer", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "keywords": [ + "debounce", + "throttle", + "rate-limit", + "queuer", + "queue", + "pacer" + ], + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "engines": { + "node": ">=18" + }, + "files": [ + "dist/", + "src" + ], + "scripts": { + "clean": "premove ./build ./dist", + "lint:fix": "eslint ./src --fix", + "test:eslint": "eslint ./src", + "test:lib": "vitest", + "test:lib:dev": "pnpm test:lib --watch", + "test:types": "tsc", + "test:build": "publint --strict", + "build": "vite build" + }, + "peerDependencies": { + "@tanstack/pacer": ">=0.14.0" + }, + "dependencies": { + "solid-js": "^1.9.7" + }, + "devDependencies": { + "vite-plugin-solid": "^2.11.6" + } +} \ No newline at end of file diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/context/context-provider.tsx new file mode 100644 index 00000000..da3fb154 --- /dev/null +++ b/packages/pacer-devtools/src/context/context-provider.tsx @@ -0,0 +1,60 @@ + + +import { createStore } from "solid-js/store" +import { createEffect, onCleanup } from "solid-js" +import { pacerEventClient } from "@tanstack/pacer" +import { PacerContext, initialStore, } from "./context" +import type { PacerContextType } from "./context" + +export function PacerContextProvider(props: { children: any }) { + const [store, setStore] = createStore(initialStore) + const updateStore = (newState: Partial) => { + + setStore((prev) => ({ ...prev, ...newState })) + } + createEffect(() => { + const cleanup = pacerEventClient.onAllPluginEvents(e => { + switch (e.type) { + case "pacer:async-batcher-state": + updateStore({ asyncBatcherState: e.payload }) + break; + case "pacer:async-debouncer-state": + updateStore({ asyncDebouncerState: e.payload }) + break; + case "pacer:async-queuer-state": + updateStore({ asyncQueuerState: e.payload }) + break; + case "pacer:async-rate-limiter-state": + updateStore({ asyncRateLimiterState: e.payload }) + break; + case "pacer:async-throttler-state": + updateStore({ asyncThrottlerState: e.payload }) + break; + case "pacer:batcher-state": + updateStore({ batcherState: e.payload }) + break; + case "pacer:debouncer-state": + updateStore({ debouncerState: e.payload }) + break; + case "pacer:queuer-state": + updateStore({ queuerState: e.payload }) + break; + case "pacer:rate-limiter-state": + updateStore({ rateLimiterState: e.payload }) + break; + case "pacer:throttler-state": + updateStore({ throttlerState: e.payload }) + break; + } + + }) + onCleanup(cleanup) + }) + return ( + + {props.children} + + ) +} + + diff --git a/packages/pacer-devtools/src/context/context.ts b/packages/pacer-devtools/src/context/context.ts new file mode 100644 index 00000000..ff1d9460 --- /dev/null +++ b/packages/pacer-devtools/src/context/context.ts @@ -0,0 +1,31 @@ + +import { createContext } from "solid-js"; +import type { AsyncBatcherState, AsyncDebouncerState, AsyncQueuerState, AsyncRateLimiterState, AsyncThrottlerState, BatcherState, DebouncerState, QueuerState, RateLimiterState, ThrottlerState } from "@tanstack/pacer"; + +export interface PacerContextType { + asyncBatcherState: AsyncBatcherState | undefined + asyncDebouncerState: AsyncDebouncerState | undefined + asyncQueuerState: AsyncQueuerState | undefined + asyncRateLimiterState: AsyncRateLimiterState | undefined + asyncThrottlerState: AsyncThrottlerState | undefined + batcherState: BatcherState | undefined + debouncerState: DebouncerState | undefined + queuerState: QueuerState | undefined + rateLimiterState: RateLimiterState | undefined + throttlerState: ThrottlerState | undefined +} + +export const initialStore = { + asyncBatcherState: undefined, + asyncDebouncerState: undefined, + asyncQueuerState: undefined, + asyncRateLimiterState: undefined, + asyncThrottlerState: undefined, + batcherState: undefined, + debouncerState: undefined, + queuerState: undefined, + rateLimiterState: undefined, + throttlerState: undefined +} + +export const PacerContext = createContext<[PacerContextType, (newState: Partial) => void]>([initialStore, () => { }]) diff --git a/packages/pacer-devtools/src/context/use-context-hooks.ts b/packages/pacer-devtools/src/context/use-context-hooks.ts new file mode 100644 index 00000000..d25ac386 --- /dev/null +++ b/packages/pacer-devtools/src/context/use-context-hooks.ts @@ -0,0 +1,13 @@ +import { useContext } from "solid-js" +import { PacerContext } from "./context" + +export const usePacerContext = () => { + const context = useContext(PacerContext) + + return context +} + +export const usePacerState = () => { + const [state] = usePacerContext() + return state +} \ No newline at end of file diff --git a/packages/pacer-devtools/src/core.tsx b/packages/pacer-devtools/src/core.tsx new file mode 100644 index 00000000..73304cac --- /dev/null +++ b/packages/pacer-devtools/src/core.tsx @@ -0,0 +1,44 @@ +import { lazy } from 'solid-js' +import { Portal, render } from 'solid-js/web' + +export interface PacerDevtoolsInit { + +} + +export class PacerDevtoolsCore { + #isMounted = false + #dispose?: () => void + #Component: any + + + constructor(_init?: PacerDevtoolsInit | undefined) { } + + mount(el: T) { + if (this.#isMounted) { + throw new Error('Devtools is already mounted') + } + const mountTo = el + const dispose = render(() => { + this.#Component = lazy(() => import('./devtools')) + const Devtools = this.#Component + + return ( + + + + ) + }, mountTo) + + this.#isMounted = true + this.#dispose = dispose + } + + unmount() { + if (!this.#isMounted) { + throw new Error('Devtools is not mounted') + } + + this.#dispose?.() + this.#isMounted = false + } +} diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx new file mode 100644 index 00000000..a6cafe54 --- /dev/null +++ b/packages/pacer-devtools/src/devtools.tsx @@ -0,0 +1,21 @@ + +import { usePacerState } from "./context/use-context-hooks" +import { PacerContextProvider } from "./context/context-provider" + +function Shell() { + const state = usePacerState() + return ( +
+ Pacer state is: +
{JSON.stringify(state, null, 2)}
+
+ ) +} + +export default function Devtools() { + return ( + + + + ) +} \ No newline at end of file diff --git a/packages/pacer-devtools/src/index.ts b/packages/pacer-devtools/src/index.ts new file mode 100644 index 00000000..3b1603f1 --- /dev/null +++ b/packages/pacer-devtools/src/index.ts @@ -0,0 +1,2 @@ +export { PacerDevtoolsCore } from "./core" +export type { PacerDevtoolsInit } from "./core" \ No newline at end of file diff --git a/packages/pacer-devtools/tests/test-setup.ts b/packages/pacer-devtools/tests/test-setup.ts new file mode 100644 index 00000000..a9d0dd31 --- /dev/null +++ b/packages/pacer-devtools/tests/test-setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom/vitest' diff --git a/packages/pacer-devtools/tsconfig.docs.json b/packages/pacer-devtools/tsconfig.docs.json new file mode 100644 index 00000000..2880b4df --- /dev/null +++ b/packages/pacer-devtools/tsconfig.docs.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["tests", "src"] +} diff --git a/packages/pacer-devtools/tsconfig.json b/packages/pacer-devtools/tsconfig.json new file mode 100644 index 00000000..4add0559 --- /dev/null +++ b/packages/pacer-devtools/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src", "eslint.config.js", "vite.config.ts", "tests"], + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "solid-js", + } +} diff --git a/packages/pacer-devtools/vite.config.ts b/packages/pacer-devtools/vite.config.ts new file mode 100644 index 00000000..67121f71 --- /dev/null +++ b/packages/pacer-devtools/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackViteConfig } from '@tanstack/config/vite' +import solid from "vite-plugin-solid"; +import packageJson from './package.json' + +const config = defineConfig({ + plugins: [solid()], + test: { + name: packageJson.name, + dir: './', + watch: false, + environment: 'jsdom', + setupFiles: ['./tests/test-setup.ts'], + globals: true, + }, +}) + +export default mergeConfig( + config, + tanstackViteConfig({ + entry: ['./src/index.ts'], + srcDir: './src', + }), +) diff --git a/packages/pacer-react-devtools/eslint.config.js b/packages/pacer-react-devtools/eslint.config.js new file mode 100644 index 00000000..e472c69e --- /dev/null +++ b/packages/pacer-react-devtools/eslint.config.js @@ -0,0 +1,10 @@ +// @ts-check + +import rootConfig from '../../eslint.config.js' + +export default [ + ...rootConfig, + { + rules: {}, + }, +] diff --git a/packages/pacer-react-devtools/package.json b/packages/pacer-react-devtools/package.json new file mode 100644 index 00000000..6b536fce --- /dev/null +++ b/packages/pacer-react-devtools/package.json @@ -0,0 +1,75 @@ +{ + "name": "@tanstack/pacer-react-devtools", + "version": "0.14.0", + "description": "React adapter for devtools for Pacer.", + "author": "Tanner Linsley", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/pacer.git", + "directory": "packages/pacer" + }, + "homepage": "https://tanstack.com/pacer", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "keywords": [ + "debounce", + "throttle", + "rate-limit", + "queuer", + "queue", + "pacer" + ], + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "engines": { + "node": ">=18" + }, + "files": [ + "dist/", + "src" + ], + "scripts": { + "clean": "premove ./build ./dist", + "lint:fix": "eslint ./src --fix", + "test:eslint": "eslint ./src", + "test:lib": "vitest", + "test:lib:dev": "pnpm test:lib --watch", + "test:types": "tsc", + "test:build": "publint --strict", + "build": "vite build" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "@types/react-dom": ">=16.8", + "react": ">=16.8", + "react-dom": ">=16.8" + }, + "dependencies": { + "@tanstack/pacer-devtools": "workspace:*" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.7.0", + "@eslint-react/eslint-plugin": "^1.48.5", + "eslint-plugin-react-compiler": "19.1.0-rc.1", + "eslint-plugin-react-hooks": "^5.2.0" + } +} \ No newline at end of file diff --git a/packages/pacer-react-devtools/src/devtools.tsx b/packages/pacer-react-devtools/src/devtools.tsx new file mode 100644 index 00000000..0097fbd2 --- /dev/null +++ b/packages/pacer-react-devtools/src/devtools.tsx @@ -0,0 +1,26 @@ +import React, { useEffect, useRef, useState } from 'react' +import { + PacerDevtoolsCore, +} from '@tanstack/pacer-devtools' + +export interface PacerDevtoolsReactInit { + +} + + +export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { + const devToolRef = useRef(null) + + const [devtools] = useState(() => new PacerDevtoolsCore({}),) + useEffect(() => { + if (devToolRef.current) { + devtools.mount(devToolRef.current) + } + + return () => devtools.unmount() + }, [devtools]) + + return ( +
+ ) +} diff --git a/packages/pacer-react-devtools/src/index.ts b/packages/pacer-react-devtools/src/index.ts new file mode 100644 index 00000000..d94438d3 --- /dev/null +++ b/packages/pacer-react-devtools/src/index.ts @@ -0,0 +1 @@ +export { PacerDevtoolsPanel } from "./devtools" \ No newline at end of file diff --git a/packages/pacer-react-devtools/tests/test-setup.ts b/packages/pacer-react-devtools/tests/test-setup.ts new file mode 100644 index 00000000..a9d0dd31 --- /dev/null +++ b/packages/pacer-react-devtools/tests/test-setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom/vitest' diff --git a/packages/pacer-react-devtools/tsconfig.docs.json b/packages/pacer-react-devtools/tsconfig.docs.json new file mode 100644 index 00000000..2880b4df --- /dev/null +++ b/packages/pacer-react-devtools/tsconfig.docs.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["tests", "src"] +} diff --git a/packages/pacer-react-devtools/tsconfig.json b/packages/pacer-react-devtools/tsconfig.json new file mode 100644 index 00000000..ec5879b1 --- /dev/null +++ b/packages/pacer-react-devtools/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src", "eslint.config.js", "vite.config.ts", "tests"], + "compilerOptions": { + "jsx": "react", + } +} diff --git a/packages/pacer-react-devtools/vite.config.ts b/packages/pacer-react-devtools/vite.config.ts new file mode 100644 index 00000000..d3b7a81d --- /dev/null +++ b/packages/pacer-react-devtools/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackViteConfig } from '@tanstack/config/vite' +import react from "@vitejs/plugin-react"; +import packageJson from './package.json' + +const config = defineConfig({ + plugins: [react()], + test: { + name: packageJson.name, + dir: './', + watch: false, + environment: 'jsdom', + setupFiles: ['./tests/test-setup.ts'], + globals: true, + }, +}) + +export default mergeConfig( + config, + tanstackViteConfig({ + entry: ['./src/index.ts'], + srcDir: './src', + }), +) diff --git a/packages/pacer-solid-devtools/eslint.config.js b/packages/pacer-solid-devtools/eslint.config.js new file mode 100644 index 00000000..e472c69e --- /dev/null +++ b/packages/pacer-solid-devtools/eslint.config.js @@ -0,0 +1,10 @@ +// @ts-check + +import rootConfig from '../../eslint.config.js' + +export default [ + ...rootConfig, + { + rules: {}, + }, +] diff --git a/packages/pacer-solid-devtools/package.json b/packages/pacer-solid-devtools/package.json new file mode 100644 index 00000000..5efcf22f --- /dev/null +++ b/packages/pacer-solid-devtools/package.json @@ -0,0 +1,69 @@ +{ + "name": "@tanstack/pacer-solid-devtools", + "version": "0.14.0", + "description": "Solid adapter for devtools for Pacer.", + "author": "Tanner Linsley", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/pacer.git", + "directory": "packages/pacer" + }, + "homepage": "https://tanstack.com/pacer", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "keywords": [ + "debounce", + "throttle", + "rate-limit", + "queuer", + "queue", + "pacer" + ], + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "engines": { + "node": ">=18" + }, + "files": [ + "dist/", + "src" + ], + "scripts": { + "clean": "premove ./build ./dist", + "lint:fix": "eslint ./src --fix", + "test:eslint": "eslint ./src", + "test:lib": "vitest", + "test:lib:dev": "pnpm test:lib --watch", + "test:types": "tsc", + "test:build": "publint --strict", + "build": "vite build" + }, + "peerDependencies": { + "solid-js": ">=1.9.7" + }, + "dependencies": { + "@tanstack/pacer-devtools": "workspace:*" + }, + "devDependencies": { + "vite-plugin-solid": "^2.11.8" + } +} \ No newline at end of file diff --git a/packages/pacer-solid-devtools/src/devtools.tsx b/packages/pacer-solid-devtools/src/devtools.tsx new file mode 100644 index 00000000..92046cec --- /dev/null +++ b/packages/pacer-solid-devtools/src/devtools.tsx @@ -0,0 +1,28 @@ + +import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' +import { createSignal, onCleanup, onMount } from 'solid-js' + +export interface PacerDevtoolsSolidInit { + +} + +export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { + let devToolRef: HTMLDivElement | undefined + const [devtools] = createSignal( + new PacerDevtoolsCore({}), + + ) + onMount(() => { + if (devToolRef) { + devtools().mount(devToolRef) + + onCleanup(() => { + devtools().unmount() + }) + } + }) + + return ( +
+ ) +} diff --git a/packages/pacer-solid-devtools/src/index.ts b/packages/pacer-solid-devtools/src/index.ts new file mode 100644 index 00000000..d94438d3 --- /dev/null +++ b/packages/pacer-solid-devtools/src/index.ts @@ -0,0 +1 @@ +export { PacerDevtoolsPanel } from "./devtools" \ No newline at end of file diff --git a/packages/pacer-solid-devtools/tests/test-setup.ts b/packages/pacer-solid-devtools/tests/test-setup.ts new file mode 100644 index 00000000..a9d0dd31 --- /dev/null +++ b/packages/pacer-solid-devtools/tests/test-setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom/vitest' diff --git a/packages/pacer-solid-devtools/tsconfig.docs.json b/packages/pacer-solid-devtools/tsconfig.docs.json new file mode 100644 index 00000000..2880b4df --- /dev/null +++ b/packages/pacer-solid-devtools/tsconfig.docs.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["tests", "src"] +} diff --git a/packages/pacer-solid-devtools/tsconfig.json b/packages/pacer-solid-devtools/tsconfig.json new file mode 100644 index 00000000..4add0559 --- /dev/null +++ b/packages/pacer-solid-devtools/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src", "eslint.config.js", "vite.config.ts", "tests"], + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "solid-js", + } +} diff --git a/packages/pacer-solid-devtools/vite.config.ts b/packages/pacer-solid-devtools/vite.config.ts new file mode 100644 index 00000000..67121f71 --- /dev/null +++ b/packages/pacer-solid-devtools/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackViteConfig } from '@tanstack/config/vite' +import solid from "vite-plugin-solid"; +import packageJson from './package.json' + +const config = defineConfig({ + plugins: [solid()], + test: { + name: packageJson.name, + dir: './', + watch: false, + environment: 'jsdom', + setupFiles: ['./tests/test-setup.ts'], + globals: true, + }, +}) + +export default mergeConfig( + config, + tanstackViteConfig({ + entry: ['./src/index.ts'], + srcDir: './src', + }), +) diff --git a/packages/pacer/package.json b/packages/pacer/package.json index 2afc23b5..c2f90d8c 100644 --- a/packages/pacer/package.json +++ b/packages/pacer/package.json @@ -150,6 +150,16 @@ "default": "./dist/cjs/utils.cjs" } }, + "./event-client": { + "import": { + "types": "./dist/esm/event-client.d.ts", + "default": "./dist/esm/event-client.js" + }, + "require": { + "types": "./dist/cjs/event-client.d.cts", + "default": "./dist/cjs/event-client.cjs" + } + }, "./package.json": "./package.json" }, "sideEffects": false, @@ -171,6 +181,7 @@ "build": "vite build" }, "dependencies": { + "@tanstack/devtools-event-client": "^0.2.1", "@tanstack/store": "^0.7.2" } -} +} \ No newline at end of file diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index df12d60f..793c82c6 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { OptionalKeys } from './types' export interface AsyncBatcherState { @@ -251,7 +252,7 @@ export class AsyncBatcher { const { isExecuting, isPending, items } = combinedState const size = items.length const isEmpty = size === 0 - return { + const finalState = { ...combinedState, isEmpty, size, @@ -262,7 +263,9 @@ export class AsyncBatcher { : isEmpty ? 'idle' : 'populated', - } + } as const + pacerEventClient.emit("async-batcher-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index c3554b03..5ecff13e 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncDebouncerState { @@ -216,7 +217,7 @@ export class AsyncDebouncer { ...newState, } const { isPending, isExecuting, settleCount } = combinedState - return { + const finalState = { ...combinedState, status: !this.#getEnabled() ? 'disabled' @@ -227,7 +228,9 @@ export class AsyncDebouncer { : settleCount > 0 ? 'settled' : 'idle', - } + } as const + pacerEventClient.emit("async-debouncer-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index 6f0cd3db..71a7de50 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { OptionalKeys } from './types' import type { QueuePosition } from './queuer' @@ -314,15 +315,16 @@ export class AsyncQueuer { const isIdle = isRunning && isEmpty && activeItems.length === 0 const status = isIdle ? 'idle' : isRunning ? 'running' : 'stopped' - - return { + const finalState = { ...combinedState, isEmpty, isFull, isIdle, size, status, - } + } as const + pacerEventClient.emit("async-queuer-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index a76ef7b7..8f280e84 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { AnyAsyncFunction } from './types' export interface AsyncRateLimiterState { @@ -245,11 +246,13 @@ export class AsyncRateLimiter { : isExceeded ? 'exceeded' : 'idle' - return { + const finalState = { ...combinedState, isExceeded, status, - } + } as const + pacerEventClient.emit("async-rate-limiter-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index b6143fed..e7c36901 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncThrottlerState { @@ -227,7 +228,7 @@ export class AsyncThrottler { ...newState, } const { isPending, isExecuting, settleCount } = combinedState - return { + const finalState = { ...combinedState, status: !this.#getEnabled() ? 'disabled' @@ -238,7 +239,9 @@ export class AsyncThrottler { : settleCount > 0 ? 'settled' : 'idle', - } + } as const + pacerEventClient.emit("async-throttler-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index 01239ebb..f25c7481 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { OptionalKeys } from './types' export interface BatcherState { @@ -169,12 +170,15 @@ export class Batcher { const { isPending, items } = combinedState const size = items.length const isEmpty = size === 0 - return { + const finalState = { ...combinedState, isEmpty, size, status: isPending ? 'pending' : 'idle', - } + } as const + + pacerEventClient.emit("batcher-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index 14a77a68..33029c30 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { AnyFunction } from './types' export interface DebouncerState { @@ -152,14 +153,16 @@ export class Debouncer { ...newState, } const { isPending } = combinedState - return { + const finalState = { ...combinedState, status: !this.#getEnabled() ? 'disabled' : isPending ? 'pending' : 'idle', - } + } as const + pacerEventClient.emit("debouncer-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/event-client.ts b/packages/pacer/src/event-client.ts new file mode 100644 index 00000000..754a1c46 --- /dev/null +++ b/packages/pacer/src/event-client.ts @@ -0,0 +1,37 @@ +import { EventClient } from "@tanstack/devtools-event-client" +import type { AsyncBatcherState } from "./async-batcher" +import type { AsyncDebouncerState } from "./async-debouncer" +import type { AsyncQueuerState } from "./async-queuer" +import type { AsyncRateLimiterState } from "./async-rate-limiter" +import type { AsyncThrottlerState } from "./async-throttler" +import type { DebouncerState } from "./debouncer" +import type { BatcherState } from "./batcher" +import type { QueuerState } from "./queuer" +import type { RateLimiterState } from "./rate-limiter" +import type { ThrottlerState } from "./throttler" + +export interface PacerEventMap { + "pacer:async-batcher-state": AsyncBatcherState + "pacer:async-debouncer-state": AsyncDebouncerState + "pacer:async-queuer-state": AsyncQueuerState + "pacer:async-rate-limiter-state": AsyncRateLimiterState + "pacer:async-throttler-state": AsyncThrottlerState + "pacer:batcher-state": BatcherState + "pacer:debouncer-state": DebouncerState + "pacer:queuer-state": QueuerState + "pacer:rate-limiter-state": RateLimiterState + "pacer:throttler-state": ThrottlerState +} + +export class PacerEventClient extends EventClient { + constructor(props?: { + debug: boolean + }) { + super({ + pluginId: "pacer", + debug: props?.debug + }) + } +} + +export const pacerEventClient = new PacerEventClient() \ No newline at end of file diff --git a/packages/pacer/src/index.ts b/packages/pacer/src/index.ts index 194ea6f7..c599f9e8 100644 --- a/packages/pacer/src/index.ts +++ b/packages/pacer/src/index.ts @@ -10,3 +10,4 @@ export * from './rate-limiter' export * from './throttler' export * from './types' export * from './utils' +export * from './event-client' \ No newline at end of file diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index 30c4a96e..e9216751 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' export interface QueuerState { /** @@ -297,15 +298,16 @@ export class Queuer { const isIdle = isRunning && isEmpty const status = isIdle ? 'idle' : isRunning ? 'running' : 'stopped' - - return { + const finalState = { ...combinedState, isEmpty, isFull, isIdle, size, status, - } + } as const + pacerEventClient.emit("queuer-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index ec9c802f..675df875 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { AnyFunction } from './types' export interface RateLimiterState { @@ -168,11 +169,13 @@ export class RateLimiter { : isExceeded ? 'exceeded' : 'idle' - return { + const finalState = { ...combinedState, isExceeded, status, - } + } as const + pacerEventClient.emit("rate-limiter-state", finalState) + return finalState }) } diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index 8537a680..265eae5b 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -1,5 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' +import { pacerEventClient } from './event-client' import type { AnyFunction } from './types' export interface ThrottlerState { @@ -160,14 +161,16 @@ export class Throttler { ...newState, } const { isPending } = combinedState - return { + const finalState = { ...combinedState, status: !this.#getEnabled() ? 'disabled' : isPending ? 'pending' : 'idle', - } + } as const + pacerEventClient.emit("throttler-state", finalState) + return finalState }) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dafca221..c922fce1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,6 +240,12 @@ importers: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) devDependencies: + '@tanstack/pacer-react-devtools': + specifier: 0.14.0 + version: link:../../../packages/pacer-react-devtools + '@tanstack/react-devtools': + specifier: 0.2.2 + version: 0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7) '@types/react': specifier: ^19.1.9 version: 19.1.9 @@ -1541,10 +1547,70 @@ importers: packages/pacer: dependencies: + '@tanstack/devtools-event-client': + specifier: ^0.2.1 + version: 0.2.1 '@tanstack/store': specifier: ^0.7.2 version: 0.7.2 + packages/pacer-devtools: + dependencies: + '@tanstack/pacer': + specifier: '>=0.14.0' + version: link:../pacer + solid-js: + specifier: ^1.9.7 + version: 1.9.7 + devDependencies: + vite-plugin-solid: + specifier: ^2.11.6 + version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + + packages/pacer-react-devtools: + dependencies: + '@tanstack/pacer-devtools': + specifier: workspace:* + version: link:../pacer-devtools + '@types/react': + specifier: '>=16.8' + version: 19.1.9 + '@types/react-dom': + specifier: '>=16.8' + version: 19.1.7(@types/react@19.1.9) + react: + specifier: '>=16.8' + version: 19.1.1 + react-dom: + specifier: '>=16.8' + version: 19.1.1(react@19.1.1) + devDependencies: + '@eslint-react/eslint-plugin': + specifier: ^1.48.5 + version: 1.52.3(eslint@9.32.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + eslint-plugin-react-compiler: + specifier: 19.1.0-rc.1 + version: 19.1.0-rc.1(eslint@9.32.0(jiti@2.4.2)) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) + + packages/pacer-solid-devtools: + dependencies: + '@tanstack/pacer-devtools': + specifier: workspace:* + version: link:../pacer-devtools + solid-js: + specifier: '>=1.9.7' + version: 1.9.7 + devDependencies: + vite-plugin-solid: + specifier: ^2.11.8 + version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + packages/react-pacer: dependencies: '@tanstack/pacer': @@ -1744,11 +1810,6 @@ packages: resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.27.0': resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} @@ -2544,6 +2605,26 @@ packages: peerDependencies: size-limit: 11.2.0 + '@solid-primitives/event-listener@2.4.3': + resolution: {integrity: sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/keyboard@1.3.3': + resolution: {integrity: sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/rootless@1.5.2': + resolution: {integrity: sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/utils@6.3.2': + resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==} + peerDependencies: + solid-js: ^1.6.12 + '@stylistic/eslint-plugin@5.2.0': resolution: {integrity: sha512-RCEdbREv9EBiToUBQTlRhVYKG093I6ZnnQ990j08eJ6uRZh71DXkOnoxtTLfDQ6utVCVQzrhZFHZP0zfrfOIjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2563,6 +2644,26 @@ packages: resolution: {integrity: sha512-q6P0aYj7X65biWDKkKFQ4feQoxF8Bcxd3U3CU5zjBt9sgUrc/w8kEfHoGy0cHtgsTSMLfPrzaAtvp6hTbofZmw==} engines: {node: '>=18'} + '@tanstack/devtools-event-bus@0.2.1': + resolution: {integrity: sha512-JMq3AmrQR2LH9P8Rcj1MTq8Iq/mPk/PyuqSw1L0hO2Wl8G1oz5ue31fS8u8lIgOCVR/mGdJah18p+Pj5OosRJA==} + engines: {node: '>=18'} + + '@tanstack/devtools-event-client@0.2.1': + resolution: {integrity: sha512-78AAfg9KfSDE+pQLRJo20bxX3A40ea14kFqNmzuMb7zFJNfR5L87kAEOju6QXu7cbk9r2r7EEV2a8PgHOsD7Kg==} + engines: {node: '>=18'} + + '@tanstack/devtools-ui@0.2.2': + resolution: {integrity: sha512-G2gRyoGpjtr25w9BqQzPbefiJ9WALWYLOVxVr+NoqOLDA680nUO5KJjp7oLZMfnKssWxACgulaQ3DUmGGJuysQ==} + engines: {node: '>=18'} + peerDependencies: + solid-js: '>=1.9.7' + + '@tanstack/devtools@0.3.0': + resolution: {integrity: sha512-uxj3MM2/ZlQDlhnBoUSlJC8oneJ+sPh6hK0kgiKZAEgrlUvZfUNgKGhrmMHZaAGl/WEglhZoxXwvvo9HAFT8yw==} + engines: {node: '>=18'} + peerDependencies: + solid-js: '>=1.9.7' + '@tanstack/eslint-config@0.3.0': resolution: {integrity: sha512-7OsrYscWEPojIRqh9byyyv2W+jm/3WaDckVnuQgf7a86YPhtN93fHa3hsKquJE/IbMX/FK0EDHi+DPAXwvZ5ZA==} engines: {node: '>=18'} @@ -2581,6 +2682,15 @@ packages: '@tanstack/query-devtools@5.84.0': resolution: {integrity: sha512-fbF3n+z1rqhvd9EoGp5knHkv3p5B2Zml1yNRjh7sNXklngYI5RVIWUrUjZ1RIcEoscarUb0+bOvIs5x9dwzOXQ==} + '@tanstack/react-devtools@0.2.2': + resolution: {integrity: sha512-Ig8ZYqUPJ+nwRvF/RpkQHPbgEkrL3b2PjeYBgXgT5OemyRUlmG12UutvMBV+bJuBsSOKHrNf29IvzC0Vw9Bt1A==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': '>=16.8' + '@types/react-dom': '>=16.8' + react: '>=16.8' + react-dom: '>=16.8' + '@tanstack/react-persister@0.1.1': resolution: {integrity: sha512-bERMba9+dDOWKJLV5dR6+pKq+xRYyuCsK1Te5Ygs2WiXdvAVLMnNjJIOkIhZ9uihbQvyBIbYPAlb9sCfSgvYWg==} engines: {node: '>=18'} @@ -3392,6 +3502,12 @@ packages: peerDependencies: eslint: ^9.0.0 + eslint-plugin-react-compiler@19.1.0-rc.1: + resolution: {integrity: sha512-3umw5eqZXapBl7aQGmvcjheKhUbsElb9jTETxRZg371e1LG4EPs/zCHt2JzP+wNcdaZWzjU/R730zPUJblY2zw==} + engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} + peerDependencies: + eslint: '>=7' + eslint-plugin-react-compiler@19.1.0-rc.2: resolution: {integrity: sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} @@ -3710,6 +3826,11 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + goober@2.1.16: + resolution: {integrity: sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==} + peerDependencies: + csstype: ^3.0.10 + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -5033,6 +5154,18 @@ packages: utf-8-validate: optional: true + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -5169,7 +5302,7 @@ snapshots: '@babel/generator@7.26.9': dependencies: - '@babel/parser': 7.26.9 + '@babel/parser': 7.28.0 '@babel/types': 7.26.9 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 @@ -5177,7 +5310,7 @@ snapshots: '@babel/generator@7.27.0': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.0 '@babel/types': 7.27.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 @@ -5224,6 +5357,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.28.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-globals@7.28.0': {} '@babel/helper-member-expression-to-functions@7.25.9': @@ -5286,6 +5432,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-replace-supers@7.26.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: '@babel/traverse': 7.27.0 @@ -5315,10 +5470,6 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.0 - '@babel/parser@7.26.9': - dependencies: - '@babel/types': 7.26.9 - '@babel/parser@7.27.0': dependencies: '@babel/types': 7.27.0 @@ -5335,6 +5486,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -5357,13 +5516,13 @@ snapshots: '@babel/template@7.26.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.9 + '@babel/parser': 7.28.0 '@babel/types': 7.26.9 '@babel/template@7.27.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.0 '@babel/types': 7.27.0 '@babel/template@7.27.2': @@ -5376,7 +5535,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/generator': 7.26.9 - '@babel/parser': 7.26.9 + '@babel/parser': 7.28.0 '@babel/template': 7.26.9 '@babel/types': 7.26.9 debug: 4.4.1 @@ -5388,7 +5547,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.0 '@babel/template': 7.27.0 '@babel/types': 7.27.0 debug: 4.4.1 @@ -6183,6 +6342,27 @@ snapshots: '@size-limit/file': 11.2.0(size-limit@11.2.0) size-limit: 11.2.0 + '@solid-primitives/event-listener@2.4.3(solid-js@1.9.7)': + dependencies: + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 + + '@solid-primitives/keyboard@1.3.3(solid-js@1.9.7)': + dependencies: + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.7) + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.7) + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 + + '@solid-primitives/rootless@1.5.2(solid-js@1.9.7)': + dependencies: + '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) + solid-js: 1.9.7 + + '@solid-primitives/utils@6.3.2(solid-js@1.9.7)': + dependencies: + solid-js: 1.9.7 + '@stylistic/eslint-plugin@5.2.0(eslint@9.32.0(jiti@2.4.2))': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) @@ -6220,6 +6400,35 @@ snapshots: - typescript - vite + '@tanstack/devtools-event-bus@0.2.1': + dependencies: + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@tanstack/devtools-event-client@0.2.1': {} + + '@tanstack/devtools-ui@0.2.2(csstype@3.1.3)(solid-js@1.9.7)': + dependencies: + goober: 2.1.16(csstype@3.1.3) + solid-js: 1.9.7 + transitivePeerDependencies: + - csstype + + '@tanstack/devtools@0.3.0(csstype@3.1.3)(solid-js@1.9.7)': + dependencies: + '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.7) + '@tanstack/devtools-event-bus': 0.2.1 + '@tanstack/devtools-ui': 0.2.2(csstype@3.1.3)(solid-js@1.9.7) + clsx: 2.1.1 + goober: 2.1.16(csstype@3.1.3) + solid-js: 1.9.7 + transitivePeerDependencies: + - bufferutil + - csstype + - utf-8-validate + '@tanstack/eslint-config@0.3.0(@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: '@eslint/js': 9.31.0 @@ -6254,6 +6463,19 @@ snapshots: '@tanstack/query-devtools@5.84.0': {} + '@tanstack/react-devtools@0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7)': + dependencies: + '@tanstack/devtools': 0.3.0(csstype@3.1.3)(solid-js@1.9.7) + '@types/react': 19.1.9 + '@types/react-dom': 19.1.7(@types/react@19.1.9) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + transitivePeerDependencies: + - bufferutil + - csstype + - solid-js + - utf-8-validate + '@tanstack/react-persister@0.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/persister': 0.1.1 @@ -6341,7 +6563,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.0 '@babel/types': 7.27.0 '@types/babel__traverse@7.20.6': @@ -7149,6 +7371,18 @@ snapshots: tinyglobby: 0.2.14 yaml-eslint-parser: 1.3.0 + eslint-plugin-react-compiler@19.1.0-rc.1(eslint@9.32.0(jiti@2.4.2)): + dependencies: + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.0) + eslint: 9.32.0(jiti@2.4.2) + hermes-parser: 0.25.1 + zod: 3.25.72 + zod-validation-error: 3.4.0(zod@3.25.72) + transitivePeerDependencies: + - supports-color + eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.32.0(jiti@2.4.2)): dependencies: '@babel/core': 7.26.10 @@ -7544,6 +7778,10 @@ snapshots: globrex@0.1.2: {} + goober@2.1.16(csstype@3.1.3): + dependencies: + csstype: 3.1.3 + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -8852,6 +9090,8 @@ snapshots: ws@8.18.1: {} + ws@8.18.3: {} + xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} From 4584821984a25d5cc571b14390a2e55a1f11c93e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 09:18:26 +0000 Subject: [PATCH 07/44] ci: apply automated fixes --- docs/reference/classes/asyncbatcher.md | 24 +- docs/reference/classes/asyncdebouncer.md | 20 +- docs/reference/classes/asyncqueuer.md | 38 ++-- docs/reference/classes/asyncratelimiter.md | 20 +- docs/reference/classes/asyncthrottler.md | 20 +- docs/reference/classes/batcher.md | 22 +- docs/reference/classes/debouncer.md | 20 +- docs/reference/classes/pacereventclient.md | 214 ++++++++++++++++++ docs/reference/classes/queuer.md | 34 +-- docs/reference/classes/ratelimiter.md | 20 +- docs/reference/classes/throttler.md | 20 +- docs/reference/functions/asyncbatch.md | 2 +- docs/reference/functions/asyncdebounce.md | 2 +- docs/reference/functions/asyncqueue.md | 2 +- docs/reference/functions/asyncratelimit.md | 2 +- docs/reference/functions/asyncthrottle.md | 2 +- docs/reference/functions/batch.md | 2 +- docs/reference/functions/debounce.md | 2 +- docs/reference/functions/isfunction.md | 2 +- .../functions/parsefunctionorvalue.md | 2 +- docs/reference/functions/queue.md | 2 +- docs/reference/functions/ratelimit.md | 2 +- docs/reference/functions/throttle.md | 2 +- docs/reference/index.md | 6 + .../interfaces/asyncbatcheroptions.md | 22 +- .../reference/interfaces/asyncbatcherstate.md | 28 +-- .../interfaces/asyncdebounceroptions.md | 20 +- .../interfaces/asyncdebouncerstate.md | 22 +- .../interfaces/asyncqueueroptions.md | 38 ++-- docs/reference/interfaces/asyncqueuerstate.md | 34 +-- .../interfaces/asyncratelimiteroptions.md | 22 +- .../interfaces/asyncratelimiterstate.md | 22 +- .../interfaces/asyncthrottleroptions.md | 20 +- .../interfaces/asyncthrottlerstate.md | 24 +- docs/reference/interfaces/batcheroptions.md | 16 +- docs/reference/interfaces/batcherstate.md | 16 +- docs/reference/interfaces/debounceroptions.md | 14 +- docs/reference/interfaces/debouncerstate.md | 14 +- docs/reference/interfaces/pacereventmap.md | 110 +++++++++ docs/reference/interfaces/queueroptions.md | 30 +-- docs/reference/interfaces/queuerstate.md | 26 +-- .../interfaces/ratelimiteroptions.md | 16 +- docs/reference/interfaces/ratelimiterstate.md | 14 +- docs/reference/interfaces/throttleroptions.md | 14 +- docs/reference/interfaces/throttlerstate.md | 16 +- .../type-aliases/anyasyncfunction.md | 2 +- docs/reference/type-aliases/anyfunction.md | 2 +- docs/reference/type-aliases/optionalkeys.md | 2 +- docs/reference/type-aliases/queueposition.md | 2 +- docs/reference/variables/pacereventclient.md | 14 ++ examples/react/queue/package.json | 2 +- examples/react/queue/src/index.tsx | 15 +- package.json | 2 +- packages/pacer-devtools/package.json | 2 +- .../src/context/context-provider.tsx | 58 +++-- .../pacer-devtools/src/context/context.ts | 22 +- .../src/context/use-context-hooks.ts | 6 +- packages/pacer-devtools/src/core.tsx | 7 +- packages/pacer-devtools/src/devtools.tsx | 7 +- packages/pacer-devtools/src/index.ts | 4 +- packages/pacer-devtools/tsconfig.json | 2 +- packages/pacer-devtools/vite.config.ts | 2 +- packages/pacer-react-devtools/package.json | 2 +- .../pacer-react-devtools/src/devtools.tsx | 15 +- packages/pacer-react-devtools/src/index.ts | 2 +- packages/pacer-react-devtools/tsconfig.json | 2 +- packages/pacer-react-devtools/vite.config.ts | 2 +- packages/pacer-solid-devtools/package.json | 2 +- .../pacer-solid-devtools/src/devtools.tsx | 14 +- packages/pacer-solid-devtools/src/index.ts | 2 +- packages/pacer-solid-devtools/tsconfig.json | 2 +- packages/pacer-solid-devtools/vite.config.ts | 2 +- packages/pacer/package.json | 2 +- packages/pacer/src/async-batcher.ts | 2 +- packages/pacer/src/async-debouncer.ts | 2 +- packages/pacer/src/async-queuer.ts | 2 +- packages/pacer/src/async-rate-limiter.ts | 4 +- packages/pacer/src/async-throttler.ts | 2 +- packages/pacer/src/batcher.ts | 4 +- packages/pacer/src/debouncer.ts | 2 +- packages/pacer/src/event-client.ts | 52 ++--- packages/pacer/src/index.ts | 2 +- packages/pacer/src/queuer.ts | 4 +- packages/pacer/src/rate-limiter.ts | 2 +- packages/pacer/src/throttler.ts | 2 +- 85 files changed, 814 insertions(+), 484 deletions(-) create mode 100644 docs/reference/classes/pacereventclient.md create mode 100644 docs/reference/interfaces/pacereventmap.md create mode 100644 docs/reference/variables/pacereventclient.md diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index 72e66ddf..e94aa1b4 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -7,7 +7,7 @@ title: AsyncBatcher # Class: AsyncBatcher\ -Defined in: [async-batcher.ts:219](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L219) +Defined in: [packages/pacer/src/async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L220) A class that collects items and processes them in batches asynchronously. @@ -82,7 +82,7 @@ batcher.addItem(2); new AsyncBatcher(fn, initialOptions): AsyncBatcher ``` -Defined in: [async-batcher.ts:226](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L226) +Defined in: [packages/pacer/src/async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L227) #### Parameters @@ -106,7 +106,7 @@ Defined in: [async-batcher.ts:226](https://github.com/TanStack/pacer/blob/main/p fn: (items) => Promise; ``` -Defined in: [async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L227) +Defined in: [packages/pacer/src/async-batcher.ts:228](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L228) #### Parameters @@ -126,7 +126,7 @@ Defined in: [async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/p options: AsyncBatcherOptionsWithOptionalCallbacks; ``` -Defined in: [async-batcher.ts:223](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L223) +Defined in: [packages/pacer/src/async-batcher.ts:224](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L224) *** @@ -136,7 +136,7 @@ Defined in: [async-batcher.ts:223](https://github.com/TanStack/pacer/blob/main/p readonly store: Store>>; ``` -Defined in: [async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L220) +Defined in: [packages/pacer/src/async-batcher.ts:221](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L221) ## Methods @@ -146,7 +146,7 @@ Defined in: [async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/p addItem(item): void ``` -Defined in: [async-batcher.ts:277](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L277) +Defined in: [packages/pacer/src/async-batcher.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L280) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -169,7 +169,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L378) +Defined in: [packages/pacer/src/async-batcher.ts:381](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L381) Removes all items from the async batcher @@ -185,7 +185,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [async-batcher.ts:352](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L352) +Defined in: [packages/pacer/src/async-batcher.ts:355](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L355) Processes the current batch of items immediately @@ -201,7 +201,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [async-batcher.ts:360](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L360) +Defined in: [packages/pacer/src/async-batcher.ts:363](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L363) Returns a copy of all items in the async batcher @@ -217,7 +217,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [async-batcher.ts:364](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L364) +Defined in: [packages/pacer/src/async-batcher.ts:367](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L367) #### Returns @@ -231,7 +231,7 @@ Defined in: [async-batcher.ts:364](https://github.com/TanStack/pacer/blob/main/p reset(): void ``` -Defined in: [async-batcher.ts:385](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L385) +Defined in: [packages/pacer/src/async-batcher.ts:388](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L388) Resets the async batcher state to its default values @@ -247,7 +247,7 @@ Resets the async batcher state to its default values setOptions(newOptions): void ``` -Defined in: [async-batcher.ts:241](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L241) +Defined in: [packages/pacer/src/async-batcher.ts:242](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L242) Updates the async batcher options diff --git a/docs/reference/classes/asyncdebouncer.md b/docs/reference/classes/asyncdebouncer.md index 4be9dab3..297ffe50 100644 --- a/docs/reference/classes/asyncdebouncer.md +++ b/docs/reference/classes/asyncdebouncer.md @@ -7,7 +7,7 @@ title: AsyncDebouncer # Class: AsyncDebouncer\ -Defined in: [async-debouncer.ts:177](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L177) +Defined in: [packages/pacer/src/async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L178) A class that creates an async debounced function. @@ -66,7 +66,7 @@ const results = await asyncDebouncer.maybeExecute(inputElement.value); new AsyncDebouncer(fn, initialOptions): AsyncDebouncer ``` -Defined in: [async-debouncer.ts:188](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L188) +Defined in: [packages/pacer/src/async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L189) #### Parameters @@ -90,7 +90,7 @@ Defined in: [async-debouncer.ts:188](https://github.com/TanStack/pacer/blob/main fn: TFn; ``` -Defined in: [async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L189) +Defined in: [packages/pacer/src/async-debouncer.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L190) *** @@ -100,7 +100,7 @@ Defined in: [async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main options: AsyncDebouncerOptions; ``` -Defined in: [async-debouncer.ts:181](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L181) +Defined in: [packages/pacer/src/async-debouncer.ts:182](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L182) *** @@ -110,7 +110,7 @@ Defined in: [async-debouncer.ts:181](https://github.com/TanStack/pacer/blob/main readonly store: Store>>; ``` -Defined in: [async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L178) +Defined in: [packages/pacer/src/async-debouncer.ts:179](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L179) ## Methods @@ -120,7 +120,7 @@ Defined in: [async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-debouncer.ts:387](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L387) +Defined in: [packages/pacer/src/async-debouncer.ts:390](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L390) Cancels any pending execution or aborts any execution in progress @@ -136,7 +136,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-debouncer.ts:339](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L339) +Defined in: [packages/pacer/src/async-debouncer.ts:342](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L342) Processes the current pending execution immediately @@ -152,7 +152,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-debouncer.ts:262](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L262) +Defined in: [packages/pacer/src/async-debouncer.ts:265](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L265) Attempts to execute the debounced function. If a call is already in progress, it will be queued. @@ -188,7 +188,7 @@ The error from the debounced function if no onError handler is configured reset(): void ``` -Defined in: [async-debouncer.ts:396](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L396) +Defined in: [packages/pacer/src/async-debouncer.ts:399](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L399) Resets the debouncer state to its default values @@ -204,7 +204,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-debouncer.ts:203](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L203) +Defined in: [packages/pacer/src/async-debouncer.ts:204](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L204) Updates the async debouncer options diff --git a/docs/reference/classes/asyncqueuer.md b/docs/reference/classes/asyncqueuer.md index 797f7e4f..0d09aa38 100644 --- a/docs/reference/classes/asyncqueuer.md +++ b/docs/reference/classes/asyncqueuer.md @@ -7,7 +7,7 @@ title: AsyncQueuer # Class: AsyncQueuer\ -Defined in: [async-queuer.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L259) +Defined in: [packages/pacer/src/async-queuer.ts:260](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L260) A flexible asynchronous queue for processing tasks with configurable concurrency, priority, and expiration. @@ -71,7 +71,7 @@ asyncQueuer.start(); new AsyncQueuer(fn, initialOptions): AsyncQueuer ``` -Defined in: [async-queuer.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L266) +Defined in: [packages/pacer/src/async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L267) #### Parameters @@ -95,7 +95,7 @@ Defined in: [async-queuer.ts:266](https://github.com/TanStack/pacer/blob/main/pa fn: (item) => Promise; ``` -Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L267) +Defined in: [packages/pacer/src/async-queuer.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L268) #### Parameters @@ -115,7 +115,7 @@ Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/pa options: AsyncQueuerOptions; ``` -Defined in: [async-queuer.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L263) +Defined in: [packages/pacer/src/async-queuer.ts:264](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L264) *** @@ -125,7 +125,7 @@ Defined in: [async-queuer.ts:263](https://github.com/TanStack/pacer/blob/main/pa readonly store: Store>>; ``` -Defined in: [async-queuer.ts:260](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L260) +Defined in: [packages/pacer/src/async-queuer.ts:261](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L261) ## Methods @@ -138,7 +138,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [async-queuer.ts:400](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L400) +Defined in: [packages/pacer/src/async-queuer.ts:402](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L402) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -176,7 +176,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [async-queuer.ts:704](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L704) +Defined in: [packages/pacer/src/async-queuer.ts:706](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L706) Removes all pending items from the queue. Does not affect active tasks. @@ -192,7 +192,7 @@ Removes all pending items from the queue. Does not affect active tasks. execute(position?): Promise ``` -Defined in: [async-queuer.ts:526](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L526) +Defined in: [packages/pacer/src/async-queuer.ts:528](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L528) Removes and returns the next item from the queue and executes the task function with it. @@ -222,7 +222,7 @@ queuer.execute('back'); flush(numberOfItems, position?): Promise ``` -Defined in: [async-queuer.ts:561](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L561) +Defined in: [packages/pacer/src/async-queuer.ts:563](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L563) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -249,7 +249,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): Promise ``` -Defined in: [async-queuer.ts:575](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L575) +Defined in: [packages/pacer/src/async-queuer.ts:577](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L577) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -272,7 +272,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:479](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L479) +Defined in: [packages/pacer/src/async-queuer.ts:481](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L481) Removes and returns the next item from the queue without executing the task function. Use for manual queue management. Normally, use execute() to process items. @@ -304,7 +304,7 @@ queuer.getNextItem('back'); peekActiveItems(): TValue[] ``` -Defined in: [async-queuer.ts:667](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L667) +Defined in: [packages/pacer/src/async-queuer.ts:669](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L669) Returns the items currently being processed (active tasks). @@ -320,7 +320,7 @@ Returns the items currently being processed (active tasks). peekAllItems(): TValue[] ``` -Defined in: [async-queuer.ts:660](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L660) +Defined in: [packages/pacer/src/async-queuer.ts:662](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L662) Returns a copy of all items in the queue, including active and pending items. @@ -336,7 +336,7 @@ Returns a copy of all items in the queue, including active and pending items. peekNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:650](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L650) +Defined in: [packages/pacer/src/async-queuer.ts:652](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L652) Returns the next item in the queue without removing it. @@ -365,7 +365,7 @@ queuer.peekNextItem('back'); // back peekPendingItems(): TValue[] ``` -Defined in: [async-queuer.ts:674](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L674) +Defined in: [packages/pacer/src/async-queuer.ts:676](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L676) Returns the items waiting to be processed (pending tasks). @@ -381,7 +381,7 @@ Returns the items waiting to be processed (pending tasks). reset(): void ``` -Defined in: [async-queuer.ts:712](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L712) +Defined in: [packages/pacer/src/async-queuer.ts:714](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L714) Resets the queuer state to its default values @@ -397,7 +397,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [async-queuer.ts:298](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L298) +Defined in: [packages/pacer/src/async-queuer.ts:299](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L299) Updates the queuer options. New options are merged with existing options. @@ -419,7 +419,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [async-queuer.ts:681](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L681) +Defined in: [packages/pacer/src/async-queuer.ts:683](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L683) Starts processing items in the queue. If already running, does nothing. @@ -435,7 +435,7 @@ Starts processing items in the queue. If already running, does nothing. stop(): void ``` -Defined in: [async-queuer.ts:691](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L691) +Defined in: [packages/pacer/src/async-queuer.ts:693](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L693) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index 9e1c68cd..c950b595 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -7,7 +7,7 @@ title: AsyncRateLimiter # Class: AsyncRateLimiter\ -Defined in: [async-rate-limiter.ts:205](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L205) +Defined in: [packages/pacer/src/async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L206) A class that creates an async rate-limited function. @@ -87,7 +87,7 @@ const data = await rateLimiter.maybeExecute('123'); new AsyncRateLimiter(fn, initialOptions): AsyncRateLimiter ``` -Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L212) +Defined in: [packages/pacer/src/async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L213) #### Parameters @@ -111,7 +111,7 @@ Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/m fn: TFn; ``` -Defined in: [async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L213) +Defined in: [packages/pacer/src/async-rate-limiter.ts:214](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L214) *** @@ -121,7 +121,7 @@ Defined in: [async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/m options: AsyncRateLimiterOptions; ``` -Defined in: [async-rate-limiter.ts:209](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L209) +Defined in: [packages/pacer/src/async-rate-limiter.ts:210](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L210) *** @@ -131,7 +131,7 @@ Defined in: [async-rate-limiter.ts:209](https://github.com/TanStack/pacer/blob/m readonly store: Store>>; ``` -Defined in: [async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L206) +Defined in: [packages/pacer/src/async-rate-limiter.ts:207](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L207) ## Methods @@ -141,7 +141,7 @@ Defined in: [async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/m getMsUntilNextWindow(): number ``` -Defined in: [async-rate-limiter.ts:433](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L433) +Defined in: [packages/pacer/src/async-rate-limiter.ts:436](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L436) Returns the number of milliseconds until the next execution will be possible For fixed windows, this is the time until the current window resets @@ -159,7 +159,7 @@ For sliding windows, this is the time until the oldest execution expires getRemainingInWindow(): number ``` -Defined in: [async-rate-limiter.ts:423](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L423) +Defined in: [packages/pacer/src/async-rate-limiter.ts:426](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L426) Returns the number of remaining executions allowed in the current window @@ -175,7 +175,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [async-rate-limiter.ts:302](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L302) +Defined in: [packages/pacer/src/async-rate-limiter.ts:305](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L305) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -223,7 +223,7 @@ const result2 = await rateLimiter.maybeExecute('arg1', 'arg2'); // undefined reset(): void ``` -Defined in: [async-rate-limiter.ts:444](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L444) +Defined in: [packages/pacer/src/async-rate-limiter.ts:447](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L447) Resets the rate limiter state @@ -239,7 +239,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [async-rate-limiter.ts:230](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L230) +Defined in: [packages/pacer/src/async-rate-limiter.ts:231](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L231) Updates the async rate limiter options diff --git a/docs/reference/classes/asyncthrottler.md b/docs/reference/classes/asyncthrottler.md index cd73bfeb..6bd6f919 100644 --- a/docs/reference/classes/asyncthrottler.md +++ b/docs/reference/classes/asyncthrottler.md @@ -7,7 +7,7 @@ title: AsyncThrottler # Class: AsyncThrottler\ -Defined in: [async-throttler.ts:188](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L188) +Defined in: [packages/pacer/src/async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L189) A class that creates an async throttled function. @@ -69,7 +69,7 @@ const result = await throttler.maybeExecute(inputElement.value); new AsyncThrottler(fn, initialOptions): AsyncThrottler ``` -Defined in: [async-throttler.ts:199](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L199) +Defined in: [packages/pacer/src/async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L200) #### Parameters @@ -93,7 +93,7 @@ Defined in: [async-throttler.ts:199](https://github.com/TanStack/pacer/blob/main fn: TFn; ``` -Defined in: [async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L200) +Defined in: [packages/pacer/src/async-throttler.ts:201](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L201) *** @@ -103,7 +103,7 @@ Defined in: [async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main options: AsyncThrottlerOptions; ``` -Defined in: [async-throttler.ts:192](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L192) +Defined in: [packages/pacer/src/async-throttler.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L193) *** @@ -113,7 +113,7 @@ Defined in: [async-throttler.ts:192](https://github.com/TanStack/pacer/blob/main readonly store: Store>>; ``` -Defined in: [async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L189) +Defined in: [packages/pacer/src/async-throttler.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L190) ## Methods @@ -123,7 +123,7 @@ Defined in: [async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-throttler.ts:422](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L422) +Defined in: [packages/pacer/src/async-throttler.ts:425](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L425) Cancels any pending execution or aborts any execution in progress @@ -139,7 +139,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-throttler.ts:371](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L371) +Defined in: [packages/pacer/src/async-throttler.ts:374](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L374) Processes the current pending execution immediately @@ -155,7 +155,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-throttler.ts:281](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L281) +Defined in: [packages/pacer/src/async-throttler.ts:284](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L284) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -197,7 +197,7 @@ await throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [async-throttler.ts:430](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L430) +Defined in: [packages/pacer/src/async-throttler.ts:433](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L433) Resets the debouncer state to its default values @@ -213,7 +213,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-throttler.ts:214](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L214) +Defined in: [packages/pacer/src/async-throttler.ts:215](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L215) Updates the async throttler options diff --git a/docs/reference/classes/batcher.md b/docs/reference/classes/batcher.md index aba88063..57a9ffb3 100644 --- a/docs/reference/classes/batcher.md +++ b/docs/reference/classes/batcher.md @@ -7,7 +7,7 @@ title: Batcher # Class: Batcher\ -Defined in: [batcher.ts:138](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L138) +Defined in: [packages/pacer/src/batcher.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L139) A class that collects items and processes them in batches. @@ -59,7 +59,7 @@ batcher.addItem(2); new Batcher(fn, initialOptions): Batcher ``` -Defined in: [batcher.ts:145](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L145) +Defined in: [packages/pacer/src/batcher.ts:146](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L146) #### Parameters @@ -83,7 +83,7 @@ Defined in: [batcher.ts:145](https://github.com/TanStack/pacer/blob/main/package fn: (items) => void; ``` -Defined in: [batcher.ts:146](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L146) +Defined in: [packages/pacer/src/batcher.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L147) #### Parameters @@ -103,7 +103,7 @@ Defined in: [batcher.ts:146](https://github.com/TanStack/pacer/blob/main/package options: BatcherOptionsWithOptionalCallbacks; ``` -Defined in: [batcher.ts:142](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L142) +Defined in: [packages/pacer/src/batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L143) *** @@ -113,7 +113,7 @@ Defined in: [batcher.ts:142](https://github.com/TanStack/pacer/blob/main/package readonly store: Store>>; ``` -Defined in: [batcher.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L139) +Defined in: [packages/pacer/src/batcher.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L140) ## Methods @@ -123,7 +123,7 @@ Defined in: [batcher.ts:139](https://github.com/TanStack/pacer/blob/main/package addItem(item): void ``` -Defined in: [batcher.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L189) +Defined in: [packages/pacer/src/batcher.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L193) Adds an item to the batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -146,7 +146,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [batcher.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L259) +Defined in: [packages/pacer/src/batcher.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L263) Removes all items from the batcher @@ -162,7 +162,7 @@ Removes all items from the batcher flush(): void ``` -Defined in: [batcher.ts:237](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L237) +Defined in: [packages/pacer/src/batcher.ts:241](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L241) Processes the current batch of items immediately @@ -178,7 +178,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [batcher.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L245) +Defined in: [packages/pacer/src/batcher.ts:249](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L249) Returns a copy of all items in the batcher @@ -194,7 +194,7 @@ Returns a copy of all items in the batcher reset(): void ``` -Defined in: [batcher.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L266) +Defined in: [packages/pacer/src/batcher.ts:270](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L270) Resets the batcher state to its default values @@ -210,7 +210,7 @@ Resets the batcher state to its default values setOptions(newOptions): void ``` -Defined in: [batcher.ts:159](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L159) +Defined in: [packages/pacer/src/batcher.ts:160](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L160) Updates the batcher options diff --git a/docs/reference/classes/debouncer.md b/docs/reference/classes/debouncer.md index f4163ccd..3579c252 100644 --- a/docs/reference/classes/debouncer.md +++ b/docs/reference/classes/debouncer.md @@ -7,7 +7,7 @@ title: Debouncer # Class: Debouncer\ -Defined in: [debouncer.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L118) +Defined in: [packages/pacer/src/debouncer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L119) A class that creates a debounced function. @@ -52,7 +52,7 @@ inputElement.addEventListener('input', () => { new Debouncer(fn, initialOptions): Debouncer ``` -Defined in: [debouncer.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L125) +Defined in: [packages/pacer/src/debouncer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L126) #### Parameters @@ -76,7 +76,7 @@ Defined in: [debouncer.ts:125](https://github.com/TanStack/pacer/blob/main/packa fn: TFn; ``` -Defined in: [debouncer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L126) +Defined in: [packages/pacer/src/debouncer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L127) *** @@ -86,7 +86,7 @@ Defined in: [debouncer.ts:126](https://github.com/TanStack/pacer/blob/main/packa options: DebouncerOptions; ``` -Defined in: [debouncer.ts:122](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L122) +Defined in: [packages/pacer/src/debouncer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L123) *** @@ -96,7 +96,7 @@ Defined in: [debouncer.ts:122](https://github.com/TanStack/pacer/blob/main/packa readonly store: Store>>; ``` -Defined in: [debouncer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L119) +Defined in: [packages/pacer/src/debouncer.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L120) ## Methods @@ -106,7 +106,7 @@ Defined in: [debouncer.ts:119](https://github.com/TanStack/pacer/blob/main/packa cancel(): void ``` -Defined in: [debouncer.ts:243](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L243) +Defined in: [packages/pacer/src/debouncer.ts:246](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L246) Cancels any pending execution @@ -122,7 +122,7 @@ Cancels any pending execution flush(): void ``` -Defined in: [debouncer.ts:226](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L226) +Defined in: [packages/pacer/src/debouncer.ts:229](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L229) Processes the current pending execution immediately @@ -138,7 +138,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [debouncer.ts:184](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L184) +Defined in: [packages/pacer/src/debouncer.ts:187](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L187) Attempts to execute the debounced function If a call is already in progress, it will be queued @@ -161,7 +161,7 @@ If a call is already in progress, it will be queued reset(): void ``` -Defined in: [debouncer.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L254) +Defined in: [packages/pacer/src/debouncer.ts:257](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L257) Resets the debouncer state to its default values @@ -177,7 +177,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [debouncer.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L139) +Defined in: [packages/pacer/src/debouncer.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L140) Updates the debouncer options diff --git a/docs/reference/classes/pacereventclient.md b/docs/reference/classes/pacereventclient.md new file mode 100644 index 00000000..c9a25ca9 --- /dev/null +++ b/docs/reference/classes/pacereventclient.md @@ -0,0 +1,214 @@ +--- +id: PacerEventClient +title: PacerEventClient +--- + + + +# Class: PacerEventClient + +Defined in: [packages/pacer/src/event-client.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L26) + +## Extends + +- `EventClient`\<[`PacerEventMap`](../../interfaces/pacereventmap.md)\> + +## Constructors + +### new PacerEventClient() + +```ts +new PacerEventClient(props?): PacerEventClient +``` + +Defined in: [packages/pacer/src/event-client.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L27) + +#### Parameters + +##### props? + +###### debug + +`boolean` + +#### Returns + +[`PacerEventClient`](../pacereventclient.md) + +#### Overrides + +```ts +EventClient.constructor +``` + +## Methods + +### emit() + +```ts +emit(eventSuffix, payload): number | void +``` + +Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:24 + +#### Type Parameters + +• **TSuffix** *extends* + \| `"async-batcher-state"` + \| `"async-debouncer-state"` + \| `"async-queuer-state"` + \| `"async-rate-limiter-state"` + \| `"async-throttler-state"` + \| `"batcher-state"` + \| `"debouncer-state"` + \| `"queuer-state"` + \| `"rate-limiter-state"` + \| `"throttler-state"` + +#### Parameters + +##### eventSuffix + +`TSuffix` + +##### payload + +[`PacerEventMap`](../../interfaces/pacereventmap.md)\[`` `pacer:${TSuffix}` ``\] + +#### Returns + +`number` \| `void` + +#### Inherited from + +```ts +EventClient.emit +``` + +*** + +### getPluginId() + +```ts +getPluginId(): "pacer" +``` + +Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:22 + +#### Returns + +`"pacer"` + +#### Inherited from + +```ts +EventClient.getPluginId +``` + +*** + +### on() + +```ts +on(eventSuffix, cb): () => void +``` + +Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:25 + +#### Type Parameters + +• **TSuffix** *extends* + \| `"async-batcher-state"` + \| `"async-debouncer-state"` + \| `"async-queuer-state"` + \| `"async-rate-limiter-state"` + \| `"async-throttler-state"` + \| `"batcher-state"` + \| `"debouncer-state"` + \| `"queuer-state"` + \| `"rate-limiter-state"` + \| `"throttler-state"` + +#### Parameters + +##### eventSuffix + +`TSuffix` + +##### cb + +(`event`) => `void` + +#### Returns + +`Function` + +##### Returns + +`void` + +#### Inherited from + +```ts +EventClient.on +``` + +*** + +### onAll() + +```ts +onAll(cb): () => void +``` + +Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:26 + +#### Parameters + +##### cb + +(`event`) => `void` + +#### Returns + +`Function` + +##### Returns + +`void` + +#### Inherited from + +```ts +EventClient.onAll +``` + +*** + +### onAllPluginEvents() + +```ts +onAllPluginEvents(cb): () => void +``` + +Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:27 + +#### Parameters + +##### cb + +(`event`) => `void` + +#### Returns + +`Function` + +##### Returns + +`void` + +#### Inherited from + +```ts +EventClient.onAllPluginEvents +``` diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index 12adc38d..ce191fdb 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -7,7 +7,7 @@ title: Queuer # Class: Queuer\ -Defined in: [queuer.ts:243](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L243) +Defined in: [packages/pacer/src/queuer.ts:244](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L244) A flexible queue that processes items with configurable wait times, expiration, and priority. @@ -92,7 +92,7 @@ manualQueue.getNextItem(); // returns 2, queue is empty new Queuer(fn, initialOptions): Queuer ``` -Defined in: [queuer.ts:250](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L250) +Defined in: [packages/pacer/src/queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L251) #### Parameters @@ -116,7 +116,7 @@ Defined in: [queuer.ts:250](https://github.com/TanStack/pacer/blob/main/packages fn: (item) => void; ``` -Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L251) +Defined in: [packages/pacer/src/queuer.ts:252](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L252) #### Parameters @@ -136,7 +136,7 @@ Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages options: QueuerOptions; ``` -Defined in: [queuer.ts:247](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L247) +Defined in: [packages/pacer/src/queuer.ts:248](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L248) *** @@ -146,7 +146,7 @@ Defined in: [queuer.ts:247](https://github.com/TanStack/pacer/blob/main/packages readonly store: Store>>; ``` -Defined in: [queuer.ts:244](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L244) +Defined in: [packages/pacer/src/queuer.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L245) ## Methods @@ -159,7 +159,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [queuer.ts:364](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L364) +Defined in: [packages/pacer/src/queuer.ts:366](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L366) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -198,7 +198,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [queuer.ts:637](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L637) +Defined in: [packages/pacer/src/queuer.ts:639](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L639) Removes all pending items from the queue. Does not affect items being processed. @@ -214,7 +214,7 @@ Removes all pending items from the queue. Does not affect items being processed. execute(position?): undefined | TValue ``` -Defined in: [queuer.ts:491](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L491) +Defined in: [packages/pacer/src/queuer.ts:493](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L493) Removes and returns the next item from the queue and processes it using the provided function. @@ -243,7 +243,7 @@ queuer.execute('back'); flush(numberOfItems, position?): void ``` -Defined in: [queuer.ts:507](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L507) +Defined in: [packages/pacer/src/queuer.ts:509](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L509) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -270,7 +270,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [queuer.ts:522](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L522) +Defined in: [packages/pacer/src/queuer.ts:524](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L524) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -293,7 +293,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:444](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L444) +Defined in: [packages/pacer/src/queuer.ts:446](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L446) Removes and returns the next item from the queue without executing the function. Use for manual queue management. Normally, use execute() to process items. @@ -324,7 +324,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [queuer.ts:605](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L605) +Defined in: [packages/pacer/src/queuer.ts:607](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L607) Returns a copy of all items in the queue. @@ -340,7 +340,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:595](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L595) +Defined in: [packages/pacer/src/queuer.ts:597](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L597) Returns the next item in the queue without removing it. @@ -368,7 +368,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [queuer.ts:645](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L645) +Defined in: [packages/pacer/src/queuer.ts:647](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L647) Resets the queuer state to its default values @@ -384,7 +384,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [queuer.ts:281](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L281) +Defined in: [packages/pacer/src/queuer.ts:282](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L282) Updates the queuer options. New options are merged with existing options. @@ -406,7 +406,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [queuer.ts:612](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L612) +Defined in: [packages/pacer/src/queuer.ts:614](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L614) Starts processing items in the queue. If already isRunning, does nothing. @@ -422,7 +422,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [queuer.ts:622](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L622) +Defined in: [packages/pacer/src/queuer.ts:624](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L624) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/ratelimiter.md b/docs/reference/classes/ratelimiter.md index f5a9b71c..f45a0e9c 100644 --- a/docs/reference/classes/ratelimiter.md +++ b/docs/reference/classes/ratelimiter.md @@ -7,7 +7,7 @@ title: RateLimiter # Class: RateLimiter\ -Defined in: [rate-limiter.ts:132](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L132) +Defined in: [packages/pacer/src/rate-limiter.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L133) A class that creates a rate-limited function. @@ -65,7 +65,7 @@ rateLimiter.maybeExecute('123'); new RateLimiter(fn, initialOptions): RateLimiter ``` -Defined in: [rate-limiter.ts:138](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L138) +Defined in: [packages/pacer/src/rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L139) #### Parameters @@ -89,7 +89,7 @@ Defined in: [rate-limiter.ts:138](https://github.com/TanStack/pacer/blob/main/pa fn: TFn; ``` -Defined in: [rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L139) +Defined in: [packages/pacer/src/rate-limiter.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L140) *** @@ -99,7 +99,7 @@ Defined in: [rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/pa options: RateLimiterOptions; ``` -Defined in: [rate-limiter.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L135) +Defined in: [packages/pacer/src/rate-limiter.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L136) *** @@ -109,7 +109,7 @@ Defined in: [rate-limiter.ts:135](https://github.com/TanStack/pacer/blob/main/pa readonly store: Store>; ``` -Defined in: [rate-limiter.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L133) +Defined in: [packages/pacer/src/rate-limiter.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L134) ## Methods @@ -119,7 +119,7 @@ Defined in: [rate-limiter.ts:133](https://github.com/TanStack/pacer/blob/main/pa getMsUntilNextWindow(): number ``` -Defined in: [rate-limiter.ts:317](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L317) +Defined in: [packages/pacer/src/rate-limiter.ts:320](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L320) Returns the number of milliseconds until the next execution will be possible @@ -135,7 +135,7 @@ Returns the number of milliseconds until the next execution will be possible getRemainingInWindow(): number ``` -Defined in: [rate-limiter.ts:309](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L309) +Defined in: [packages/pacer/src/rate-limiter.ts:312](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L312) Returns the number of remaining executions allowed in the current window @@ -151,7 +151,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): boolean ``` -Defined in: [rate-limiter.ts:215](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L215) +Defined in: [packages/pacer/src/rate-limiter.ts:218](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L218) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -186,7 +186,7 @@ rateLimiter.maybeExecute('arg1', 'arg2'); // false reset(): void ``` -Defined in: [rate-limiter.ts:328](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L328) +Defined in: [packages/pacer/src/rate-limiter.ts:331](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L331) Resets the rate limiter state @@ -202,7 +202,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [rate-limiter.ts:155](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L155) +Defined in: [packages/pacer/src/rate-limiter.ts:156](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L156) Updates the rate limiter options diff --git a/docs/reference/classes/throttler.md b/docs/reference/classes/throttler.md index c81c9fba..71d90dc3 100644 --- a/docs/reference/classes/throttler.md +++ b/docs/reference/classes/throttler.md @@ -7,7 +7,7 @@ title: Throttler # Class: Throttler\ -Defined in: [throttler.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L126) +Defined in: [packages/pacer/src/throttler.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L127) A class that creates a throttled function. @@ -56,7 +56,7 @@ throttler.maybeExecute('123'); // Throttled new Throttler(fn, initialOptions): Throttler ``` -Defined in: [throttler.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L133) +Defined in: [packages/pacer/src/throttler.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L134) #### Parameters @@ -80,7 +80,7 @@ Defined in: [throttler.ts:133](https://github.com/TanStack/pacer/blob/main/packa fn: TFn; ``` -Defined in: [throttler.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L134) +Defined in: [packages/pacer/src/throttler.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L135) *** @@ -90,7 +90,7 @@ Defined in: [throttler.ts:134](https://github.com/TanStack/pacer/blob/main/packa options: ThrottlerOptions; ``` -Defined in: [throttler.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L130) +Defined in: [packages/pacer/src/throttler.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L131) *** @@ -100,7 +100,7 @@ Defined in: [throttler.ts:130](https://github.com/TanStack/pacer/blob/main/packa readonly store: Store>>; ``` -Defined in: [throttler.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L127) +Defined in: [packages/pacer/src/throttler.ts:128](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L128) ## Methods @@ -110,7 +110,7 @@ Defined in: [throttler.ts:127](https://github.com/TanStack/pacer/blob/main/packa cancel(): void ``` -Defined in: [throttler.ts:281](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L281) +Defined in: [packages/pacer/src/throttler.ts:284](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L284) Cancels any pending trailing execution and clears internal state. @@ -132,7 +132,7 @@ Has no effect if there is no pending execution. flush(): void ``` -Defined in: [throttler.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L259) +Defined in: [packages/pacer/src/throttler.ts:262](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L262) Processes the current pending execution immediately @@ -148,7 +148,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [throttler.ts:204](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L204) +Defined in: [packages/pacer/src/throttler.ts:207](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L207) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -190,7 +190,7 @@ throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [throttler.ts:292](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L292) +Defined in: [packages/pacer/src/throttler.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L295) Resets the throttler state to its default values @@ -206,7 +206,7 @@ Resets the throttler state to its default values setOptions(newOptions): void ``` -Defined in: [throttler.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L147) +Defined in: [packages/pacer/src/throttler.ts:148](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L148) Updates the throttler options diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index c97f6e49..9d6078f3 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -11,7 +11,7 @@ title: asyncBatch function asyncBatch(fn, options): (item) => void ``` -Defined in: [async-batcher.ts:440](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L440) +Defined in: [packages/pacer/src/async-batcher.ts:443](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L443) Creates an async batcher that processes items in batches diff --git a/docs/reference/functions/asyncdebounce.md b/docs/reference/functions/asyncdebounce.md index c1b269ac..2792a773 100644 --- a/docs/reference/functions/asyncdebounce.md +++ b/docs/reference/functions/asyncdebounce.md @@ -11,7 +11,7 @@ title: asyncDebounce function asyncDebounce(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-debouncer.ts:445](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L445) +Defined in: [packages/pacer/src/async-debouncer.ts:448](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L448) Creates an async debounced function that delays execution until after a specified wait time. The debounced function will only execute once the wait period has elapsed without any new calls. diff --git a/docs/reference/functions/asyncqueue.md b/docs/reference/functions/asyncqueue.md index fe62c082..ffead6df 100644 --- a/docs/reference/functions/asyncqueue.md +++ b/docs/reference/functions/asyncqueue.md @@ -11,7 +11,7 @@ title: asyncQueue function asyncQueue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [async-queuer.ts:751](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L751) +Defined in: [packages/pacer/src/async-queuer.ts:753](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L753) Creates a new AsyncQueuer instance and returns a bound addItem function for adding tasks. The queuer is started automatically and ready to process items. diff --git a/docs/reference/functions/asyncratelimit.md b/docs/reference/functions/asyncratelimit.md index 4810dfee..e85faaaa 100644 --- a/docs/reference/functions/asyncratelimit.md +++ b/docs/reference/functions/asyncratelimit.md @@ -11,7 +11,7 @@ title: asyncRateLimit function asyncRateLimit(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-rate-limiter.ts:515](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L515) +Defined in: [packages/pacer/src/async-rate-limiter.ts:518](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L518) Creates an async rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/asyncthrottle.md b/docs/reference/functions/asyncthrottle.md index 5e83fd7d..77f5c6ad 100644 --- a/docs/reference/functions/asyncthrottle.md +++ b/docs/reference/functions/asyncthrottle.md @@ -11,7 +11,7 @@ title: asyncThrottle function asyncThrottle(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-throttler.ts:478](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L478) +Defined in: [packages/pacer/src/async-throttler.ts:481](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L481) Creates an async throttled function that limits how often the function can execute. The throttled function will execute at most once per wait period, even if called multiple times. diff --git a/docs/reference/functions/batch.md b/docs/reference/functions/batch.md index 60d6b35a..78ccafbc 100644 --- a/docs/reference/functions/batch.md +++ b/docs/reference/functions/batch.md @@ -11,7 +11,7 @@ title: batch function batch(fn, options): (item) => void ``` -Defined in: [batcher.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L290) +Defined in: [packages/pacer/src/batcher.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L294) Creates a batcher that processes items in batches diff --git a/docs/reference/functions/debounce.md b/docs/reference/functions/debounce.md index e492cff1..9b932c63 100644 --- a/docs/reference/functions/debounce.md +++ b/docs/reference/functions/debounce.md @@ -11,7 +11,7 @@ title: debounce function debounce(fn, initialOptions): (...args) => void ``` -Defined in: [debouncer.ts:287](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L287) +Defined in: [packages/pacer/src/debouncer.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L290) Creates a debounced function that delays invoking the provided function until after a specified wait time. Multiple calls during the wait period will cancel previous pending invocations and reset the timer. diff --git a/docs/reference/functions/isfunction.md b/docs/reference/functions/isfunction.md index 96879e1e..9cbdfafd 100644 --- a/docs/reference/functions/isfunction.md +++ b/docs/reference/functions/isfunction.md @@ -11,7 +11,7 @@ title: isFunction function isFunction(value): value is T ``` -Defined in: [utils.ts:3](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L3) +Defined in: [packages/pacer/src/utils.ts:3](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L3) ## Type Parameters diff --git a/docs/reference/functions/parsefunctionorvalue.md b/docs/reference/functions/parsefunctionorvalue.md index 1629cd6c..7d0685c7 100644 --- a/docs/reference/functions/parsefunctionorvalue.md +++ b/docs/reference/functions/parsefunctionorvalue.md @@ -11,7 +11,7 @@ title: parseFunctionOrValue function parseFunctionOrValue(value, ...args): T ``` -Defined in: [utils.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L7) +Defined in: [packages/pacer/src/utils.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L7) ## Type Parameters diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 739c87e7..35556f2b 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [queuer.ts:688](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L688) +Defined in: [packages/pacer/src/queuer.ts:690](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L690) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. diff --git a/docs/reference/functions/ratelimit.md b/docs/reference/functions/ratelimit.md index e146efd8..0d3918b5 100644 --- a/docs/reference/functions/ratelimit.md +++ b/docs/reference/functions/ratelimit.md @@ -11,7 +11,7 @@ title: rateLimit function rateLimit(fn, initialOptions): (...args) => boolean ``` -Defined in: [rate-limiter.ts:380](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L380) +Defined in: [packages/pacer/src/rate-limiter.ts:383](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L383) Creates a rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/throttle.md b/docs/reference/functions/throttle.md index bcb11b62..d17e3390 100644 --- a/docs/reference/functions/throttle.md +++ b/docs/reference/functions/throttle.md @@ -11,7 +11,7 @@ title: throttle function throttle(fn, initialOptions): (...args) => void ``` -Defined in: [throttler.ts:331](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L331) +Defined in: [packages/pacer/src/throttler.ts:334](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L334) Creates a throttled function that limits how often the provided function can execute. diff --git a/docs/reference/index.md b/docs/reference/index.md index a592ae55..bb332f65 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -16,6 +16,7 @@ title: "@tanstack/pacer" - [AsyncThrottler](../classes/asyncthrottler.md) - [Batcher](../classes/batcher.md) - [Debouncer](../classes/debouncer.md) +- [PacerEventClient](../classes/pacereventclient.md) - [Queuer](../classes/queuer.md) - [RateLimiter](../classes/ratelimiter.md) - [Throttler](../classes/throttler.md) @@ -36,6 +37,7 @@ title: "@tanstack/pacer" - [BatcherState](../interfaces/batcherstate.md) - [DebouncerOptions](../interfaces/debounceroptions.md) - [DebouncerState](../interfaces/debouncerstate.md) +- [PacerEventMap](../interfaces/pacereventmap.md) - [QueuerOptions](../interfaces/queueroptions.md) - [QueuerState](../interfaces/queuerstate.md) - [RateLimiterOptions](../interfaces/ratelimiteroptions.md) @@ -50,6 +52,10 @@ title: "@tanstack/pacer" - [OptionalKeys](../type-aliases/optionalkeys.md) - [QueuePosition](../type-aliases/queueposition.md) +## Variables + +- [pacerEventClient](../variables/pacereventclient.md) + ## Functions - [asyncBatch](../functions/asyncbatch.md) diff --git a/docs/reference/interfaces/asyncbatcheroptions.md b/docs/reference/interfaces/asyncbatcheroptions.md index 78b35a21..2b999ffb 100644 --- a/docs/reference/interfaces/asyncbatcheroptions.md +++ b/docs/reference/interfaces/asyncbatcheroptions.md @@ -7,7 +7,7 @@ title: AsyncBatcherOptions # Interface: AsyncBatcherOptions\ -Defined in: [async-batcher.ts:81](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L81) +Defined in: [packages/pacer/src/async-batcher.ts:82](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L82) Options for configuring an AsyncBatcher instance @@ -23,7 +23,7 @@ Options for configuring an AsyncBatcher instance optional getShouldExecute: (items, batcher) => boolean; ``` -Defined in: [async-batcher.ts:86](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L86) +Defined in: [packages/pacer/src/async-batcher.ts:87](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L87) Custom function to determine if a batch should be processed Return true to process the batch immediately @@ -50,7 +50,7 @@ Return true to process the batch immediately optional initialState: Partial>; ``` -Defined in: [async-batcher.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L93) +Defined in: [packages/pacer/src/async-batcher.ts:94](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L94) Initial state for the async batcher @@ -62,7 +62,7 @@ Initial state for the async batcher optional maxSize: number; ``` -Defined in: [async-batcher.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L98) +Defined in: [packages/pacer/src/async-batcher.ts:99](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L99) Maximum number of items in a batch @@ -80,7 +80,7 @@ Infinity optional onError: (error, batch, batcher) => void; ``` -Defined in: [async-batcher.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L104) +Defined in: [packages/pacer/src/async-batcher.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L105) Optional error handler for when the batch function throws. If provided, the handler will be called with the error, the batch of items that failed, and batcher instance. @@ -112,7 +112,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onItemsChange: (batcher) => void; ``` -Defined in: [async-batcher.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L112) +Defined in: [packages/pacer/src/async-batcher.ts:113](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L113) Callback fired after items are added to the batcher @@ -134,7 +134,7 @@ Callback fired after items are added to the batcher optional onSettled: (batch, batcher) => void; ``` -Defined in: [async-batcher.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L116) +Defined in: [packages/pacer/src/async-batcher.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L117) Optional callback to call when a batch is settled (completed or failed) @@ -160,7 +160,7 @@ Optional callback to call when a batch is settled (completed or failed) optional onSuccess: (result, batch, batcher) => void; ``` -Defined in: [async-batcher.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L120) +Defined in: [packages/pacer/src/async-batcher.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L121) Optional callback to call when a batch succeeds @@ -190,7 +190,7 @@ Optional callback to call when a batch succeeds optional started: boolean; ``` -Defined in: [async-batcher.ts:129](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L129) +Defined in: [packages/pacer/src/async-batcher.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L130) Whether the batcher should start processing immediately @@ -208,7 +208,7 @@ true optional throwOnError: boolean; ``` -Defined in: [async-batcher.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L135) +Defined in: [packages/pacer/src/async-batcher.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L136) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -222,7 +222,7 @@ Can be explicitly set to override these defaults. optional wait: number | (asyncBatcher) => number; ``` -Defined in: [async-batcher.ts:142](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L142) +Defined in: [packages/pacer/src/async-batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L143) Maximum time in milliseconds to wait before processing a batch. If the wait duration has elapsed, the batch will be processed. diff --git a/docs/reference/interfaces/asyncbatcherstate.md b/docs/reference/interfaces/asyncbatcherstate.md index 6a3a6970..6b0b2ac2 100644 --- a/docs/reference/interfaces/asyncbatcherstate.md +++ b/docs/reference/interfaces/asyncbatcherstate.md @@ -7,7 +7,7 @@ title: AsyncBatcherState # Interface: AsyncBatcherState\ -Defined in: [async-batcher.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L5) +Defined in: [packages/pacer/src/async-batcher.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-batcher.ts:5](https://github.com/TanStack/pacer/blob/main/pac errorCount: number; ``` -Defined in: [async-batcher.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L9) +Defined in: [packages/pacer/src/async-batcher.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L10) Number of batch executions that have resulted in errors @@ -33,7 +33,7 @@ Number of batch executions that have resulted in errors failedItems: TValue[]; ``` -Defined in: [async-batcher.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L13) +Defined in: [packages/pacer/src/async-batcher.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L14) Array of items that failed during batch processing @@ -45,7 +45,7 @@ Array of items that failed during batch processing isEmpty: boolean; ``` -Defined in: [async-batcher.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L17) +Defined in: [packages/pacer/src/async-batcher.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L18) Whether the batcher has no items to process (items array is empty) @@ -57,7 +57,7 @@ Whether the batcher has no items to process (items array is empty) isExecuting: boolean; ``` -Defined in: [async-batcher.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L21) +Defined in: [packages/pacer/src/async-batcher.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L22) Whether a batch is currently being processed asynchronously @@ -69,7 +69,7 @@ Whether a batch is currently being processed asynchronously isPending: boolean; ``` -Defined in: [async-batcher.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L25) +Defined in: [packages/pacer/src/async-batcher.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L26) Whether the batcher is waiting for the timeout to trigger batch processing @@ -81,7 +81,7 @@ Whether the batcher is waiting for the timeout to trigger batch processing items: TValue[]; ``` -Defined in: [async-batcher.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L29) +Defined in: [packages/pacer/src/async-batcher.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L30) Array of items currently queued for batch processing @@ -93,7 +93,7 @@ Array of items currently queued for batch processing lastResult: any; ``` -Defined in: [async-batcher.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L33) +Defined in: [packages/pacer/src/async-batcher.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L34) The result from the most recent batch execution @@ -105,7 +105,7 @@ The result from the most recent batch execution settleCount: number; ``` -Defined in: [async-batcher.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L37) +Defined in: [packages/pacer/src/async-batcher.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L38) Number of batch executions that have completed (either successfully or with errors) @@ -117,7 +117,7 @@ Number of batch executions that have completed (either successfully or with erro size: number; ``` -Defined in: [async-batcher.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L41) +Defined in: [packages/pacer/src/async-batcher.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L42) Number of items currently in the batch queue @@ -129,7 +129,7 @@ Number of items currently in the batch queue status: "idle" | "pending" | "executing" | "populated"; ``` -Defined in: [async-batcher.ts:45](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L45) +Defined in: [packages/pacer/src/async-batcher.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L46) Current processing status - 'idle' when not processing, 'pending' when waiting for timeout, 'executing' when processing, 'populated' when items are present, but no wait is configured @@ -141,7 +141,7 @@ Current processing status - 'idle' when not processing, 'pending' when waiting f successCount: number; ``` -Defined in: [async-batcher.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L49) +Defined in: [packages/pacer/src/async-batcher.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L50) Number of batch executions that have completed successfully @@ -153,7 +153,7 @@ Number of batch executions that have completed successfully totalItemsFailed: number; ``` -Defined in: [async-batcher.ts:53](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L53) +Defined in: [packages/pacer/src/async-batcher.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L54) Total number of items that have failed processing across all batches @@ -165,6 +165,6 @@ Total number of items that have failed processing across all batches totalItemsProcessed: number; ``` -Defined in: [async-batcher.ts:57](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L57) +Defined in: [packages/pacer/src/async-batcher.ts:58](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L58) Total number of items that have been processed across all batches diff --git a/docs/reference/interfaces/asyncdebounceroptions.md b/docs/reference/interfaces/asyncdebounceroptions.md index b9f62cc1..cb5191ca 100644 --- a/docs/reference/interfaces/asyncdebounceroptions.md +++ b/docs/reference/interfaces/asyncdebounceroptions.md @@ -7,7 +7,7 @@ title: AsyncDebouncerOptions # Interface: AsyncDebouncerOptions\ -Defined in: [async-debouncer.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L63) +Defined in: [packages/pacer/src/async-debouncer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L64) Options for configuring an async debounced function @@ -23,7 +23,7 @@ Options for configuring an async debounced function optional enabled: boolean | (debouncer) => boolean; ``` -Defined in: [async-debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L69) +Defined in: [packages/pacer/src/async-debouncer.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L70) Whether the debouncer is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [async-debouncer.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L73) +Defined in: [packages/pacer/src/async-debouncer.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L74) Initial state for the async debouncer @@ -49,7 +49,7 @@ Initial state for the async debouncer optional leading: boolean; ``` -Defined in: [async-debouncer.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L78) +Defined in: [packages/pacer/src/async-debouncer.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L79) Whether to execute on the leading edge of the timeout. Defaults to false. @@ -62,7 +62,7 @@ Defaults to false. optional onError: (error, args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L84) +Defined in: [packages/pacer/src/async-debouncer.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L85) Optional error handler for when the debounced function throws. If provided, the handler will be called with the error and debouncer instance. @@ -94,7 +94,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:92](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L92) +Defined in: [packages/pacer/src/async-debouncer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L93) Optional callback to call when the debounced function is executed @@ -120,7 +120,7 @@ Optional callback to call when the debounced function is executed optional onSuccess: (result, args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:96](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L96) +Defined in: [packages/pacer/src/async-debouncer.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L97) Optional callback to call when the debounced function is executed @@ -150,7 +150,7 @@ Optional callback to call when the debounced function is executed optional throwOnError: boolean; ``` -Defined in: [async-debouncer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L106) +Defined in: [packages/pacer/src/async-debouncer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L107) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +164,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [async-debouncer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L111) +Defined in: [packages/pacer/src/async-debouncer.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L112) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -177,7 +177,7 @@ Defaults to true. wait: number | (debouncer) => number; ``` -Defined in: [async-debouncer.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L117) +Defined in: [packages/pacer/src/async-debouncer.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L118) Delay in milliseconds to wait after the last call before executing. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncdebouncerstate.md b/docs/reference/interfaces/asyncdebouncerstate.md index 78e91133..513b4101 100644 --- a/docs/reference/interfaces/asyncdebouncerstate.md +++ b/docs/reference/interfaces/asyncdebouncerstate.md @@ -7,7 +7,7 @@ title: AsyncDebouncerState # Interface: AsyncDebouncerState\ -Defined in: [async-debouncer.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L5) +Defined in: [packages/pacer/src/async-debouncer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-debouncer.ts:5](https://github.com/TanStack/pacer/blob/main/p canLeadingExecute: boolean; ``` -Defined in: [async-debouncer.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L9) +Defined in: [packages/pacer/src/async-debouncer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L10) Whether the debouncer can execute on the leading edge of the timeout @@ -33,7 +33,7 @@ Whether the debouncer can execute on the leading edge of the timeout errorCount: number; ``` -Defined in: [async-debouncer.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L13) +Defined in: [packages/pacer/src/async-debouncer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L14) Number of function executions that have resulted in errors @@ -45,7 +45,7 @@ Number of function executions that have resulted in errors isExecuting: boolean; ``` -Defined in: [async-debouncer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L17) +Defined in: [packages/pacer/src/async-debouncer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L18) Whether the debounced function is currently executing asynchronously @@ -57,7 +57,7 @@ Whether the debounced function is currently executing asynchronously isPending: boolean; ``` -Defined in: [async-debouncer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L21) +Defined in: [packages/pacer/src/async-debouncer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L22) Whether the debouncer is waiting for the timeout to trigger execution @@ -69,7 +69,7 @@ Whether the debouncer is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [async-debouncer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L25) +Defined in: [packages/pacer/src/async-debouncer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L26) The arguments from the most recent call to maybeExecute @@ -81,7 +81,7 @@ The arguments from the most recent call to maybeExecute lastResult: undefined | ReturnType; ``` -Defined in: [async-debouncer.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L29) +Defined in: [packages/pacer/src/async-debouncer.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L30) The result from the most recent successful function execution @@ -93,7 +93,7 @@ The result from the most recent successful function execution settleCount: number; ``` -Defined in: [async-debouncer.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L33) +Defined in: [packages/pacer/src/async-debouncer.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L34) Number of function executions that have completed (either successfully or with errors) @@ -102,10 +102,10 @@ Number of function executions that have completed (either successfully or with e ### status ```ts -status: "idle" | "pending" | "executing" | "disabled" | "settled"; +status: "disabled" | "idle" | "pending" | "executing" | "settled"; ``` -Defined in: [async-debouncer.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L37) +Defined in: [packages/pacer/src/async-debouncer.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L38) Current execution status - 'idle' when not active, 'pending' when waiting, 'executing' when running, 'settled' when completed @@ -117,6 +117,6 @@ Current execution status - 'idle' when not active, 'pending' when waiting, 'exec successCount: number; ``` -Defined in: [async-debouncer.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L41) +Defined in: [packages/pacer/src/async-debouncer.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L42) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/asyncqueueroptions.md b/docs/reference/interfaces/asyncqueueroptions.md index 92c61d43..dd99dce3 100644 --- a/docs/reference/interfaces/asyncqueueroptions.md +++ b/docs/reference/interfaces/asyncqueueroptions.md @@ -7,7 +7,7 @@ title: AsyncQueuerOptions # Interface: AsyncQueuerOptions\ -Defined in: [async-queuer.ts:94](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L94) +Defined in: [packages/pacer/src/async-queuer.ts:95](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L95) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-queuer.ts:94](https://github.com/TanStack/pacer/blob/main/pac optional addItemsTo: QueuePosition; ``` -Defined in: [async-queuer.ts:99](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L99) +Defined in: [packages/pacer/src/async-queuer.ts:100](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L100) Default position to add items to the queuer @@ -39,7 +39,7 @@ Default position to add items to the queuer optional concurrency: number | (queuer) => number; ``` -Defined in: [async-queuer.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L105) +Defined in: [packages/pacer/src/async-queuer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L106) Maximum number of concurrent tasks to process. Can be a number or a function that returns a number. @@ -58,7 +58,7 @@ Can be a number or a function that returns a number. optional expirationDuration: number; ``` -Defined in: [async-queuer.ts:110](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L110) +Defined in: [packages/pacer/src/async-queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L111) Maximum time in milliseconds that an item can stay in the queue If not provided, items will never expire @@ -71,7 +71,7 @@ If not provided, items will never expire optional getIsExpired: (item, addedAt) => boolean; ``` -Defined in: [async-queuer.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L115) +Defined in: [packages/pacer/src/async-queuer.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L116) Function to determine if an item has expired If provided, this overrides the expirationDuration behavior @@ -98,7 +98,7 @@ If provided, this overrides the expirationDuration behavior optional getItemsFrom: QueuePosition; ``` -Defined in: [async-queuer.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L120) +Defined in: [packages/pacer/src/async-queuer.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L121) Default position to get items from during processing @@ -116,7 +116,7 @@ Default position to get items from during processing optional getPriority: (item) => number; ``` -Defined in: [async-queuer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L126) +Defined in: [packages/pacer/src/async-queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L127) Function to determine priority of items in the queuer Higher priority items will be processed first @@ -140,7 +140,7 @@ If not provided, will use static priority values attached to tasks optional initialItems: TValue[]; ``` -Defined in: [async-queuer.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L130) +Defined in: [packages/pacer/src/async-queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L131) Initial items to populate the queuer with @@ -152,7 +152,7 @@ Initial items to populate the queuer with optional initialState: Partial>; ``` -Defined in: [async-queuer.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L134) +Defined in: [packages/pacer/src/async-queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L135) Initial state for the async queuer @@ -164,7 +164,7 @@ Initial state for the async queuer optional maxSize: number; ``` -Defined in: [async-queuer.ts:138](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L138) +Defined in: [packages/pacer/src/async-queuer.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L139) Maximum number of items allowed in the queuer @@ -176,7 +176,7 @@ Maximum number of items allowed in the queuer optional onError: (error, item, queuer) => void; ``` -Defined in: [async-queuer.ts:144](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L144) +Defined in: [packages/pacer/src/async-queuer.ts:145](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L145) Optional error handler for when a task throws. If provided, the handler will be called with the error and queuer instance. @@ -208,7 +208,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onExpire: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:148](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L148) +Defined in: [packages/pacer/src/async-queuer.ts:149](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L149) Callback fired whenever an item expires in the queuer @@ -234,7 +234,7 @@ Callback fired whenever an item expires in the queuer optional onItemsChange: (queuer) => void; ``` -Defined in: [async-queuer.ts:152](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L152) +Defined in: [packages/pacer/src/async-queuer.ts:153](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L153) Callback fired whenever an item is added or removed from the queuer @@ -256,7 +256,7 @@ Callback fired whenever an item is added or removed from the queuer optional onReject: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:156](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L156) +Defined in: [packages/pacer/src/async-queuer.ts:157](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L157) Callback fired whenever an item is rejected from being added to the queuer @@ -282,7 +282,7 @@ Callback fired whenever an item is rejected from being added to the queuer optional onSettled: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:160](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L160) +Defined in: [packages/pacer/src/async-queuer.ts:161](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L161) Optional callback to call when a task is settled @@ -308,7 +308,7 @@ Optional callback to call when a task is settled optional onSuccess: (result, item, queuer) => void; ``` -Defined in: [async-queuer.ts:164](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L164) +Defined in: [packages/pacer/src/async-queuer.ts:165](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L165) Optional callback to call when a task succeeds @@ -338,7 +338,7 @@ Optional callback to call when a task succeeds optional started: boolean; ``` -Defined in: [async-queuer.ts:168](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L168) +Defined in: [packages/pacer/src/async-queuer.ts:169](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L169) Whether the queuer should start processing tasks immediately or not. @@ -350,7 +350,7 @@ Whether the queuer should start processing tasks immediately or not. optional throwOnError: boolean; ``` -Defined in: [async-queuer.ts:174](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L174) +Defined in: [packages/pacer/src/async-queuer.ts:175](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L175) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -364,7 +364,7 @@ Can be explicitly set to override these defaults. optional wait: number | (queuer) => number; ``` -Defined in: [async-queuer.ts:180](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L180) +Defined in: [packages/pacer/src/async-queuer.ts:181](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L181) Time in milliseconds to wait between processing items. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncqueuerstate.md b/docs/reference/interfaces/asyncqueuerstate.md index 5edf5fa5..f7aca665 100644 --- a/docs/reference/interfaces/asyncqueuerstate.md +++ b/docs/reference/interfaces/asyncqueuerstate.md @@ -7,7 +7,7 @@ title: AsyncQueuerState # Interface: AsyncQueuerState\ -Defined in: [async-queuer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L6) +Defined in: [packages/pacer/src/async-queuer.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L7) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-queuer.ts:6](https://github.com/TanStack/pacer/blob/main/pack activeItems: TValue[]; ``` -Defined in: [async-queuer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L10) +Defined in: [packages/pacer/src/async-queuer.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L11) Items currently being processed by the queuer @@ -33,7 +33,7 @@ Items currently being processed by the queuer errorCount: number; ``` -Defined in: [async-queuer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L14) +Defined in: [packages/pacer/src/async-queuer.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L15) Number of task executions that have resulted in errors @@ -45,7 +45,7 @@ Number of task executions that have resulted in errors expirationCount: number; ``` -Defined in: [async-queuer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L18) +Defined in: [packages/pacer/src/async-queuer.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L19) Number of items that have been removed from the queue due to expiration @@ -57,7 +57,7 @@ Number of items that have been removed from the queue due to expiration isEmpty: boolean; ``` -Defined in: [async-queuer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L22) +Defined in: [packages/pacer/src/async-queuer.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L23) Whether the queuer has no items to process (items array is empty) @@ -69,7 +69,7 @@ Whether the queuer has no items to process (items array is empty) isFull: boolean; ``` -Defined in: [async-queuer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L26) +Defined in: [packages/pacer/src/async-queuer.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L27) Whether the queuer has reached its maximum capacity @@ -81,7 +81,7 @@ Whether the queuer has reached its maximum capacity isIdle: boolean; ``` -Defined in: [async-queuer.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L30) +Defined in: [packages/pacer/src/async-queuer.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L31) Whether the queuer is not currently processing any items @@ -93,7 +93,7 @@ Whether the queuer is not currently processing any items isRunning: boolean; ``` -Defined in: [async-queuer.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L34) +Defined in: [packages/pacer/src/async-queuer.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L35) Whether the queuer is active and will process items automatically @@ -105,7 +105,7 @@ Whether the queuer is active and will process items automatically items: TValue[]; ``` -Defined in: [async-queuer.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L38) +Defined in: [packages/pacer/src/async-queuer.ts:39](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L39) Array of items currently waiting to be processed @@ -117,7 +117,7 @@ Array of items currently waiting to be processed itemTimestamps: number[]; ``` -Defined in: [async-queuer.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L42) +Defined in: [packages/pacer/src/async-queuer.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L43) Timestamps when items were added to the queue for expiration tracking @@ -129,7 +129,7 @@ Timestamps when items were added to the queue for expiration tracking lastResult: any; ``` -Defined in: [async-queuer.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L46) +Defined in: [packages/pacer/src/async-queuer.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L47) The result from the most recent task execution @@ -141,7 +141,7 @@ The result from the most recent task execution pendingTick: boolean; ``` -Defined in: [async-queuer.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L50) +Defined in: [packages/pacer/src/async-queuer.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L51) Whether the queuer has a pending timeout for processing the next item @@ -153,7 +153,7 @@ Whether the queuer has a pending timeout for processing the next item rejectionCount: number; ``` -Defined in: [async-queuer.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L54) +Defined in: [packages/pacer/src/async-queuer.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L55) Number of items that have been rejected from being added to the queue @@ -165,7 +165,7 @@ Number of items that have been rejected from being added to the queue settledCount: number; ``` -Defined in: [async-queuer.ts:58](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L58) +Defined in: [packages/pacer/src/async-queuer.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L59) Number of task executions that have completed (either successfully or with errors) @@ -177,7 +177,7 @@ Number of task executions that have completed (either successfully or with error size: number; ``` -Defined in: [async-queuer.ts:62](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L62) +Defined in: [packages/pacer/src/async-queuer.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L63) Number of items currently in the queue @@ -189,7 +189,7 @@ Number of items currently in the queue status: "idle" | "running" | "stopped"; ``` -Defined in: [async-queuer.ts:66](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L66) +Defined in: [packages/pacer/src/async-queuer.ts:67](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L67) Current processing status - 'idle' when not processing, 'running' when active, 'stopped' when paused @@ -201,6 +201,6 @@ Current processing status - 'idle' when not processing, 'running' when active, ' successCount: number; ``` -Defined in: [async-queuer.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L70) +Defined in: [packages/pacer/src/async-queuer.ts:71](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L71) Number of task executions that have completed successfully diff --git a/docs/reference/interfaces/asyncratelimiteroptions.md b/docs/reference/interfaces/asyncratelimiteroptions.md index 9bb807f6..6de7abfe 100644 --- a/docs/reference/interfaces/asyncratelimiteroptions.md +++ b/docs/reference/interfaces/asyncratelimiteroptions.md @@ -7,7 +7,7 @@ title: AsyncRateLimiterOptions # Interface: AsyncRateLimiterOptions\ -Defined in: [async-rate-limiter.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L63) +Defined in: [packages/pacer/src/async-rate-limiter.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L64) Options for configuring an async rate-limited function @@ -23,7 +23,7 @@ Options for configuring an async rate-limited function optional enabled: boolean | (rateLimiter) => boolean; ``` -Defined in: [async-rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L69) +Defined in: [packages/pacer/src/async-rate-limiter.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L70) Whether the rate limiter is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [async-rate-limiter.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L73) +Defined in: [packages/pacer/src/async-rate-limiter.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L74) Initial state for the rate limiter @@ -49,7 +49,7 @@ Initial state for the rate limiter limit: number | (rateLimiter) => number; ``` -Defined in: [async-rate-limiter.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L78) +Defined in: [packages/pacer/src/async-rate-limiter.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L79) Maximum number of executions allowed within the time window. Can be a number or a function that returns a number. @@ -62,7 +62,7 @@ Can be a number or a function that returns a number. optional onError: (error, args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L84) +Defined in: [packages/pacer/src/async-rate-limiter.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L85) Optional error handler for when the rate-limited function throws. If provided, the handler will be called with the error and rate limiter instance. @@ -94,7 +94,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onReject: (args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:92](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L92) +Defined in: [packages/pacer/src/async-rate-limiter.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L93) Optional callback function that is called when an execution is rejected due to rate limiting @@ -120,7 +120,7 @@ Optional callback function that is called when an execution is rejected due to r optional onSettled: (args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:96](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L96) +Defined in: [packages/pacer/src/async-rate-limiter.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L97) Optional function to call when the rate-limited function is executed @@ -146,7 +146,7 @@ Optional function to call when the rate-limited function is executed optional onSuccess: (result, args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L103) +Defined in: [packages/pacer/src/async-rate-limiter.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L104) Optional function to call when the rate-limited function is executed @@ -176,7 +176,7 @@ Optional function to call when the rate-limited function is executed optional throwOnError: boolean; ``` -Defined in: [async-rate-limiter.ts:113](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L113) +Defined in: [packages/pacer/src/async-rate-limiter.ts:114](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L114) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -190,7 +190,7 @@ Can be explicitly set to override these defaults. window: number | (rateLimiter) => number; ``` -Defined in: [async-rate-limiter.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L118) +Defined in: [packages/pacer/src/async-rate-limiter.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L119) Time window in milliseconds within which the limit applies. Can be a number or a function that returns a number. @@ -203,7 +203,7 @@ Can be a number or a function that returns a number. optional windowType: "fixed" | "sliding"; ``` -Defined in: [async-rate-limiter.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L125) +Defined in: [packages/pacer/src/async-rate-limiter.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L126) Type of window to use for rate limiting - 'fixed': Uses a fixed window that resets after the window period diff --git a/docs/reference/interfaces/asyncratelimiterstate.md b/docs/reference/interfaces/asyncratelimiterstate.md index 8e7cc64e..dabae5fe 100644 --- a/docs/reference/interfaces/asyncratelimiterstate.md +++ b/docs/reference/interfaces/asyncratelimiterstate.md @@ -7,7 +7,7 @@ title: AsyncRateLimiterState # Interface: AsyncRateLimiterState\ -Defined in: [async-rate-limiter.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L5) +Defined in: [packages/pacer/src/async-rate-limiter.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-rate-limiter.ts:5](https://github.com/TanStack/pacer/blob/mai errorCount: number; ``` -Defined in: [async-rate-limiter.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L9) +Defined in: [packages/pacer/src/async-rate-limiter.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L10) Number of function executions that have resulted in errors @@ -33,7 +33,7 @@ Number of function executions that have resulted in errors executionTimes: number[]; ``` -Defined in: [async-rate-limiter.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L13) +Defined in: [packages/pacer/src/async-rate-limiter.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L14) Array of timestamps when executions occurred for rate limiting calculations @@ -45,7 +45,7 @@ Array of timestamps when executions occurred for rate limiting calculations isExceeded: boolean; ``` -Defined in: [async-rate-limiter.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L17) +Defined in: [packages/pacer/src/async-rate-limiter.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L18) Whether the rate limiter has exceeded the limit @@ -57,7 +57,7 @@ Whether the rate limiter has exceeded the limit isExecuting: boolean; ``` -Defined in: [async-rate-limiter.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L21) +Defined in: [packages/pacer/src/async-rate-limiter.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L22) Whether the rate-limited function is currently executing asynchronously @@ -69,7 +69,7 @@ Whether the rate-limited function is currently executing asynchronously lastResult: undefined | ReturnType; ``` -Defined in: [async-rate-limiter.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L25) +Defined in: [packages/pacer/src/async-rate-limiter.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L26) The result from the most recent successful function execution @@ -81,7 +81,7 @@ The result from the most recent successful function execution rejectionCount: number; ``` -Defined in: [async-rate-limiter.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L29) +Defined in: [packages/pacer/src/async-rate-limiter.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L30) Number of function executions that have been rejected due to rate limiting @@ -93,7 +93,7 @@ Number of function executions that have been rejected due to rate limiting settleCount: number; ``` -Defined in: [async-rate-limiter.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L33) +Defined in: [packages/pacer/src/async-rate-limiter.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L34) Number of function executions that have completed (either successfully or with errors) @@ -102,10 +102,10 @@ Number of function executions that have completed (either successfully or with e ### status ```ts -status: "idle" | "executing" | "disabled" | "exceeded"; +status: "disabled" | "idle" | "executing" | "exceeded"; ``` -Defined in: [async-rate-limiter.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L37) +Defined in: [packages/pacer/src/async-rate-limiter.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L38) Current execution status - 'disabled' when not active, 'executing' when executing, 'idle' when not executing, 'exceeded' when rate limit is exceeded @@ -117,6 +117,6 @@ Current execution status - 'disabled' when not active, 'executing' when executin successCount: number; ``` -Defined in: [async-rate-limiter.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L41) +Defined in: [packages/pacer/src/async-rate-limiter.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L42) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/asyncthrottleroptions.md b/docs/reference/interfaces/asyncthrottleroptions.md index 6bd5b084..7fa793f1 100644 --- a/docs/reference/interfaces/asyncthrottleroptions.md +++ b/docs/reference/interfaces/asyncthrottleroptions.md @@ -7,7 +7,7 @@ title: AsyncThrottlerOptions # Interface: AsyncThrottlerOptions\ -Defined in: [async-throttler.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L68) +Defined in: [packages/pacer/src/async-throttler.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L69) Options for configuring an async throttled function @@ -23,7 +23,7 @@ Options for configuring an async throttled function optional enabled: boolean | (throttler) => boolean; ``` -Defined in: [async-throttler.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L74) +Defined in: [packages/pacer/src/async-throttler.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L75) Whether the throttler is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [async-throttler.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L78) +Defined in: [packages/pacer/src/async-throttler.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L79) Initial state for the async throttler @@ -49,7 +49,7 @@ Initial state for the async throttler optional leading: boolean; ``` -Defined in: [async-throttler.ts:83](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L83) +Defined in: [packages/pacer/src/async-throttler.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L84) Whether to execute the function immediately when called Defaults to true @@ -62,7 +62,7 @@ Defaults to true optional onError: (error, args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:89](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L89) +Defined in: [packages/pacer/src/async-throttler.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L90) Optional error handler for when the throttled function throws. If provided, the handler will be called with the error and throttler instance. @@ -94,7 +94,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L97) +Defined in: [packages/pacer/src/async-throttler.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L98) Optional function to call when the throttled function is executed @@ -120,7 +120,7 @@ Optional function to call when the throttled function is executed optional onSuccess: (result, args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L104) +Defined in: [packages/pacer/src/async-throttler.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L105) Optional function to call when the throttled function is executed @@ -150,7 +150,7 @@ Optional function to call when the throttled function is executed optional throwOnError: boolean; ``` -Defined in: [async-throttler.ts:114](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L114) +Defined in: [packages/pacer/src/async-throttler.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L115) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +164,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [async-throttler.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L119) +Defined in: [packages/pacer/src/async-throttler.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L120) Whether to execute the function on the trailing edge of the wait period Defaults to true @@ -177,7 +177,7 @@ Defaults to true wait: number | (throttler) => number; ``` -Defined in: [async-throttler.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L125) +Defined in: [packages/pacer/src/async-throttler.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L126) Time window in milliseconds during which the function can only be executed once. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncthrottlerstate.md b/docs/reference/interfaces/asyncthrottlerstate.md index 148bae3c..bf3c5d98 100644 --- a/docs/reference/interfaces/asyncthrottlerstate.md +++ b/docs/reference/interfaces/asyncthrottlerstate.md @@ -7,7 +7,7 @@ title: AsyncThrottlerState # Interface: AsyncThrottlerState\ -Defined in: [async-throttler.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L5) +Defined in: [packages/pacer/src/async-throttler.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-throttler.ts:5](https://github.com/TanStack/pacer/blob/main/p errorCount: number; ``` -Defined in: [async-throttler.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L9) +Defined in: [packages/pacer/src/async-throttler.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L10) Number of function executions that have resulted in errors @@ -33,7 +33,7 @@ Number of function executions that have resulted in errors isExecuting: boolean; ``` -Defined in: [async-throttler.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L13) +Defined in: [packages/pacer/src/async-throttler.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L14) Whether the throttled function is currently executing asynchronously @@ -45,7 +45,7 @@ Whether the throttled function is currently executing asynchronously isPending: boolean; ``` -Defined in: [async-throttler.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L17) +Defined in: [packages/pacer/src/async-throttler.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L18) Whether the throttler is waiting for the timeout to trigger execution @@ -57,7 +57,7 @@ Whether the throttler is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [async-throttler.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L21) +Defined in: [packages/pacer/src/async-throttler.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L22) The arguments from the most recent call to maybeExecute @@ -69,7 +69,7 @@ The arguments from the most recent call to maybeExecute lastExecutionTime: number; ``` -Defined in: [async-throttler.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L25) +Defined in: [packages/pacer/src/async-throttler.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L26) Timestamp of the last function execution in milliseconds @@ -81,7 +81,7 @@ Timestamp of the last function execution in milliseconds lastResult: undefined | ReturnType; ``` -Defined in: [async-throttler.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L29) +Defined in: [packages/pacer/src/async-throttler.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L30) The result from the most recent successful function execution @@ -93,7 +93,7 @@ The result from the most recent successful function execution nextExecutionTime: undefined | number; ``` -Defined in: [async-throttler.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L33) +Defined in: [packages/pacer/src/async-throttler.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L34) Timestamp when the next execution can occur in milliseconds @@ -105,7 +105,7 @@ Timestamp when the next execution can occur in milliseconds settleCount: number; ``` -Defined in: [async-throttler.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L37) +Defined in: [packages/pacer/src/async-throttler.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L38) Number of function executions that have completed (either successfully or with errors) @@ -114,10 +114,10 @@ Number of function executions that have completed (either successfully or with e ### status ```ts -status: "idle" | "pending" | "executing" | "disabled" | "settled"; +status: "disabled" | "idle" | "pending" | "executing" | "settled"; ``` -Defined in: [async-throttler.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L41) +Defined in: [packages/pacer/src/async-throttler.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L42) Current execution status - 'idle' when not active, 'pending' when waiting, 'executing' when running, 'settled' when completed @@ -129,6 +129,6 @@ Current execution status - 'idle' when not active, 'pending' when waiting, 'exec successCount: number; ``` -Defined in: [async-throttler.ts:45](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L45) +Defined in: [packages/pacer/src/async-throttler.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L46) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/batcheroptions.md b/docs/reference/interfaces/batcheroptions.md index 32421ca7..9577326e 100644 --- a/docs/reference/interfaces/batcheroptions.md +++ b/docs/reference/interfaces/batcheroptions.md @@ -7,7 +7,7 @@ title: BatcherOptions # Interface: BatcherOptions\ -Defined in: [batcher.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L51) +Defined in: [packages/pacer/src/batcher.ts:52](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L52) Options for configuring a Batcher instance @@ -23,7 +23,7 @@ Options for configuring a Batcher instance optional getShouldExecute: (items, batcher) => boolean; ``` -Defined in: [batcher.ts:56](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L56) +Defined in: [packages/pacer/src/batcher.ts:57](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L57) Custom function to determine if a batch should be processed Return true to process the batch immediately @@ -50,7 +50,7 @@ Return true to process the batch immediately optional initialState: Partial>; ``` -Defined in: [batcher.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L60) +Defined in: [packages/pacer/src/batcher.ts:61](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L61) Initial state for the batcher @@ -62,7 +62,7 @@ Initial state for the batcher optional maxSize: number; ``` -Defined in: [batcher.ts:65](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L65) +Defined in: [packages/pacer/src/batcher.ts:66](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L66) Maximum number of items in a batch @@ -80,7 +80,7 @@ Infinity optional onExecute: (batch, batcher) => void; ``` -Defined in: [batcher.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L69) +Defined in: [packages/pacer/src/batcher.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L70) Callback fired after a batch is processed @@ -106,7 +106,7 @@ Callback fired after a batch is processed optional onItemsChange: (batcher) => void; ``` -Defined in: [batcher.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L73) +Defined in: [packages/pacer/src/batcher.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L74) Callback fired after items are added to the batcher @@ -128,7 +128,7 @@ Callback fired after items are added to the batcher optional started: boolean; ``` -Defined in: [batcher.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L78) +Defined in: [packages/pacer/src/batcher.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L79) Whether the batcher should start processing immediately @@ -146,7 +146,7 @@ true optional wait: number | (batcher) => number; ``` -Defined in: [batcher.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L85) +Defined in: [packages/pacer/src/batcher.ts:86](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L86) Maximum time in milliseconds to wait before processing a batch. If the wait duration has elapsed, the batch will be processed. diff --git a/docs/reference/interfaces/batcherstate.md b/docs/reference/interfaces/batcherstate.md index e76588cf..a4fba1d1 100644 --- a/docs/reference/interfaces/batcherstate.md +++ b/docs/reference/interfaces/batcherstate.md @@ -7,7 +7,7 @@ title: BatcherState # Interface: BatcherState\ -Defined in: [batcher.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L5) +Defined in: [packages/pacer/src/batcher.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [batcher.ts:5](https://github.com/TanStack/pacer/blob/main/packages/ executionCount: number; ``` -Defined in: [batcher.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L9) +Defined in: [packages/pacer/src/batcher.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L10) Number of batch executions that have been completed @@ -33,7 +33,7 @@ Number of batch executions that have been completed isEmpty: boolean; ``` -Defined in: [batcher.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L13) +Defined in: [packages/pacer/src/batcher.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L14) Whether the batcher has no items to process (items array is empty) @@ -45,7 +45,7 @@ Whether the batcher has no items to process (items array is empty) isPending: boolean; ``` -Defined in: [batcher.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L17) +Defined in: [packages/pacer/src/batcher.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L18) Whether the batcher is waiting for the timeout to trigger batch processing @@ -57,7 +57,7 @@ Whether the batcher is waiting for the timeout to trigger batch processing items: TValue[]; ``` -Defined in: [batcher.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L21) +Defined in: [packages/pacer/src/batcher.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L22) Array of items currently queued for batch processing @@ -69,7 +69,7 @@ Array of items currently queued for batch processing size: number; ``` -Defined in: [batcher.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L25) +Defined in: [packages/pacer/src/batcher.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L26) Number of items currently in the batch queue @@ -81,7 +81,7 @@ Number of items currently in the batch queue status: "idle" | "pending"; ``` -Defined in: [batcher.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L29) +Defined in: [packages/pacer/src/batcher.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L30) Current processing status - 'idle' when not processing, 'pending' when waiting for timeout @@ -93,6 +93,6 @@ Current processing status - 'idle' when not processing, 'pending' when waiting f totalItemsProcessed: number; ``` -Defined in: [batcher.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L33) +Defined in: [packages/pacer/src/batcher.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L34) Total number of items that have been processed across all batches diff --git a/docs/reference/interfaces/debounceroptions.md b/docs/reference/interfaces/debounceroptions.md index 162800ed..63fbc3d3 100644 --- a/docs/reference/interfaces/debounceroptions.md +++ b/docs/reference/interfaces/debounceroptions.md @@ -7,7 +7,7 @@ title: DebouncerOptions # Interface: DebouncerOptions\ -Defined in: [debouncer.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L43) +Defined in: [packages/pacer/src/debouncer.ts:44](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L44) Options for configuring a debounced function @@ -23,7 +23,7 @@ Options for configuring a debounced function optional enabled: boolean | (debouncer) => boolean; ``` -Defined in: [debouncer.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L49) +Defined in: [packages/pacer/src/debouncer.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L50) Whether the debouncer is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [debouncer.ts:53](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L53) +Defined in: [packages/pacer/src/debouncer.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L54) Initial state for the debouncer @@ -49,7 +49,7 @@ Initial state for the debouncer optional leading: boolean; ``` -Defined in: [debouncer.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L59) +Defined in: [packages/pacer/src/debouncer.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L60) Whether to execute on the leading edge of the timeout. The first call will execute immediately and the rest will wait the delay. @@ -63,7 +63,7 @@ Defaults to false. optional onExecute: (args, debouncer) => void; ``` -Defined in: [debouncer.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L63) +Defined in: [packages/pacer/src/debouncer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L64) Callback function that is called after the function is executed @@ -89,7 +89,7 @@ Callback function that is called after the function is executed optional trailing: boolean; ``` -Defined in: [debouncer.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L68) +Defined in: [packages/pacer/src/debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L69) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -102,7 +102,7 @@ Defaults to true. wait: number | (debouncer) => number; ``` -Defined in: [debouncer.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L74) +Defined in: [packages/pacer/src/debouncer.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L75) Delay in milliseconds before executing the function. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/debouncerstate.md b/docs/reference/interfaces/debouncerstate.md index 3b2a70a4..5cabe467 100644 --- a/docs/reference/interfaces/debouncerstate.md +++ b/docs/reference/interfaces/debouncerstate.md @@ -7,7 +7,7 @@ title: DebouncerState # Interface: DebouncerState\ -Defined in: [debouncer.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L5) +Defined in: [packages/pacer/src/debouncer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [debouncer.ts:5](https://github.com/TanStack/pacer/blob/main/package canLeadingExecute: boolean; ``` -Defined in: [debouncer.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L9) +Defined in: [packages/pacer/src/debouncer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L10) Whether the debouncer can execute on the leading edge of the timeout @@ -33,7 +33,7 @@ Whether the debouncer can execute on the leading edge of the timeout executionCount: number; ``` -Defined in: [debouncer.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L13) +Defined in: [packages/pacer/src/debouncer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L14) Number of function executions that have been completed @@ -45,7 +45,7 @@ Number of function executions that have been completed isPending: boolean; ``` -Defined in: [debouncer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L17) +Defined in: [packages/pacer/src/debouncer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L18) Whether the debouncer is waiting for the timeout to trigger execution @@ -57,7 +57,7 @@ Whether the debouncer is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [debouncer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L21) +Defined in: [packages/pacer/src/debouncer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L22) The arguments from the most recent call to maybeExecute @@ -66,9 +66,9 @@ The arguments from the most recent call to maybeExecute ### status ```ts -status: "idle" | "pending" | "disabled"; +status: "disabled" | "idle" | "pending"; ``` -Defined in: [debouncer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L25) +Defined in: [packages/pacer/src/debouncer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L26) Current execution status - 'idle' when not active, 'pending' when waiting for timeout diff --git a/docs/reference/interfaces/pacereventmap.md b/docs/reference/interfaces/pacereventmap.md new file mode 100644 index 00000000..24757832 --- /dev/null +++ b/docs/reference/interfaces/pacereventmap.md @@ -0,0 +1,110 @@ +--- +id: PacerEventMap +title: PacerEventMap +--- + + + +# Interface: PacerEventMap + +Defined in: [packages/pacer/src/event-client.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L13) + +## Properties + +### pacer:async-batcher-state + +```ts +pacer:async-batcher-state: AsyncBatcherState; +``` + +Defined in: [packages/pacer/src/event-client.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L14) + +*** + +### pacer:async-debouncer-state + +```ts +pacer:async-debouncer-state: AsyncDebouncerState; +``` + +Defined in: [packages/pacer/src/event-client.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L15) + +*** + +### pacer:async-queuer-state + +```ts +pacer:async-queuer-state: AsyncQueuerState; +``` + +Defined in: [packages/pacer/src/event-client.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L16) + +*** + +### pacer:async-rate-limiter-state + +```ts +pacer:async-rate-limiter-state: AsyncRateLimiterState; +``` + +Defined in: [packages/pacer/src/event-client.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L17) + +*** + +### pacer:async-throttler-state + +```ts +pacer:async-throttler-state: AsyncThrottlerState; +``` + +Defined in: [packages/pacer/src/event-client.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L18) + +*** + +### pacer:batcher-state + +```ts +pacer:batcher-state: BatcherState; +``` + +Defined in: [packages/pacer/src/event-client.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L19) + +*** + +### pacer:debouncer-state + +```ts +pacer:debouncer-state: DebouncerState; +``` + +Defined in: [packages/pacer/src/event-client.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L20) + +*** + +### pacer:queuer-state + +```ts +pacer:queuer-state: QueuerState; +``` + +Defined in: [packages/pacer/src/event-client.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L21) + +*** + +### pacer:rate-limiter-state + +```ts +pacer:rate-limiter-state: RateLimiterState; +``` + +Defined in: [packages/pacer/src/event-client.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L22) + +*** + +### pacer:throttler-state + +```ts +pacer:throttler-state: ThrottlerState; +``` + +Defined in: [packages/pacer/src/event-client.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L23) diff --git a/docs/reference/interfaces/queueroptions.md b/docs/reference/interfaces/queueroptions.md index 00d47952..8e2ab82f 100644 --- a/docs/reference/interfaces/queueroptions.md +++ b/docs/reference/interfaces/queueroptions.md @@ -7,7 +7,7 @@ title: QueuerOptions # Interface: QueuerOptions\ -Defined in: [queuer.ts:77](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L77) +Defined in: [packages/pacer/src/queuer.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L78) Options for configuring a Queuer instance. @@ -25,7 +25,7 @@ These options control queue behavior, item expiration, callbacks, and more. optional addItemsTo: QueuePosition; ``` -Defined in: [queuer.ts:82](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L82) +Defined in: [packages/pacer/src/queuer.ts:83](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L83) Default position to add items to the queuer @@ -43,7 +43,7 @@ Default position to add items to the queuer optional expirationDuration: number; ``` -Defined in: [queuer.ts:87](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L87) +Defined in: [packages/pacer/src/queuer.ts:88](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L88) Maximum time in milliseconds that an item can stay in the queue If not provided, items will never expire @@ -56,7 +56,7 @@ If not provided, items will never expire optional getIsExpired: (item, addedAt) => boolean; ``` -Defined in: [queuer.ts:92](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L92) +Defined in: [packages/pacer/src/queuer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L93) Function to determine if an item has expired If provided, this overrides the expirationDuration behavior @@ -83,7 +83,7 @@ If provided, this overrides the expirationDuration behavior optional getItemsFrom: QueuePosition; ``` -Defined in: [queuer.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L97) +Defined in: [packages/pacer/src/queuer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L98) Default position to get items from during processing @@ -101,7 +101,7 @@ Default position to get items from during processing optional getPriority: (item) => number; ``` -Defined in: [queuer.ts:102](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L102) +Defined in: [packages/pacer/src/queuer.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L103) Function to determine priority of items in the queuer Higher priority items will be processed first @@ -124,7 +124,7 @@ Higher priority items will be processed first optional initialItems: TValue[]; ``` -Defined in: [queuer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L106) +Defined in: [packages/pacer/src/queuer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L107) Initial items to populate the queuer with @@ -136,7 +136,7 @@ Initial items to populate the queuer with optional initialState: Partial>; ``` -Defined in: [queuer.ts:110](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L110) +Defined in: [packages/pacer/src/queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L111) Initial state for the queuer @@ -148,7 +148,7 @@ Initial state for the queuer optional maxSize: number; ``` -Defined in: [queuer.ts:114](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L114) +Defined in: [packages/pacer/src/queuer.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L115) Maximum number of items allowed in the queuer @@ -160,7 +160,7 @@ Maximum number of items allowed in the queuer optional onExecute: (item, queuer) => void; ``` -Defined in: [queuer.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L118) +Defined in: [packages/pacer/src/queuer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L119) Callback fired whenever an item is removed from the queuer @@ -186,7 +186,7 @@ Callback fired whenever an item is removed from the queuer optional onExpire: (item, queuer) => void; ``` -Defined in: [queuer.ts:122](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L122) +Defined in: [packages/pacer/src/queuer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L123) Callback fired whenever an item expires in the queuer @@ -212,7 +212,7 @@ Callback fired whenever an item expires in the queuer optional onItemsChange: (queuer) => void; ``` -Defined in: [queuer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L126) +Defined in: [packages/pacer/src/queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L127) Callback fired whenever an item is added or removed from the queuer @@ -234,7 +234,7 @@ Callback fired whenever an item is added or removed from the queuer optional onReject: (item, queuer) => void; ``` -Defined in: [queuer.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L130) +Defined in: [packages/pacer/src/queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L131) Callback fired whenever an item is rejected from being added to the queuer @@ -260,7 +260,7 @@ Callback fired whenever an item is rejected from being added to the queuer optional started: boolean; ``` -Defined in: [queuer.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L134) +Defined in: [packages/pacer/src/queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L135) Whether the queuer should start processing tasks immediately @@ -272,7 +272,7 @@ Whether the queuer should start processing tasks immediately optional wait: number | (queuer) => number; ``` -Defined in: [queuer.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L140) +Defined in: [packages/pacer/src/queuer.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L141) Time in milliseconds to wait between processing items. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/queuerstate.md b/docs/reference/interfaces/queuerstate.md index fda09691..accb2e89 100644 --- a/docs/reference/interfaces/queuerstate.md +++ b/docs/reference/interfaces/queuerstate.md @@ -7,7 +7,7 @@ title: QueuerState # Interface: QueuerState\ -Defined in: [queuer.ts:4](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L4) +Defined in: [packages/pacer/src/queuer.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L5) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [queuer.ts:4](https://github.com/TanStack/pacer/blob/main/packages/p executionCount: number; ``` -Defined in: [queuer.ts:8](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L8) +Defined in: [packages/pacer/src/queuer.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L9) Number of items that have been processed by the queuer @@ -33,7 +33,7 @@ Number of items that have been processed by the queuer expirationCount: number; ``` -Defined in: [queuer.ts:12](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L12) +Defined in: [packages/pacer/src/queuer.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L13) Number of items that have been removed from the queue due to expiration @@ -45,7 +45,7 @@ Number of items that have been removed from the queue due to expiration isEmpty: boolean; ``` -Defined in: [queuer.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L16) +Defined in: [packages/pacer/src/queuer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L17) Whether the queuer has no items to process (items array is empty) @@ -57,7 +57,7 @@ Whether the queuer has no items to process (items array is empty) isFull: boolean; ``` -Defined in: [queuer.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L20) +Defined in: [packages/pacer/src/queuer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L21) Whether the queuer has reached its maximum capacity @@ -69,7 +69,7 @@ Whether the queuer has reached its maximum capacity isIdle: boolean; ``` -Defined in: [queuer.ts:24](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L24) +Defined in: [packages/pacer/src/queuer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L25) Whether the queuer is not currently processing any items @@ -81,7 +81,7 @@ Whether the queuer is not currently processing any items isRunning: boolean; ``` -Defined in: [queuer.ts:28](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L28) +Defined in: [packages/pacer/src/queuer.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L29) Whether the queuer is active and will process items automatically @@ -93,7 +93,7 @@ Whether the queuer is active and will process items automatically items: TValue[]; ``` -Defined in: [queuer.ts:32](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L32) +Defined in: [packages/pacer/src/queuer.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L33) Array of items currently waiting to be processed @@ -105,7 +105,7 @@ Array of items currently waiting to be processed itemTimestamps: number[]; ``` -Defined in: [queuer.ts:36](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L36) +Defined in: [packages/pacer/src/queuer.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L37) Timestamps when items were added to the queue for expiration tracking @@ -117,7 +117,7 @@ Timestamps when items were added to the queue for expiration tracking pendingTick: boolean; ``` -Defined in: [queuer.ts:40](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L40) +Defined in: [packages/pacer/src/queuer.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L41) Whether the queuer has a pending timeout for processing the next item @@ -129,7 +129,7 @@ Whether the queuer has a pending timeout for processing the next item rejectionCount: number; ``` -Defined in: [queuer.ts:44](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L44) +Defined in: [packages/pacer/src/queuer.ts:45](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L45) Number of items that have been rejected from being added to the queue @@ -141,7 +141,7 @@ Number of items that have been rejected from being added to the queue size: number; ``` -Defined in: [queuer.ts:48](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L48) +Defined in: [packages/pacer/src/queuer.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L49) Number of items currently in the queue @@ -153,6 +153,6 @@ Number of items currently in the queue status: "idle" | "running" | "stopped"; ``` -Defined in: [queuer.ts:52](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L52) +Defined in: [packages/pacer/src/queuer.ts:53](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L53) Current processing status - 'idle' when not processing, 'running' when active, 'stopped' when paused diff --git a/docs/reference/interfaces/ratelimiteroptions.md b/docs/reference/interfaces/ratelimiteroptions.md index 479f6033..c435536f 100644 --- a/docs/reference/interfaces/ratelimiteroptions.md +++ b/docs/reference/interfaces/ratelimiteroptions.md @@ -7,7 +7,7 @@ title: RateLimiterOptions # Interface: RateLimiterOptions\ -Defined in: [rate-limiter.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L41) +Defined in: [packages/pacer/src/rate-limiter.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L42) Options for configuring a rate-limited function @@ -23,7 +23,7 @@ Options for configuring a rate-limited function optional enabled: boolean | (rateLimiter) => boolean; ``` -Defined in: [rate-limiter.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L46) +Defined in: [packages/pacer/src/rate-limiter.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L47) Whether the rate limiter is enabled. When disabled, maybeExecute will not trigger any executions. Defaults to true. @@ -36,7 +36,7 @@ Defaults to true. optional initialState: Partial; ``` -Defined in: [rate-limiter.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L50) +Defined in: [packages/pacer/src/rate-limiter.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L51) Initial state for the rate limiter @@ -48,7 +48,7 @@ Initial state for the rate limiter limit: number | (rateLimiter) => number; ``` -Defined in: [rate-limiter.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L55) +Defined in: [packages/pacer/src/rate-limiter.ts:56](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L56) Maximum number of executions allowed within the time window. Can be a number or a callback function that receives the rate limiter instance and returns a number. @@ -61,7 +61,7 @@ Can be a number or a callback function that receives the rate limiter instance a optional onExecute: (args, rateLimiter) => void; ``` -Defined in: [rate-limiter.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L59) +Defined in: [packages/pacer/src/rate-limiter.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L60) Callback function that is called after the function is executed @@ -87,7 +87,7 @@ Callback function that is called after the function is executed optional onReject: (rateLimiter) => void; ``` -Defined in: [rate-limiter.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L63) +Defined in: [packages/pacer/src/rate-limiter.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L64) Optional callback function that is called when an execution is rejected due to rate limiting @@ -109,7 +109,7 @@ Optional callback function that is called when an execution is rejected due to r window: number | (rateLimiter) => number; ``` -Defined in: [rate-limiter.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L68) +Defined in: [packages/pacer/src/rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L69) Time window in milliseconds within which the limit applies. Can be a number or a callback function that receives the rate limiter instance and returns a number. @@ -122,7 +122,7 @@ Can be a number or a callback function that receives the rate limiter instance a optional windowType: "fixed" | "sliding"; ``` -Defined in: [rate-limiter.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L75) +Defined in: [packages/pacer/src/rate-limiter.ts:76](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L76) Type of window to use for rate limiting - 'fixed': Uses a fixed window that resets after the window period diff --git a/docs/reference/interfaces/ratelimiterstate.md b/docs/reference/interfaces/ratelimiterstate.md index bb165047..05b9bef8 100644 --- a/docs/reference/interfaces/ratelimiterstate.md +++ b/docs/reference/interfaces/ratelimiterstate.md @@ -7,7 +7,7 @@ title: RateLimiterState # Interface: RateLimiterState -Defined in: [rate-limiter.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L5) +Defined in: [packages/pacer/src/rate-limiter.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L6) ## Properties @@ -17,7 +17,7 @@ Defined in: [rate-limiter.ts:5](https://github.com/TanStack/pacer/blob/main/pack executionCount: number; ``` -Defined in: [rate-limiter.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L9) +Defined in: [packages/pacer/src/rate-limiter.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L10) Number of function executions that have been completed @@ -29,7 +29,7 @@ Number of function executions that have been completed executionTimes: number[]; ``` -Defined in: [rate-limiter.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L13) +Defined in: [packages/pacer/src/rate-limiter.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L14) Array of timestamps when executions occurred for rate limiting calculations @@ -41,7 +41,7 @@ Array of timestamps when executions occurred for rate limiting calculations isExceeded: boolean; ``` -Defined in: [rate-limiter.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L17) +Defined in: [packages/pacer/src/rate-limiter.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L18) Whether the rate limiter has exceeded the limit @@ -53,7 +53,7 @@ Whether the rate limiter has exceeded the limit rejectionCount: number; ``` -Defined in: [rate-limiter.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L21) +Defined in: [packages/pacer/src/rate-limiter.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L22) Number of function executions that have been rejected due to rate limiting @@ -62,9 +62,9 @@ Number of function executions that have been rejected due to rate limiting ### status ```ts -status: "idle" | "disabled" | "exceeded"; +status: "disabled" | "idle" | "exceeded"; ``` -Defined in: [rate-limiter.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L25) +Defined in: [packages/pacer/src/rate-limiter.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L26) Current execution status - 'disabled' when not active, 'executing' when executing, 'idle' when not executing, 'exceeded' when rate limit is exceeded diff --git a/docs/reference/interfaces/throttleroptions.md b/docs/reference/interfaces/throttleroptions.md index aa45a5ef..43e3c376 100644 --- a/docs/reference/interfaces/throttleroptions.md +++ b/docs/reference/interfaces/throttleroptions.md @@ -7,7 +7,7 @@ title: ThrottlerOptions # Interface: ThrottlerOptions\ -Defined in: [throttler.ts:48](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L48) +Defined in: [packages/pacer/src/throttler.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L49) Options for configuring a throttled function @@ -23,7 +23,7 @@ Options for configuring a throttled function optional enabled: boolean | (throttler) => boolean; ``` -Defined in: [throttler.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L54) +Defined in: [packages/pacer/src/throttler.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L55) Whether the throttler is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [throttler.ts:58](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L58) +Defined in: [packages/pacer/src/throttler.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L59) Initial state for the throttler @@ -49,7 +49,7 @@ Initial state for the throttler optional leading: boolean; ``` -Defined in: [throttler.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L63) +Defined in: [packages/pacer/src/throttler.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L64) Whether to execute on the leading edge of the timeout. Defaults to true. @@ -62,7 +62,7 @@ Defaults to true. optional onExecute: (args, throttler) => void; ``` -Defined in: [throttler.ts:67](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L67) +Defined in: [packages/pacer/src/throttler.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L68) Callback function that is called after the function is executed @@ -88,7 +88,7 @@ Callback function that is called after the function is executed optional trailing: boolean; ``` -Defined in: [throttler.ts:72](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L72) +Defined in: [packages/pacer/src/throttler.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L73) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -101,7 +101,7 @@ Defaults to true. wait: number | (throttler) => number; ``` -Defined in: [throttler.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L78) +Defined in: [packages/pacer/src/throttler.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L79) Time window in milliseconds during which the function can only be executed once. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/throttlerstate.md b/docs/reference/interfaces/throttlerstate.md index d2c4a654..e10d6d0a 100644 --- a/docs/reference/interfaces/throttlerstate.md +++ b/docs/reference/interfaces/throttlerstate.md @@ -7,7 +7,7 @@ title: ThrottlerState # Interface: ThrottlerState\ -Defined in: [throttler.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L5) +Defined in: [packages/pacer/src/throttler.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [throttler.ts:5](https://github.com/TanStack/pacer/blob/main/package executionCount: number; ``` -Defined in: [throttler.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L9) +Defined in: [packages/pacer/src/throttler.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L10) Number of function executions that have been completed @@ -33,7 +33,7 @@ Number of function executions that have been completed isPending: boolean; ``` -Defined in: [throttler.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L13) +Defined in: [packages/pacer/src/throttler.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L14) Whether the throttler is waiting for the timeout to trigger execution @@ -45,7 +45,7 @@ Whether the throttler is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [throttler.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L17) +Defined in: [packages/pacer/src/throttler.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L18) The arguments from the most recent call to maybeExecute @@ -57,7 +57,7 @@ The arguments from the most recent call to maybeExecute lastExecutionTime: number; ``` -Defined in: [throttler.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L21) +Defined in: [packages/pacer/src/throttler.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L22) Timestamp of the last function execution in milliseconds @@ -69,7 +69,7 @@ Timestamp of the last function execution in milliseconds nextExecutionTime: undefined | number; ``` -Defined in: [throttler.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L25) +Defined in: [packages/pacer/src/throttler.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L26) Timestamp when the next execution can occur in milliseconds @@ -78,9 +78,9 @@ Timestamp when the next execution can occur in milliseconds ### status ```ts -status: "idle" | "pending" | "disabled"; +status: "disabled" | "idle" | "pending"; ``` -Defined in: [throttler.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L29) +Defined in: [packages/pacer/src/throttler.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L30) Current execution status - 'idle' when not active, 'pending' when waiting for timeout diff --git a/docs/reference/type-aliases/anyasyncfunction.md b/docs/reference/type-aliases/anyasyncfunction.md index 19b6a17d..8d277867 100644 --- a/docs/reference/type-aliases/anyasyncfunction.md +++ b/docs/reference/type-aliases/anyasyncfunction.md @@ -11,7 +11,7 @@ title: AnyAsyncFunction type AnyAsyncFunction = (...args) => Promise; ``` -Defined in: [types.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L9) +Defined in: [packages/pacer/src/types.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L9) Represents an asynchronous function that can be called with any arguments and returns a promise. diff --git a/docs/reference/type-aliases/anyfunction.md b/docs/reference/type-aliases/anyfunction.md index 039ac0e6..a05f98cc 100644 --- a/docs/reference/type-aliases/anyfunction.md +++ b/docs/reference/type-aliases/anyfunction.md @@ -11,7 +11,7 @@ title: AnyFunction type AnyFunction = (...args) => any; ``` -Defined in: [types.ts:4](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L4) +Defined in: [packages/pacer/src/types.ts:4](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L4) Represents a function that can be called with any arguments and returns any value. diff --git a/docs/reference/type-aliases/optionalkeys.md b/docs/reference/type-aliases/optionalkeys.md index e09cbfd2..f35b429c 100644 --- a/docs/reference/type-aliases/optionalkeys.md +++ b/docs/reference/type-aliases/optionalkeys.md @@ -11,7 +11,7 @@ title: OptionalKeys type OptionalKeys = Omit & Partial>; ``` -Defined in: [types.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L11) +Defined in: [packages/pacer/src/types.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L11) ## Type Parameters diff --git a/docs/reference/type-aliases/queueposition.md b/docs/reference/type-aliases/queueposition.md index 4bd7fef2..0e1000a2 100644 --- a/docs/reference/type-aliases/queueposition.md +++ b/docs/reference/type-aliases/queueposition.md @@ -11,7 +11,7 @@ title: QueuePosition type QueuePosition = "front" | "back"; ``` -Defined in: [queuer.ts:169](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L169) +Defined in: [packages/pacer/src/queuer.ts:170](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L170) Position type for addItem and getNextItem operations. diff --git a/docs/reference/variables/pacereventclient.md b/docs/reference/variables/pacereventclient.md new file mode 100644 index 00000000..a6659a46 --- /dev/null +++ b/docs/reference/variables/pacereventclient.md @@ -0,0 +1,14 @@ +--- +id: pacerEventClient +title: pacerEventClient +--- + + + +# Variable: pacerEventClient + +```ts +const pacerEventClient: PacerEventClient; +``` + +Defined in: [packages/pacer/src/event-client.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L35) diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index fbf100a9..01d48f25 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -33,4 +33,4 @@ "last 1 safari version" ] } -} \ No newline at end of file +} diff --git a/examples/react/queue/src/index.tsx b/examples/react/queue/src/index.tsx index 36f2921c..d1aace63 100644 --- a/examples/react/queue/src/index.tsx +++ b/examples/react/queue/src/index.tsx @@ -1,7 +1,7 @@ import { useCallback, useState } from 'react' import ReactDOM from 'react-dom/client' -import { PacerDevtoolsPanel } from "@tanstack/pacer-react-devtools" -import { TanstackDevtools } from "@tanstack/react-devtools" +import { PacerDevtoolsPanel } from '@tanstack/pacer-react-devtools' +import { TanstackDevtools } from '@tanstack/react-devtools' import { queue } from '@tanstack/react-pacer/queuer' function App1() { @@ -213,10 +213,11 @@ root.render(
- } - ]} /> + }]} + />
, ) diff --git a/package.json b/package.json index 9629cf10..b8ea335a 100644 --- a/package.json +++ b/package.json @@ -84,4 +84,4 @@ "@tanstack/pacer-solid-devtools": "workspace:*", "@tanstack/pacer-react-devtools": "workspace:*" } -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 771738de..76e56a33 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -66,4 +66,4 @@ "devDependencies": { "vite-plugin-solid": "^2.11.6" } -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/context/context-provider.tsx index da3fb154..5be12b52 100644 --- a/packages/pacer-devtools/src/context/context-provider.tsx +++ b/packages/pacer-devtools/src/context/context-provider.tsx @@ -1,52 +1,48 @@ - - -import { createStore } from "solid-js/store" -import { createEffect, onCleanup } from "solid-js" -import { pacerEventClient } from "@tanstack/pacer" -import { PacerContext, initialStore, } from "./context" -import type { PacerContextType } from "./context" +import { createStore } from 'solid-js/store' +import { createEffect, onCleanup } from 'solid-js' +import { pacerEventClient } from '@tanstack/pacer' +import { PacerContext, initialStore } from './context' +import type { PacerContextType } from './context' export function PacerContextProvider(props: { children: any }) { const [store, setStore] = createStore(initialStore) const updateStore = (newState: Partial) => { - setStore((prev) => ({ ...prev, ...newState })) } createEffect(() => { - const cleanup = pacerEventClient.onAllPluginEvents(e => { + const cleanup = pacerEventClient.onAllPluginEvents((e) => { switch (e.type) { - case "pacer:async-batcher-state": + case 'pacer:async-batcher-state': updateStore({ asyncBatcherState: e.payload }) - break; - case "pacer:async-debouncer-state": + break + case 'pacer:async-debouncer-state': updateStore({ asyncDebouncerState: e.payload }) - break; - case "pacer:async-queuer-state": + break + case 'pacer:async-queuer-state': updateStore({ asyncQueuerState: e.payload }) - break; - case "pacer:async-rate-limiter-state": + break + case 'pacer:async-rate-limiter-state': updateStore({ asyncRateLimiterState: e.payload }) - break; - case "pacer:async-throttler-state": + break + case 'pacer:async-throttler-state': updateStore({ asyncThrottlerState: e.payload }) - break; - case "pacer:batcher-state": + break + case 'pacer:batcher-state': updateStore({ batcherState: e.payload }) - break; - case "pacer:debouncer-state": + break + case 'pacer:debouncer-state': updateStore({ debouncerState: e.payload }) - break; - case "pacer:queuer-state": + break + case 'pacer:queuer-state': updateStore({ queuerState: e.payload }) - break; - case "pacer:rate-limiter-state": + break + case 'pacer:rate-limiter-state': updateStore({ rateLimiterState: e.payload }) - break; - case "pacer:throttler-state": + break + case 'pacer:throttler-state': updateStore({ throttlerState: e.payload }) - break; + break } - }) onCleanup(cleanup) }) @@ -56,5 +52,3 @@ export function PacerContextProvider(props: { children: any }) { ) } - - diff --git a/packages/pacer-devtools/src/context/context.ts b/packages/pacer-devtools/src/context/context.ts index ff1d9460..e2aac766 100644 --- a/packages/pacer-devtools/src/context/context.ts +++ b/packages/pacer-devtools/src/context/context.ts @@ -1,6 +1,16 @@ - -import { createContext } from "solid-js"; -import type { AsyncBatcherState, AsyncDebouncerState, AsyncQueuerState, AsyncRateLimiterState, AsyncThrottlerState, BatcherState, DebouncerState, QueuerState, RateLimiterState, ThrottlerState } from "@tanstack/pacer"; +import { createContext } from 'solid-js' +import type { + AsyncBatcherState, + AsyncDebouncerState, + AsyncQueuerState, + AsyncRateLimiterState, + AsyncThrottlerState, + BatcherState, + DebouncerState, + QueuerState, + RateLimiterState, + ThrottlerState, +} from '@tanstack/pacer' export interface PacerContextType { asyncBatcherState: AsyncBatcherState | undefined @@ -25,7 +35,9 @@ export const initialStore = { debouncerState: undefined, queuerState: undefined, rateLimiterState: undefined, - throttlerState: undefined + throttlerState: undefined, } -export const PacerContext = createContext<[PacerContextType, (newState: Partial) => void]>([initialStore, () => { }]) +export const PacerContext = createContext< + [PacerContextType, (newState: Partial) => void] +>([initialStore, () => {}]) diff --git a/packages/pacer-devtools/src/context/use-context-hooks.ts b/packages/pacer-devtools/src/context/use-context-hooks.ts index d25ac386..995dd54c 100644 --- a/packages/pacer-devtools/src/context/use-context-hooks.ts +++ b/packages/pacer-devtools/src/context/use-context-hooks.ts @@ -1,5 +1,5 @@ -import { useContext } from "solid-js" -import { PacerContext } from "./context" +import { useContext } from 'solid-js' +import { PacerContext } from './context' export const usePacerContext = () => { const context = useContext(PacerContext) @@ -10,4 +10,4 @@ export const usePacerContext = () => { export const usePacerState = () => { const [state] = usePacerContext() return state -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/src/core.tsx b/packages/pacer-devtools/src/core.tsx index 73304cac..af026f1c 100644 --- a/packages/pacer-devtools/src/core.tsx +++ b/packages/pacer-devtools/src/core.tsx @@ -1,17 +1,14 @@ import { lazy } from 'solid-js' import { Portal, render } from 'solid-js/web' -export interface PacerDevtoolsInit { - -} +export interface PacerDevtoolsInit {} export class PacerDevtoolsCore { #isMounted = false #dispose?: () => void #Component: any - - constructor(_init?: PacerDevtoolsInit | undefined) { } + constructor(_init?: PacerDevtoolsInit | undefined) {} mount(el: T) { if (this.#isMounted) { diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx index a6cafe54..3daff91e 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/devtools.tsx @@ -1,6 +1,5 @@ - -import { usePacerState } from "./context/use-context-hooks" -import { PacerContextProvider } from "./context/context-provider" +import { usePacerState } from './context/use-context-hooks' +import { PacerContextProvider } from './context/context-provider' function Shell() { const state = usePacerState() @@ -18,4 +17,4 @@ export default function Devtools() { ) -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/src/index.ts b/packages/pacer-devtools/src/index.ts index 3b1603f1..e5a55ba4 100644 --- a/packages/pacer-devtools/src/index.ts +++ b/packages/pacer-devtools/src/index.ts @@ -1,2 +1,2 @@ -export { PacerDevtoolsCore } from "./core" -export type { PacerDevtoolsInit } from "./core" \ No newline at end of file +export { PacerDevtoolsCore } from './core' +export type { PacerDevtoolsInit } from './core' diff --git a/packages/pacer-devtools/tsconfig.json b/packages/pacer-devtools/tsconfig.json index 4add0559..3ee4c951 100644 --- a/packages/pacer-devtools/tsconfig.json +++ b/packages/pacer-devtools/tsconfig.json @@ -3,6 +3,6 @@ "include": ["src", "eslint.config.js", "vite.config.ts", "tests"], "compilerOptions": { "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "solid-js" } } diff --git a/packages/pacer-devtools/vite.config.ts b/packages/pacer-devtools/vite.config.ts index 67121f71..e4e39edc 100644 --- a/packages/pacer-devtools/vite.config.ts +++ b/packages/pacer-devtools/vite.config.ts @@ -1,6 +1,6 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' -import solid from "vite-plugin-solid"; +import solid from 'vite-plugin-solid' import packageJson from './package.json' const config = defineConfig({ diff --git a/packages/pacer-react-devtools/package.json b/packages/pacer-react-devtools/package.json index 6b536fce..fd1d583e 100644 --- a/packages/pacer-react-devtools/package.json +++ b/packages/pacer-react-devtools/package.json @@ -72,4 +72,4 @@ "eslint-plugin-react-compiler": "19.1.0-rc.1", "eslint-plugin-react-hooks": "^5.2.0" } -} \ No newline at end of file +} diff --git a/packages/pacer-react-devtools/src/devtools.tsx b/packages/pacer-react-devtools/src/devtools.tsx index 0097fbd2..d4a1eef3 100644 --- a/packages/pacer-react-devtools/src/devtools.tsx +++ b/packages/pacer-react-devtools/src/devtools.tsx @@ -1,17 +1,12 @@ import React, { useEffect, useRef, useState } from 'react' -import { - PacerDevtoolsCore, -} from '@tanstack/pacer-devtools' - -export interface PacerDevtoolsReactInit { - -} +import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' +export interface PacerDevtoolsReactInit {} export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { const devToolRef = useRef(null) - const [devtools] = useState(() => new PacerDevtoolsCore({}),) + const [devtools] = useState(() => new PacerDevtoolsCore({})) useEffect(() => { if (devToolRef.current) { devtools.mount(devToolRef.current) @@ -20,7 +15,5 @@ export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { return () => devtools.unmount() }, [devtools]) - return ( -
- ) + return
} diff --git a/packages/pacer-react-devtools/src/index.ts b/packages/pacer-react-devtools/src/index.ts index d94438d3..550256c8 100644 --- a/packages/pacer-react-devtools/src/index.ts +++ b/packages/pacer-react-devtools/src/index.ts @@ -1 +1 @@ -export { PacerDevtoolsPanel } from "./devtools" \ No newline at end of file +export { PacerDevtoolsPanel } from './devtools' diff --git a/packages/pacer-react-devtools/tsconfig.json b/packages/pacer-react-devtools/tsconfig.json index ec5879b1..bf8f85d3 100644 --- a/packages/pacer-react-devtools/tsconfig.json +++ b/packages/pacer-react-devtools/tsconfig.json @@ -2,6 +2,6 @@ "extends": "../../tsconfig.json", "include": ["src", "eslint.config.js", "vite.config.ts", "tests"], "compilerOptions": { - "jsx": "react", + "jsx": "react" } } diff --git a/packages/pacer-react-devtools/vite.config.ts b/packages/pacer-react-devtools/vite.config.ts index d3b7a81d..ca307b89 100644 --- a/packages/pacer-react-devtools/vite.config.ts +++ b/packages/pacer-react-devtools/vite.config.ts @@ -1,6 +1,6 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' -import react from "@vitejs/plugin-react"; +import react from '@vitejs/plugin-react' import packageJson from './package.json' const config = defineConfig({ diff --git a/packages/pacer-solid-devtools/package.json b/packages/pacer-solid-devtools/package.json index 5efcf22f..d36b4058 100644 --- a/packages/pacer-solid-devtools/package.json +++ b/packages/pacer-solid-devtools/package.json @@ -66,4 +66,4 @@ "devDependencies": { "vite-plugin-solid": "^2.11.8" } -} \ No newline at end of file +} diff --git a/packages/pacer-solid-devtools/src/devtools.tsx b/packages/pacer-solid-devtools/src/devtools.tsx index 92046cec..598ad0ca 100644 --- a/packages/pacer-solid-devtools/src/devtools.tsx +++ b/packages/pacer-solid-devtools/src/devtools.tsx @@ -1,17 +1,11 @@ - import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' import { createSignal, onCleanup, onMount } from 'solid-js' -export interface PacerDevtoolsSolidInit { - -} +export interface PacerDevtoolsSolidInit {} export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { let devToolRef: HTMLDivElement | undefined - const [devtools] = createSignal( - new PacerDevtoolsCore({}), - - ) + const [devtools] = createSignal(new PacerDevtoolsCore({})) onMount(() => { if (devToolRef) { devtools().mount(devToolRef) @@ -22,7 +16,5 @@ export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { } }) - return ( -
- ) + return
} diff --git a/packages/pacer-solid-devtools/src/index.ts b/packages/pacer-solid-devtools/src/index.ts index d94438d3..550256c8 100644 --- a/packages/pacer-solid-devtools/src/index.ts +++ b/packages/pacer-solid-devtools/src/index.ts @@ -1 +1 @@ -export { PacerDevtoolsPanel } from "./devtools" \ No newline at end of file +export { PacerDevtoolsPanel } from './devtools' diff --git a/packages/pacer-solid-devtools/tsconfig.json b/packages/pacer-solid-devtools/tsconfig.json index 4add0559..3ee4c951 100644 --- a/packages/pacer-solid-devtools/tsconfig.json +++ b/packages/pacer-solid-devtools/tsconfig.json @@ -3,6 +3,6 @@ "include": ["src", "eslint.config.js", "vite.config.ts", "tests"], "compilerOptions": { "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "solid-js" } } diff --git a/packages/pacer-solid-devtools/vite.config.ts b/packages/pacer-solid-devtools/vite.config.ts index 67121f71..e4e39edc 100644 --- a/packages/pacer-solid-devtools/vite.config.ts +++ b/packages/pacer-solid-devtools/vite.config.ts @@ -1,6 +1,6 @@ import { defineConfig, mergeConfig } from 'vitest/config' import { tanstackViteConfig } from '@tanstack/config/vite' -import solid from "vite-plugin-solid"; +import solid from 'vite-plugin-solid' import packageJson from './package.json' const config = defineConfig({ diff --git a/packages/pacer/package.json b/packages/pacer/package.json index c2f90d8c..9feb887e 100644 --- a/packages/pacer/package.json +++ b/packages/pacer/package.json @@ -184,4 +184,4 @@ "@tanstack/devtools-event-client": "^0.2.1", "@tanstack/store": "^0.7.2" } -} \ No newline at end of file +} diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index 793c82c6..7415e52d 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -264,7 +264,7 @@ export class AsyncBatcher { ? 'idle' : 'populated', } as const - pacerEventClient.emit("async-batcher-state", finalState) + pacerEventClient.emit('async-batcher-state', finalState) return finalState }) } diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 5ecff13e..dfc5e31e 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -229,7 +229,7 @@ export class AsyncDebouncer { ? 'settled' : 'idle', } as const - pacerEventClient.emit("async-debouncer-state", finalState) + pacerEventClient.emit('async-debouncer-state', finalState) return finalState }) } diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index 71a7de50..4e3ba70e 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -323,7 +323,7 @@ export class AsyncQueuer { size, status, } as const - pacerEventClient.emit("async-queuer-state", finalState) + pacerEventClient.emit('async-queuer-state', finalState) return finalState }) } diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index 8f280e84..39dff211 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -246,12 +246,12 @@ export class AsyncRateLimiter { : isExceeded ? 'exceeded' : 'idle' - const finalState = { + const finalState = { ...combinedState, isExceeded, status, } as const - pacerEventClient.emit("async-rate-limiter-state", finalState) + pacerEventClient.emit('async-rate-limiter-state', finalState) return finalState }) } diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index e7c36901..af3395ab 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -240,7 +240,7 @@ export class AsyncThrottler { ? 'settled' : 'idle', } as const - pacerEventClient.emit("async-throttler-state", finalState) + pacerEventClient.emit('async-throttler-state', finalState) return finalState }) } diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index f25c7481..a7e4e0f8 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -170,14 +170,14 @@ export class Batcher { const { isPending, items } = combinedState const size = items.length const isEmpty = size === 0 - const finalState = { + const finalState = { ...combinedState, isEmpty, size, status: isPending ? 'pending' : 'idle', } as const - pacerEventClient.emit("batcher-state", finalState) + pacerEventClient.emit('batcher-state', finalState) return finalState }) } diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index 33029c30..ea242a2b 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -161,7 +161,7 @@ export class Debouncer { ? 'pending' : 'idle', } as const - pacerEventClient.emit("debouncer-state", finalState) + pacerEventClient.emit('debouncer-state', finalState) return finalState }) } diff --git a/packages/pacer/src/event-client.ts b/packages/pacer/src/event-client.ts index 754a1c46..8161cea2 100644 --- a/packages/pacer/src/event-client.ts +++ b/packages/pacer/src/event-client.ts @@ -1,37 +1,35 @@ -import { EventClient } from "@tanstack/devtools-event-client" -import type { AsyncBatcherState } from "./async-batcher" -import type { AsyncDebouncerState } from "./async-debouncer" -import type { AsyncQueuerState } from "./async-queuer" -import type { AsyncRateLimiterState } from "./async-rate-limiter" -import type { AsyncThrottlerState } from "./async-throttler" -import type { DebouncerState } from "./debouncer" -import type { BatcherState } from "./batcher" -import type { QueuerState } from "./queuer" -import type { RateLimiterState } from "./rate-limiter" -import type { ThrottlerState } from "./throttler" +import { EventClient } from '@tanstack/devtools-event-client' +import type { AsyncBatcherState } from './async-batcher' +import type { AsyncDebouncerState } from './async-debouncer' +import type { AsyncQueuerState } from './async-queuer' +import type { AsyncRateLimiterState } from './async-rate-limiter' +import type { AsyncThrottlerState } from './async-throttler' +import type { DebouncerState } from './debouncer' +import type { BatcherState } from './batcher' +import type { QueuerState } from './queuer' +import type { RateLimiterState } from './rate-limiter' +import type { ThrottlerState } from './throttler' export interface PacerEventMap { - "pacer:async-batcher-state": AsyncBatcherState - "pacer:async-debouncer-state": AsyncDebouncerState - "pacer:async-queuer-state": AsyncQueuerState - "pacer:async-rate-limiter-state": AsyncRateLimiterState - "pacer:async-throttler-state": AsyncThrottlerState - "pacer:batcher-state": BatcherState - "pacer:debouncer-state": DebouncerState - "pacer:queuer-state": QueuerState - "pacer:rate-limiter-state": RateLimiterState - "pacer:throttler-state": ThrottlerState + 'pacer:async-batcher-state': AsyncBatcherState + 'pacer:async-debouncer-state': AsyncDebouncerState + 'pacer:async-queuer-state': AsyncQueuerState + 'pacer:async-rate-limiter-state': AsyncRateLimiterState + 'pacer:async-throttler-state': AsyncThrottlerState + 'pacer:batcher-state': BatcherState + 'pacer:debouncer-state': DebouncerState + 'pacer:queuer-state': QueuerState + 'pacer:rate-limiter-state': RateLimiterState + 'pacer:throttler-state': ThrottlerState } export class PacerEventClient extends EventClient { - constructor(props?: { - debug: boolean - }) { + constructor(props?: { debug: boolean }) { super({ - pluginId: "pacer", - debug: props?.debug + pluginId: 'pacer', + debug: props?.debug, }) } } -export const pacerEventClient = new PacerEventClient() \ No newline at end of file +export const pacerEventClient = new PacerEventClient() diff --git a/packages/pacer/src/index.ts b/packages/pacer/src/index.ts index c599f9e8..9c630dd2 100644 --- a/packages/pacer/src/index.ts +++ b/packages/pacer/src/index.ts @@ -10,4 +10,4 @@ export * from './rate-limiter' export * from './throttler' export * from './types' export * from './utils' -export * from './event-client' \ No newline at end of file +export * from './event-client' diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index e9216751..b445fce7 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -305,8 +305,8 @@ export class Queuer { isIdle, size, status, - } as const - pacerEventClient.emit("queuer-state", finalState) + } as const + pacerEventClient.emit('queuer-state', finalState) return finalState }) } diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index 675df875..de2fd61f 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -174,7 +174,7 @@ export class RateLimiter { isExceeded, status, } as const - pacerEventClient.emit("rate-limiter-state", finalState) + pacerEventClient.emit('rate-limiter-state', finalState) return finalState }) } diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index 265eae5b..1e1b36f7 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -169,7 +169,7 @@ export class Throttler { ? 'pending' : 'idle', } as const - pacerEventClient.emit("throttler-state", finalState) + pacerEventClient.emit('throttler-state', finalState) return finalState }) } From 9b634593391159a66f38c1113c0a932db728740f Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Mon, 11 Aug 2025 11:30:42 +0200 Subject: [PATCH 08/44] chore: fix test issues --- examples/react/queue/package.json | 6 +- packages/pacer-devtools/package.json | 4 +- .../src/context/use-context-hooks.ts | 2 +- packages/pacer-devtools/tests/index.test.ts | 7 +++ .../pacer-react-devtools/eslint.config.js | 24 +++++++- packages/pacer-react-devtools/package.json | 6 +- .../pacer-react-devtools/src/devtools.tsx | 2 +- .../pacer-react-devtools/tests/index.test.ts | 7 +++ packages/pacer-solid-devtools/package.json | 2 +- .../pacer-solid-devtools/src/devtools.tsx | 2 +- .../pacer-solid-devtools/tests/index.test.ts | 7 +++ pnpm-lock.yaml | 56 ++----------------- 12 files changed, 60 insertions(+), 65 deletions(-) create mode 100644 packages/pacer-devtools/tests/index.test.ts create mode 100644 packages/pacer-react-devtools/tests/index.test.ts create mode 100644 packages/pacer-solid-devtools/tests/index.test.ts diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index fbf100a9..7206e62d 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -14,11 +14,11 @@ "react-dom": "^19.1.1" }, "devDependencies": { + "@tanstack/pacer-react-devtools": "0.14.0", + "@tanstack/react-devtools": "0.2.2", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^4.7.0", - "@tanstack/pacer-react-devtools": "0.14.0", - "@tanstack/react-devtools": "0.2.2", "vite": "^7.0.6" }, "browserslist": { @@ -33,4 +33,4 @@ "last 1 safari version" ] } -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 771738de..4173606f 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -64,6 +64,6 @@ "solid-js": "^1.9.7" }, "devDependencies": { - "vite-plugin-solid": "^2.11.6" + "vite-plugin-solid": "^2.11.8" } -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/src/context/use-context-hooks.ts b/packages/pacer-devtools/src/context/use-context-hooks.ts index d25ac386..52c943f9 100644 --- a/packages/pacer-devtools/src/context/use-context-hooks.ts +++ b/packages/pacer-devtools/src/context/use-context-hooks.ts @@ -1,7 +1,7 @@ import { useContext } from "solid-js" import { PacerContext } from "./context" -export const usePacerContext = () => { +const usePacerContext = () => { const context = useContext(PacerContext) return context diff --git a/packages/pacer-devtools/tests/index.test.ts b/packages/pacer-devtools/tests/index.test.ts new file mode 100644 index 00000000..54a212ef --- /dev/null +++ b/packages/pacer-devtools/tests/index.test.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from "vitest"; + +describe("test suite", () => { + it("should work", () => { + expect(true).toBe(true); + }) +}) \ No newline at end of file diff --git a/packages/pacer-react-devtools/eslint.config.js b/packages/pacer-react-devtools/eslint.config.js index e472c69e..3b8dc150 100644 --- a/packages/pacer-react-devtools/eslint.config.js +++ b/packages/pacer-react-devtools/eslint.config.js @@ -1,10 +1,32 @@ // @ts-check +import pluginReact from '@eslint-react/eslint-plugin' +import pluginReactCompiler from 'eslint-plugin-react-compiler' +import pluginReactHooks from 'eslint-plugin-react-hooks' import rootConfig from '../../eslint.config.js' export default [ ...rootConfig, { - rules: {}, + files: ['**/*.{ts,tsx}'], + ...pluginReact.configs.recommended, + }, + { + plugins: { + 'react-hooks': pluginReactHooks, + 'react-compiler': pluginReactCompiler, + }, + rules: { + '@eslint-react/dom/no-missing-button-type': 'off', + 'react-compiler/react-compiler': 'error', + 'react-hooks/exhaustive-deps': 'error', + 'react-hooks/rules-of-hooks': 'error', + }, + }, + { + files: ['**/__tests__/**'], + rules: { + // 'react-compiler/react-compiler': 'off', + }, }, ] diff --git a/packages/pacer-react-devtools/package.json b/packages/pacer-react-devtools/package.json index 6b536fce..5d3e2f62 100644 --- a/packages/pacer-react-devtools/package.json +++ b/packages/pacer-react-devtools/package.json @@ -67,9 +67,9 @@ "@tanstack/pacer-devtools": "workspace:*" }, "devDependencies": { + "@eslint-react/eslint-plugin": "^1.52.3", "@vitejs/plugin-react": "^4.7.0", - "@eslint-react/eslint-plugin": "^1.48.5", - "eslint-plugin-react-compiler": "19.1.0-rc.1", + "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0" } -} \ No newline at end of file +} diff --git a/packages/pacer-react-devtools/src/devtools.tsx b/packages/pacer-react-devtools/src/devtools.tsx index 0097fbd2..f7d38c12 100644 --- a/packages/pacer-react-devtools/src/devtools.tsx +++ b/packages/pacer-react-devtools/src/devtools.tsx @@ -3,7 +3,7 @@ import { PacerDevtoolsCore, } from '@tanstack/pacer-devtools' -export interface PacerDevtoolsReactInit { +interface PacerDevtoolsReactInit { } diff --git a/packages/pacer-react-devtools/tests/index.test.ts b/packages/pacer-react-devtools/tests/index.test.ts new file mode 100644 index 00000000..54a212ef --- /dev/null +++ b/packages/pacer-react-devtools/tests/index.test.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from "vitest"; + +describe("test suite", () => { + it("should work", () => { + expect(true).toBe(true); + }) +}) \ No newline at end of file diff --git a/packages/pacer-solid-devtools/package.json b/packages/pacer-solid-devtools/package.json index 5efcf22f..d36b4058 100644 --- a/packages/pacer-solid-devtools/package.json +++ b/packages/pacer-solid-devtools/package.json @@ -66,4 +66,4 @@ "devDependencies": { "vite-plugin-solid": "^2.11.8" } -} \ No newline at end of file +} diff --git a/packages/pacer-solid-devtools/src/devtools.tsx b/packages/pacer-solid-devtools/src/devtools.tsx index 92046cec..a6979bef 100644 --- a/packages/pacer-solid-devtools/src/devtools.tsx +++ b/packages/pacer-solid-devtools/src/devtools.tsx @@ -2,7 +2,7 @@ import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' import { createSignal, onCleanup, onMount } from 'solid-js' -export interface PacerDevtoolsSolidInit { +interface PacerDevtoolsSolidInit { } diff --git a/packages/pacer-solid-devtools/tests/index.test.ts b/packages/pacer-solid-devtools/tests/index.test.ts new file mode 100644 index 00000000..54a212ef --- /dev/null +++ b/packages/pacer-solid-devtools/tests/index.test.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from "vitest"; + +describe("test suite", () => { + it("should work", () => { + expect(true).toBe(true); + }) +}) \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c922fce1..1de8954d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1564,7 +1564,7 @@ importers: version: 1.9.7 devDependencies: vite-plugin-solid: - specifier: ^2.11.6 + specifier: ^2.11.8 version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) packages/pacer-react-devtools: @@ -1586,14 +1586,14 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.48.5 + specifier: ^1.52.3 version: 1.52.3(eslint@9.32.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) '@vitejs/plugin-react': specifier: ^4.7.0 version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: - specifier: 19.1.0-rc.1 - version: 19.1.0-rc.1(eslint@9.32.0(jiti@2.4.2)) + specifier: 19.1.0-rc.2 + version: 19.1.0-rc.2(eslint@9.32.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: ^5.2.0 version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) @@ -3502,12 +3502,6 @@ packages: peerDependencies: eslint: ^9.0.0 - eslint-plugin-react-compiler@19.1.0-rc.1: - resolution: {integrity: sha512-3umw5eqZXapBl7aQGmvcjheKhUbsElb9jTETxRZg371e1LG4EPs/zCHt2JzP+wNcdaZWzjU/R730zPUJblY2zw==} - engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} - peerDependencies: - eslint: '>=7' - eslint-plugin-react-compiler@19.1.0-rc.2: resolution: {integrity: sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} @@ -5357,19 +5351,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.28.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-globals@7.28.0': {} '@babel/helper-member-expression-to-functions@7.25.9': @@ -5432,15 +5413,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.26.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: '@babel/traverse': 7.27.0 @@ -5486,14 +5458,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -7371,18 +7335,6 @@ snapshots: tinyglobby: 0.2.14 yaml-eslint-parser: 1.3.0 - eslint-plugin-react-compiler@19.1.0-rc.1(eslint@9.32.0(jiti@2.4.2)): - dependencies: - '@babel/core': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.0) - eslint: 9.32.0(jiti@2.4.2) - hermes-parser: 0.25.1 - zod: 3.25.72 - zod-validation-error: 3.4.0(zod@3.25.72) - transitivePeerDependencies: - - supports-color - eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.32.0(jiti@2.4.2)): dependencies: '@babel/core': 7.26.10 From c60e383200d5850339f1b6233e72673927e7771e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 09:37:51 +0000 Subject: [PATCH 09/44] ci: apply automated fixes --- packages/pacer-devtools/tests/index.test.ts | 10 +++++----- packages/pacer-react-devtools/src/devtools.tsx | 2 +- packages/pacer-react-devtools/tests/index.test.ts | 10 +++++----- packages/pacer-solid-devtools/src/devtools.tsx | 2 +- packages/pacer-solid-devtools/tests/index.test.ts | 10 +++++----- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/pacer-devtools/tests/index.test.ts b/packages/pacer-devtools/tests/index.test.ts index 54a212ef..350ef3ad 100644 --- a/packages/pacer-devtools/tests/index.test.ts +++ b/packages/pacer-devtools/tests/index.test.ts @@ -1,7 +1,7 @@ -import { describe, expect, it } from "vitest"; +import { describe, expect, it } from 'vitest' -describe("test suite", () => { - it("should work", () => { - expect(true).toBe(true); +describe('test suite', () => { + it('should work', () => { + expect(true).toBe(true) }) -}) \ No newline at end of file +}) diff --git a/packages/pacer-react-devtools/src/devtools.tsx b/packages/pacer-react-devtools/src/devtools.tsx index ed38931b..c2ab840d 100644 --- a/packages/pacer-react-devtools/src/devtools.tsx +++ b/packages/pacer-react-devtools/src/devtools.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useRef, useState } from 'react' import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' -interface PacerDevtoolsReactInit { } +interface PacerDevtoolsReactInit {} export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { const devToolRef = useRef(null) diff --git a/packages/pacer-react-devtools/tests/index.test.ts b/packages/pacer-react-devtools/tests/index.test.ts index 54a212ef..350ef3ad 100644 --- a/packages/pacer-react-devtools/tests/index.test.ts +++ b/packages/pacer-react-devtools/tests/index.test.ts @@ -1,7 +1,7 @@ -import { describe, expect, it } from "vitest"; +import { describe, expect, it } from 'vitest' -describe("test suite", () => { - it("should work", () => { - expect(true).toBe(true); +describe('test suite', () => { + it('should work', () => { + expect(true).toBe(true) }) -}) \ No newline at end of file +}) diff --git a/packages/pacer-solid-devtools/src/devtools.tsx b/packages/pacer-solid-devtools/src/devtools.tsx index 490e6045..4aad3e6b 100644 --- a/packages/pacer-solid-devtools/src/devtools.tsx +++ b/packages/pacer-solid-devtools/src/devtools.tsx @@ -1,7 +1,7 @@ import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' import { createSignal, onCleanup, onMount } from 'solid-js' -interface PacerDevtoolsSolidInit { } +interface PacerDevtoolsSolidInit {} export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { let devToolRef: HTMLDivElement | undefined diff --git a/packages/pacer-solid-devtools/tests/index.test.ts b/packages/pacer-solid-devtools/tests/index.test.ts index 54a212ef..350ef3ad 100644 --- a/packages/pacer-solid-devtools/tests/index.test.ts +++ b/packages/pacer-solid-devtools/tests/index.test.ts @@ -1,7 +1,7 @@ -import { describe, expect, it } from "vitest"; +import { describe, expect, it } from 'vitest' -describe("test suite", () => { - it("should work", () => { - expect(true).toBe(true); +describe('test suite', () => { + it('should work', () => { + expect(true).toBe(true) }) -}) \ No newline at end of file +}) From a8f5096abde50a9cd5f77566222b29164694f386 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Mon, 11 Aug 2025 12:03:57 +0200 Subject: [PATCH 10/44] chore:fix render issue --- package.json | 2 +- .../src/context/context-provider.tsx | 26 +++++++++---------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index b8ea335a..9629cf10 100644 --- a/package.json +++ b/package.json @@ -84,4 +84,4 @@ "@tanstack/pacer-solid-devtools": "workspace:*", "@tanstack/pacer-react-devtools": "workspace:*" } -} +} \ No newline at end of file diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/context/context-provider.tsx index 5be12b52..3fd14931 100644 --- a/packages/pacer-devtools/src/context/context-provider.tsx +++ b/packages/pacer-devtools/src/context/context-provider.tsx @@ -6,48 +6,46 @@ import type { PacerContextType } from './context' export function PacerContextProvider(props: { children: any }) { const [store, setStore] = createStore(initialStore) - const updateStore = (newState: Partial) => { - setStore((prev) => ({ ...prev, ...newState })) - } + createEffect(() => { const cleanup = pacerEventClient.onAllPluginEvents((e) => { switch (e.type) { case 'pacer:async-batcher-state': - updateStore({ asyncBatcherState: e.payload }) + setStore({ asyncBatcherState: e.payload }) break case 'pacer:async-debouncer-state': - updateStore({ asyncDebouncerState: e.payload }) + setStore({ asyncDebouncerState: e.payload }) break case 'pacer:async-queuer-state': - updateStore({ asyncQueuerState: e.payload }) + setStore({ asyncQueuerState: e.payload }) break case 'pacer:async-rate-limiter-state': - updateStore({ asyncRateLimiterState: e.payload }) + setStore({ asyncRateLimiterState: e.payload }) break case 'pacer:async-throttler-state': - updateStore({ asyncThrottlerState: e.payload }) + setStore({ asyncThrottlerState: e.payload }) break case 'pacer:batcher-state': - updateStore({ batcherState: e.payload }) + setStore({ batcherState: e.payload }) break case 'pacer:debouncer-state': - updateStore({ debouncerState: e.payload }) + setStore({ debouncerState: e.payload }) break case 'pacer:queuer-state': - updateStore({ queuerState: e.payload }) + setStore({ queuerState: e.payload }) break case 'pacer:rate-limiter-state': - updateStore({ rateLimiterState: e.payload }) + setStore({ rateLimiterState: e.payload }) break case 'pacer:throttler-state': - updateStore({ throttlerState: e.payload }) + setStore({ throttlerState: e.payload }) break } }) onCleanup(cleanup) }) return ( - + {props.children} ) From 7badb9f339a56349b280f74eb64a44576b68e5a7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 10:04:55 +0000 Subject: [PATCH 11/44] ci: apply automated fixes --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9629cf10..b8ea335a 100644 --- a/package.json +++ b/package.json @@ -84,4 +84,4 @@ "@tanstack/pacer-solid-devtools": "workspace:*", "@tanstack/pacer-react-devtools": "workspace:*" } -} \ No newline at end of file +} From db96874ab4cbbe66aaf02fe4fd05e0bc86e9e8ff Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:57:07 +0000 Subject: [PATCH 12/44] ci: apply automated fixes --- .../reference/functions/pacerprovider.md | 24 ++ .../reference/functions/useasyncbatcher.md | 2 +- .../reference/functions/useasyncdebouncer.md | 2 +- .../reference/functions/useasyncqueuer.md | 2 +- .../functions/useasyncratelimiter.md | 2 +- .../reference/functions/useasyncretryer.md | 165 +++++++++++ .../reference/functions/useasyncthrottler.md | 2 +- .../react/reference/functions/usebatcher.md | 2 +- .../react/reference/functions/usedebouncer.md | 2 +- .../functions/usedefaultpaceroptions.md | 18 ++ .../reference/functions/usepacercontext.md | 18 ++ .../react/reference/functions/usequeuer.md | 2 +- .../reference/functions/useratelimiter.md | 2 +- .../react/reference/functions/usethrottler.md | 2 +- docs/framework/react/reference/index.md | 7 + .../interfaces/pacerprovideroptions.md | 120 ++++++++ .../interfaces/pacerproviderprops.md | 30 ++ .../reference/interfaces/reactasyncbatcher.md | 6 +- .../interfaces/reactasyncdebouncer.md | 6 +- .../reference/interfaces/reactasyncqueuer.md | 6 +- .../interfaces/reactasyncratelimiter.md | 6 +- .../reference/interfaces/reactasyncretryer.md | 50 ++++ .../interfaces/reactasyncthrottler.md | 6 +- .../reference/interfaces/reactbatcher.md | 6 +- .../reference/interfaces/reactdebouncer.md | 6 +- .../react/reference/interfaces/reactqueuer.md | 6 +- .../reference/interfaces/reactratelimiter.md | 6 +- .../reference/interfaces/reactthrottler.md | 6 +- docs/reference/classes/asyncbatcher.md | 34 ++- docs/reference/classes/asyncdebouncer.md | 30 +- docs/reference/classes/asyncqueuer.md | 48 ++-- docs/reference/classes/asyncratelimiter.md | 30 +- docs/reference/classes/asyncretryer.md | 225 +++++++++++++++ docs/reference/classes/asyncthrottler.md | 30 +- docs/reference/functions/asyncbatch.md | 2 +- docs/reference/functions/asyncdebounce.md | 2 +- docs/reference/functions/asyncqueue.md | 2 +- docs/reference/functions/asyncratelimit.md | 2 +- docs/reference/functions/asyncretry.md | 61 ++++ docs/reference/functions/asyncthrottle.md | 2 +- docs/reference/index.md | 4 + .../interfaces/asyncbatcheroptions.md | 34 ++- .../reference/interfaces/asyncbatcherstate.md | 30 +- .../interfaces/asyncdebounceroptions.md | 32 ++- .../interfaces/asyncdebouncerstate.md | 22 +- .../interfaces/asyncqueueroptions.md | 50 ++-- docs/reference/interfaces/asyncqueuerstate.md | 34 +-- .../interfaces/asyncratelimiteroptions.md | 34 ++- .../interfaces/asyncratelimiterstate.md | 22 +- .../interfaces/asyncretryeroptions.md | 264 ++++++++++++++++++ .../reference/interfaces/asyncretryerstate.md | 110 ++++++++ .../interfaces/asyncthrottleroptions.md | 32 ++- .../interfaces/asyncthrottlerstate.md | 24 +- docs/reference/interfaces/debouncerstate.md | 2 +- docs/reference/interfaces/ratelimiterstate.md | 2 +- docs/reference/interfaces/throttlerstate.md | 2 +- 56 files changed, 1442 insertions(+), 236 deletions(-) create mode 100644 docs/framework/react/reference/functions/pacerprovider.md create mode 100644 docs/framework/react/reference/functions/useasyncretryer.md create mode 100644 docs/framework/react/reference/functions/usedefaultpaceroptions.md create mode 100644 docs/framework/react/reference/functions/usepacercontext.md create mode 100644 docs/framework/react/reference/interfaces/pacerprovideroptions.md create mode 100644 docs/framework/react/reference/interfaces/pacerproviderprops.md create mode 100644 docs/framework/react/reference/interfaces/reactasyncretryer.md create mode 100644 docs/reference/classes/asyncretryer.md create mode 100644 docs/reference/functions/asyncretry.md create mode 100644 docs/reference/interfaces/asyncretryeroptions.md create mode 100644 docs/reference/interfaces/asyncretryerstate.md diff --git a/docs/framework/react/reference/functions/pacerprovider.md b/docs/framework/react/reference/functions/pacerprovider.md new file mode 100644 index 00000000..06e51a87 --- /dev/null +++ b/docs/framework/react/reference/functions/pacerprovider.md @@ -0,0 +1,24 @@ +--- +id: PacerProvider +title: PacerProvider +--- + + + +# Function: PacerProvider() + +```ts +function PacerProvider(__namedParameters): Element +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:43](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L43) + +## Parameters + +### \_\_namedParameters + +[`PacerProviderProps`](../../interfaces/pacerproviderprops.md) + +## Returns + +`Element` diff --git a/docs/framework/react/reference/functions/useasyncbatcher.md b/docs/framework/react/reference/functions/useasyncbatcher.md index c06c3070..11761a87 100644 --- a/docs/framework/react/reference/functions/useasyncbatcher.md +++ b/docs/framework/react/reference/functions/useasyncbatcher.md @@ -14,7 +14,7 @@ function useAsyncBatcher( selector): ReactAsyncBatcher ``` -Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:167](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L167) +Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:168](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L168) A React hook that creates an `AsyncBatcher` instance for managing asynchronous batches of items. diff --git a/docs/framework/react/reference/functions/useasyncdebouncer.md b/docs/framework/react/reference/functions/useasyncdebouncer.md index 696a696e..54fb45ac 100644 --- a/docs/framework/react/reference/functions/useasyncdebouncer.md +++ b/docs/framework/react/reference/functions/useasyncdebouncer.md @@ -14,7 +14,7 @@ function useAsyncDebouncer( selector): ReactAsyncDebouncer ``` -Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:149](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L149) +Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:150](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L150) A low-level React hook that creates an `AsyncDebouncer` instance to delay execution of an async function. diff --git a/docs/framework/react/reference/functions/useasyncqueuer.md b/docs/framework/react/reference/functions/useasyncqueuer.md index 96329a26..7e86e10b 100644 --- a/docs/framework/react/reference/functions/useasyncqueuer.md +++ b/docs/framework/react/reference/functions/useasyncqueuer.md @@ -14,7 +14,7 @@ function useAsyncQueuer( selector): ReactAsyncQueuer ``` -Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:167](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L167) +Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:168](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L168) A lower-level React hook that creates an `AsyncQueuer` instance for managing an async queue of items. diff --git a/docs/framework/react/reference/functions/useasyncratelimiter.md b/docs/framework/react/reference/functions/useasyncratelimiter.md index 0d6a2fbe..b209c15f 100644 --- a/docs/framework/react/reference/functions/useasyncratelimiter.md +++ b/docs/framework/react/reference/functions/useasyncratelimiter.md @@ -14,7 +14,7 @@ function useAsyncRateLimiter( selector): ReactAsyncRateLimiter ``` -Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:178](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L178) +Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:179](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L179) A low-level React hook that creates an `AsyncRateLimiter` instance to limit how many times an async function can execute within a time window. diff --git a/docs/framework/react/reference/functions/useasyncretryer.md b/docs/framework/react/reference/functions/useasyncretryer.md new file mode 100644 index 00000000..2b8a58be --- /dev/null +++ b/docs/framework/react/reference/functions/useasyncretryer.md @@ -0,0 +1,165 @@ +--- +id: useAsyncRetryer +title: useAsyncRetryer +--- + + + +# Function: useAsyncRetryer() + +```ts +function useAsyncRetryer( + fn, + options, +selector): ReactAsyncRetryer +``` + +Defined in: [react-pacer/src/async-retryer/useAsyncRetryer.ts:152](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts#L152) + +A low-level React hook that creates an `AsyncRetryer` instance to retry execution of an async function. + +This hook is designed to be flexible and state-management agnostic - it simply returns a retryer instance that +you can integrate with any state management solution (useState, Redux, Zustand, Jotai, etc). + +Async retrying automatically re-executes a failed async function up to a specified number of attempts with +configurable backoff strategies. This is useful for handling transient errors like network failures, temporary +server issues, or rate limiting where you want to automatically retry the operation. + +Error Handling: +- If an `onError` handler is provided, it will be called for every error during execution +- If an `onLastError` handler is provided, it will be called only for the final error after all retries fail +- If `throwOnError` is 'last' (default), only the final error after all retries will be thrown +- If `throwOnError` is true, every error will be thrown immediately (disables retrying) +- If `throwOnError` is false, errors are never thrown and undefined is returned instead + +## State Management and Selector + +The hook uses TanStack Store for reactive state management. The `selector` parameter allows you +to specify which state changes will trigger a re-render, optimizing performance by preventing +unnecessary re-renders when irrelevant state changes occur. + +**By default, there will be no reactive state subscriptions** and you must opt-in to state +tracking by providing a selector function. This prevents unnecessary re-renders and gives you +full control over when your component updates. Only when you provide a selector will the +component re-render when the selected state values change. + +Available state properties: +- `currentAttempt`: The current retry attempt number (0 when not executing) +- `executionCount`: Total number of completed executions (successful or failed) +- `isExecuting`: Whether the retryer is currently executing the function +- `lastError`: The most recent error encountered during execution +- `lastExecutionTime`: Timestamp of the last execution completion in milliseconds +- `lastResult`: The result from the most recent successful execution +- `status`: Current execution status ('disabled' | 'idle' | 'executing' | 'retrying') +- `totalExecutionTime`: Total time spent executing (including retries) in milliseconds + +## Type Parameters + +• **TFn** *extends* `AnyAsyncFunction` + +• **TSelected** = \{\} + +## Parameters + +### fn + +`TFn` + +### options + +`AsyncRetryerOptions`\<`TFn`\> + +### selector + +(`state`) => `TSelected` + +## Returns + +[`ReactAsyncRetryer`](../../interfaces/reactasyncretryer.md)\<`TFn`, `TSelected`\> + +## Example + +```tsx +// Default behavior - no reactive state subscriptions +const apiRetryer = useAsyncRetryer( + async (userId: string) => { + const response = await fetch(`/api/users/${userId}`); + if (!response.ok) throw new Error('Failed to fetch user'); + return response.json(); + }, + { maxAttempts: 3, backoff: 'exponential' } +); + +// Opt-in to re-render when execution state changes (optimized for loading indicators) +const apiRetryer = useAsyncRetryer( + async (userId: string) => { + const response = await fetch(`/api/users/${userId}`); + if (!response.ok) throw new Error('Failed to fetch user'); + return response.json(); + }, + { maxAttempts: 3, backoff: 'exponential' }, + (state) => ({ + isExecuting: state.isExecuting, + currentAttempt: state.currentAttempt + }) +); + +// Opt-in to re-render when results are available (optimized for data display) +const apiRetryer = useAsyncRetryer( + async (userId: string) => { + const response = await fetch(`/api/users/${userId}`); + if (!response.ok) throw new Error('Failed to fetch user'); + return response.json(); + }, + { maxAttempts: 3, backoff: 'exponential' }, + (state) => ({ + lastResult: state.lastResult, + executionCount: state.executionCount + }) +); + +// Opt-in to re-render when error state changes (optimized for error handling) +const apiRetryer = useAsyncRetryer( + async (userId: string) => { + const response = await fetch(`/api/users/${userId}`); + if (!response.ok) throw new Error('Failed to fetch user'); + return response.json(); + }, + { + maxAttempts: 3, + backoff: 'exponential', + onError: (error) => console.error('API call failed:', error), + onLastError: (error) => console.error('All retries failed:', error) + }, + (state) => ({ + lastError: state.lastError, + status: state.status + }) +); + +// With state management +const [userData, setUserData] = useState(null); +const { execute, state } = useAsyncRetryer( + async (userId) => { + const response = await fetch(`/api/users/${userId}`); + if (!response.ok) throw new Error('Failed to fetch user'); + const data = await response.json(); + setUserData(data); + return data; + }, + { + maxAttempts: 5, + backoff: 'exponential', + baseWait: 1000, + onRetry: (attempt, error) => { + console.log(`Retry attempt ${attempt} after error:`, error); + }, + onError: (error) => { + console.error('Request failed:', error); + } + } +); + +// Access the selected state (will be empty object {} unless selector provided) +const { isExecuting, currentAttempt } = state; +``` diff --git a/docs/framework/react/reference/functions/useasyncthrottler.md b/docs/framework/react/reference/functions/useasyncthrottler.md index 5802d49c..1feb0fe4 100644 --- a/docs/framework/react/reference/functions/useasyncthrottler.md +++ b/docs/framework/react/reference/functions/useasyncthrottler.md @@ -14,7 +14,7 @@ function useAsyncThrottler( selector): ReactAsyncThrottler ``` -Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:160](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L160) +Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:161](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L161) A low-level React hook that creates an `AsyncThrottler` instance to limit how often an async function can execute. diff --git a/docs/framework/react/reference/functions/usebatcher.md b/docs/framework/react/reference/functions/usebatcher.md index 8ee2d6c9..f16ec58d 100644 --- a/docs/framework/react/reference/functions/usebatcher.md +++ b/docs/framework/react/reference/functions/usebatcher.md @@ -14,7 +14,7 @@ function useBatcher( selector): ReactBatcher ``` -Defined in: [react-pacer/src/batcher/useBatcher.ts:121](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L121) +Defined in: [react-pacer/src/batcher/useBatcher.ts:122](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L122) A React hook that creates and manages a Batcher instance. diff --git a/docs/framework/react/reference/functions/usedebouncer.md b/docs/framework/react/reference/functions/usedebouncer.md index b3f3d0b6..5281a2f6 100644 --- a/docs/framework/react/reference/functions/usedebouncer.md +++ b/docs/framework/react/reference/functions/usedebouncer.md @@ -14,7 +14,7 @@ function useDebouncer( selector): ReactDebouncer ``` -Defined in: [react-pacer/src/debouncer/useDebouncer.ts:102](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L102) +Defined in: [react-pacer/src/debouncer/useDebouncer.ts:103](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L103) A React hook that creates and manages a Debouncer instance. diff --git a/docs/framework/react/reference/functions/usedefaultpaceroptions.md b/docs/framework/react/reference/functions/usedefaultpaceroptions.md new file mode 100644 index 00000000..532cd830 --- /dev/null +++ b/docs/framework/react/reference/functions/usedefaultpaceroptions.md @@ -0,0 +1,18 @@ +--- +id: useDefaultPacerOptions +title: useDefaultPacerOptions +--- + + + +# Function: useDefaultPacerOptions() + +```ts +function useDefaultPacerOptions(): PacerProviderOptions +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:59](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L59) + +## Returns + +[`PacerProviderOptions`](../../interfaces/pacerprovideroptions.md) diff --git a/docs/framework/react/reference/functions/usepacercontext.md b/docs/framework/react/reference/functions/usepacercontext.md new file mode 100644 index 00000000..4937efd5 --- /dev/null +++ b/docs/framework/react/reference/functions/usepacercontext.md @@ -0,0 +1,18 @@ +--- +id: usePacerContext +title: usePacerContext +--- + + + +# Function: usePacerContext() + +```ts +function usePacerContext(): null | PacerContextValue +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:55](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L55) + +## Returns + +`null` \| `PacerContextValue` diff --git a/docs/framework/react/reference/functions/usequeuer.md b/docs/framework/react/reference/functions/usequeuer.md index 40d322ce..bdbe8fe2 100644 --- a/docs/framework/react/reference/functions/usequeuer.md +++ b/docs/framework/react/reference/functions/usequeuer.md @@ -14,7 +14,7 @@ function useQueuer( selector): ReactQueuer ``` -Defined in: [react-pacer/src/queuer/useQueuer.ts:132](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L132) +Defined in: [react-pacer/src/queuer/useQueuer.ts:133](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L133) A React hook that creates and manages a Queuer instance. diff --git a/docs/framework/react/reference/functions/useratelimiter.md b/docs/framework/react/reference/functions/useratelimiter.md index e59d9e0d..ac7316b0 100644 --- a/docs/framework/react/reference/functions/useratelimiter.md +++ b/docs/framework/react/reference/functions/useratelimiter.md @@ -14,7 +14,7 @@ function useRateLimiter( selector): ReactRateLimiter ``` -Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:141](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L141) +Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:142](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L142) A low-level React hook that creates a `RateLimiter` instance to enforce rate limits on function execution. diff --git a/docs/framework/react/reference/functions/usethrottler.md b/docs/framework/react/reference/functions/usethrottler.md index 666bebaa..601b3927 100644 --- a/docs/framework/react/reference/functions/usethrottler.md +++ b/docs/framework/react/reference/functions/usethrottler.md @@ -14,7 +14,7 @@ function useThrottler( selector): ReactThrottler ``` -Defined in: [react-pacer/src/throttler/useThrottler.ts:107](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L107) +Defined in: [react-pacer/src/throttler/useThrottler.ts:108](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L108) A low-level React hook that creates a `Throttler` instance that limits how often the provided function can execute. diff --git a/docs/framework/react/reference/index.md b/docs/framework/react/reference/index.md index 1ba0d014..b0415dcc 100644 --- a/docs/framework/react/reference/index.md +++ b/docs/framework/react/reference/index.md @@ -9,10 +9,13 @@ title: "@tanstack/react-pacer" ## Interfaces +- [PacerProviderOptions](../interfaces/pacerprovideroptions.md) +- [PacerProviderProps](../interfaces/pacerproviderprops.md) - [ReactAsyncBatcher](../interfaces/reactasyncbatcher.md) - [ReactAsyncDebouncer](../interfaces/reactasyncdebouncer.md) - [ReactAsyncQueuer](../interfaces/reactasyncqueuer.md) - [ReactAsyncRateLimiter](../interfaces/reactasyncratelimiter.md) +- [ReactAsyncRetryer](../interfaces/reactasyncretryer.md) - [ReactAsyncThrottler](../interfaces/reactasyncthrottler.md) - [ReactBatcher](../interfaces/reactbatcher.md) - [ReactDebouncer](../interfaces/reactdebouncer.md) @@ -22,6 +25,7 @@ title: "@tanstack/react-pacer" ## Functions +- [PacerProvider](../functions/pacerprovider.md) - [useAsyncBatchedCallback](../functions/useasyncbatchedcallback.md) - [useAsyncBatcher](../functions/useasyncbatcher.md) - [useAsyncDebouncedCallback](../functions/useasyncdebouncedcallback.md) @@ -30,6 +34,7 @@ title: "@tanstack/react-pacer" - [useAsyncQueuer](../functions/useasyncqueuer.md) - [useAsyncRateLimitedCallback](../functions/useasyncratelimitedcallback.md) - [useAsyncRateLimiter](../functions/useasyncratelimiter.md) +- [useAsyncRetryer](../functions/useasyncretryer.md) - [useAsyncThrottledCallback](../functions/useasyncthrottledcallback.md) - [useAsyncThrottler](../functions/useasyncthrottler.md) - [useBatchedCallback](../functions/usebatchedcallback.md) @@ -38,6 +43,8 @@ title: "@tanstack/react-pacer" - [useDebouncedState](../functions/usedebouncedstate.md) - [useDebouncedValue](../functions/usedebouncedvalue.md) - [useDebouncer](../functions/usedebouncer.md) +- [useDefaultPacerOptions](../functions/usedefaultpaceroptions.md) +- [usePacerContext](../functions/usepacercontext.md) - [useQueuedState](../functions/usequeuedstate.md) - [useQueuedValue](../functions/usequeuedvalue.md) - [useQueuer](../functions/usequeuer.md) diff --git a/docs/framework/react/reference/interfaces/pacerprovideroptions.md b/docs/framework/react/reference/interfaces/pacerprovideroptions.md new file mode 100644 index 00000000..f148c0bf --- /dev/null +++ b/docs/framework/react/reference/interfaces/pacerprovideroptions.md @@ -0,0 +1,120 @@ +--- +id: PacerProviderOptions +title: PacerProviderOptions +--- + + + +# Interface: PacerProviderOptions + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:18](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L18) + +## Properties + +### asyncBatcher? + +```ts +optional asyncBatcher: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:19](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L19) + +*** + +### asyncDebouncer? + +```ts +optional asyncDebouncer: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L20) + +*** + +### asyncQueuer? + +```ts +optional asyncQueuer: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L21) + +*** + +### asyncRateLimiter? + +```ts +optional asyncRateLimiter: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:22](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L22) + +*** + +### asyncRetryer? + +```ts +optional asyncRetryer: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:23](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L23) + +*** + +### asyncThrottler? + +```ts +optional asyncThrottler: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L24) + +*** + +### batcher? + +```ts +optional batcher: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:25](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L25) + +*** + +### debouncer? + +```ts +optional debouncer: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:26](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L26) + +*** + +### queuer? + +```ts +optional queuer: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:27](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L27) + +*** + +### rateLimiter? + +```ts +optional rateLimiter: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:28](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L28) + +*** + +### throttler? + +```ts +optional throttler: Partial>; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:29](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L29) diff --git a/docs/framework/react/reference/interfaces/pacerproviderprops.md b/docs/framework/react/reference/interfaces/pacerproviderprops.md new file mode 100644 index 00000000..49380176 --- /dev/null +++ b/docs/framework/react/reference/interfaces/pacerproviderprops.md @@ -0,0 +1,30 @@ +--- +id: PacerProviderProps +title: PacerProviderProps +--- + + + +# Interface: PacerProviderProps + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:38](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L38) + +## Properties + +### children + +```ts +children: ReactNode; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:39](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L39) + +*** + +### options? + +```ts +optional options: PacerProviderOptions; +``` + +Defined in: [react-pacer/src/provider/PacerProvider.tsx:40](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L40) diff --git a/docs/framework/react/reference/interfaces/reactasyncbatcher.md b/docs/framework/react/reference/interfaces/reactasyncbatcher.md index 3b603968..4335c3c5 100644 --- a/docs/framework/react/reference/interfaces/reactasyncbatcher.md +++ b/docs/framework/react/reference/interfaces/reactasyncbatcher.md @@ -7,7 +7,7 @@ title: ReactAsyncBatcher # Interface: ReactAsyncBatcher\ -Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:10](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L10) +Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L11) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:10](https://github readonly state: Readonly; ``` -Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:17](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L17) +Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:18](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L18) Reactive state that will be updated and re-rendered when the batcher state changes @@ -41,7 +41,7 @@ Use this instead of `batcher.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:23](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L23) +Defined in: [react-pacer/src/async-batcher/useAsyncBatcher.ts:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts#L24) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactasyncdebouncer.md b/docs/framework/react/reference/interfaces/reactasyncdebouncer.md index bb9bd246..12644ed1 100644 --- a/docs/framework/react/reference/interfaces/reactasyncdebouncer.md +++ b/docs/framework/react/reference/interfaces/reactasyncdebouncer.md @@ -7,7 +7,7 @@ title: ReactAsyncDebouncer # Interface: ReactAsyncDebouncer\ -Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L11) +Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:12](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L12) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:11](https://gi readonly state: Readonly; ``` -Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L20) +Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L21) Reactive state that will be updated and re-rendered when the debouncer state changes @@ -41,7 +41,7 @@ Use this instead of `debouncer.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L26) +Defined in: [react-pacer/src/async-debouncer/useAsyncDebouncer.ts:27](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts#L27) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactasyncqueuer.md b/docs/framework/react/reference/interfaces/reactasyncqueuer.md index a37023a9..f07b1116 100644 --- a/docs/framework/react/reference/interfaces/reactasyncqueuer.md +++ b/docs/framework/react/reference/interfaces/reactasyncqueuer.md @@ -7,7 +7,7 @@ title: ReactAsyncQueuer # Interface: ReactAsyncQueuer\ -Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L10) +Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L11) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:10](https://github.c readonly state: Readonly; ``` -Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L17) +Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L18) Reactive state that will be updated and re-rendered when the queuer state changes @@ -41,7 +41,7 @@ Use this instead of `queuer.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:23](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L23) +Defined in: [react-pacer/src/async-queuer/useAsyncQueuer.ts:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts#L24) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactasyncratelimiter.md b/docs/framework/react/reference/interfaces/reactasyncratelimiter.md index d226ec96..a69d42d2 100644 --- a/docs/framework/react/reference/interfaces/reactasyncratelimiter.md +++ b/docs/framework/react/reference/interfaces/reactasyncratelimiter.md @@ -7,7 +7,7 @@ title: ReactAsyncRateLimiter # Interface: ReactAsyncRateLimiter\ -Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L11) +Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:12](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L12) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:11](https readonly state: Readonly; ``` -Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L20) +Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L21) Reactive state that will be updated and re-rendered when the rate limiter state changes @@ -41,7 +41,7 @@ Use this instead of `rateLimiter.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:26](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L26) +Defined in: [react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts:27](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts#L27) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactasyncretryer.md b/docs/framework/react/reference/interfaces/reactasyncretryer.md new file mode 100644 index 00000000..586aa7e5 --- /dev/null +++ b/docs/framework/react/reference/interfaces/reactasyncretryer.md @@ -0,0 +1,50 @@ +--- +id: ReactAsyncRetryer +title: ReactAsyncRetryer +--- + + + +# Interface: ReactAsyncRetryer\ + +Defined in: [react-pacer/src/async-retryer/useAsyncRetryer.ts:12](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts#L12) + +## Extends + +- `Omit`\<`AsyncRetryer`\<`TFn`\>, `"store"`\> + +## Type Parameters + +• **TFn** *extends* `AnyAsyncFunction` + +• **TSelected** = \{\} + +## Properties + +### state + +```ts +readonly state: Readonly; +``` + +Defined in: [react-pacer/src/async-retryer/useAsyncRetryer.ts:19](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts#L19) + +Reactive state that will be updated and re-rendered when the retryer state changes + +Use this instead of `retryer.store.state` + +*** + +### ~~store~~ + +```ts +readonly store: Store>>; +``` + +Defined in: [react-pacer/src/async-retryer/useAsyncRetryer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts#L25) + +#### Deprecated + +Use `retryer.state` instead of `retryer.store.state` if you want to read reactive state. +The state on the store object is not reactive, as it has not been wrapped in a `useStore` hook internally. +Although, you can make the state reactive by using the `useStore` in your own usage. diff --git a/docs/framework/react/reference/interfaces/reactasyncthrottler.md b/docs/framework/react/reference/interfaces/reactasyncthrottler.md index b7d8b408..24902767 100644 --- a/docs/framework/react/reference/interfaces/reactasyncthrottler.md +++ b/docs/framework/react/reference/interfaces/reactasyncthrottler.md @@ -7,7 +7,7 @@ title: ReactAsyncThrottler # Interface: ReactAsyncThrottler\ -Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L11) +Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:12](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L12) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:11](https://gi readonly state: Readonly; ``` -Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L20) +Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L21) Reactive state that will be updated and re-rendered when the throttler state changes @@ -41,7 +41,7 @@ Use this instead of `throttler.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:26](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L26) +Defined in: [react-pacer/src/async-throttler/useAsyncThrottler.ts:27](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts#L27) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactbatcher.md b/docs/framework/react/reference/interfaces/reactbatcher.md index b1afe1ea..c231c1eb 100644 --- a/docs/framework/react/reference/interfaces/reactbatcher.md +++ b/docs/framework/react/reference/interfaces/reactbatcher.md @@ -7,7 +7,7 @@ title: ReactBatcher # Interface: ReactBatcher\ -Defined in: [react-pacer/src/batcher/useBatcher.ts:7](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L7) +Defined in: [react-pacer/src/batcher/useBatcher.ts:8](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L8) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/batcher/useBatcher.ts:7](https://github.com/TanStac readonly state: Readonly; ``` -Defined in: [react-pacer/src/batcher/useBatcher.ts:14](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L14) +Defined in: [react-pacer/src/batcher/useBatcher.ts:15](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L15) Reactive state that will be updated and re-rendered when the batcher state changes @@ -41,7 +41,7 @@ Use this instead of `batcher.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/batcher/useBatcher.ts:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L20) +Defined in: [react-pacer/src/batcher/useBatcher.ts:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/batcher/useBatcher.ts#L21) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactdebouncer.md b/docs/framework/react/reference/interfaces/reactdebouncer.md index 85cf17e6..c9c0dbf7 100644 --- a/docs/framework/react/reference/interfaces/reactdebouncer.md +++ b/docs/framework/react/reference/interfaces/reactdebouncer.md @@ -7,7 +7,7 @@ title: ReactDebouncer # Interface: ReactDebouncer\ -Defined in: [react-pacer/src/debouncer/useDebouncer.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L11) +Defined in: [react-pacer/src/debouncer/useDebouncer.ts:12](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L12) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/debouncer/useDebouncer.ts:11](https://github.com/Ta readonly state: Readonly; ``` -Defined in: [react-pacer/src/debouncer/useDebouncer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L18) +Defined in: [react-pacer/src/debouncer/useDebouncer.ts:19](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L19) Reactive state that will be updated and re-rendered when the debouncer state changes @@ -41,7 +41,7 @@ Use this instead of `debouncer.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/debouncer/useDebouncer.ts:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L24) +Defined in: [react-pacer/src/debouncer/useDebouncer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/debouncer/useDebouncer.ts#L25) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactqueuer.md b/docs/framework/react/reference/interfaces/reactqueuer.md index e3ccdecf..34b3f68f 100644 --- a/docs/framework/react/reference/interfaces/reactqueuer.md +++ b/docs/framework/react/reference/interfaces/reactqueuer.md @@ -7,7 +7,7 @@ title: ReactQueuer # Interface: ReactQueuer\ -Defined in: [react-pacer/src/queuer/useQueuer.ts:7](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L7) +Defined in: [react-pacer/src/queuer/useQueuer.ts:8](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L8) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/queuer/useQueuer.ts:7](https://github.com/TanStack/ readonly state: Readonly; ``` -Defined in: [react-pacer/src/queuer/useQueuer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L14) +Defined in: [react-pacer/src/queuer/useQueuer.ts:15](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L15) Reactive state that will be updated and re-rendered when the queuer state changes @@ -41,7 +41,7 @@ Use this instead of `queuer.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/queuer/useQueuer.ts:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L20) +Defined in: [react-pacer/src/queuer/useQueuer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/queuer/useQueuer.ts#L21) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactratelimiter.md b/docs/framework/react/reference/interfaces/reactratelimiter.md index 3096a5dc..885732c3 100644 --- a/docs/framework/react/reference/interfaces/reactratelimiter.md +++ b/docs/framework/react/reference/interfaces/reactratelimiter.md @@ -7,7 +7,7 @@ title: ReactRateLimiter # Interface: ReactRateLimiter\ -Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L11) +Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:12](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L12) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:11](https://github.c readonly state: Readonly; ``` -Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:18](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L18) +Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:19](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L19) Reactive state that will be updated and re-rendered when the rate limiter state changes @@ -41,7 +41,7 @@ Use this instead of `rateLimiter.store.state` readonly store: Store>; ``` -Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L24) +Defined in: [react-pacer/src/rate-limiter/useRateLimiter.ts:25](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/rate-limiter/useRateLimiter.ts#L25) #### Deprecated diff --git a/docs/framework/react/reference/interfaces/reactthrottler.md b/docs/framework/react/reference/interfaces/reactthrottler.md index 14ea1336..d90fc71f 100644 --- a/docs/framework/react/reference/interfaces/reactthrottler.md +++ b/docs/framework/react/reference/interfaces/reactthrottler.md @@ -7,7 +7,7 @@ title: ReactThrottler # Interface: ReactThrottler\ -Defined in: [react-pacer/src/throttler/useThrottler.ts:11](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L11) +Defined in: [react-pacer/src/throttler/useThrottler.ts:12](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L12) ## Extends @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/throttler/useThrottler.ts:11](https://github.com/Ta readonly state: Readonly; ``` -Defined in: [react-pacer/src/throttler/useThrottler.ts:18](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L18) +Defined in: [react-pacer/src/throttler/useThrottler.ts:19](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L19) Reactive state that will be updated and re-rendered when the throttler state changes @@ -41,7 +41,7 @@ Use this instead of `throttler.store.state` readonly store: Store>>; ``` -Defined in: [react-pacer/src/throttler/useThrottler.ts:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L24) +Defined in: [react-pacer/src/throttler/useThrottler.ts:25](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/throttler/useThrottler.ts#L25) #### Deprecated diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index 72e66ddf..cacfbfc5 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -7,7 +7,7 @@ title: AsyncBatcher # Class: AsyncBatcher\ -Defined in: [async-batcher.ts:219](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L219) +Defined in: [async-batcher.ts:230](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L230) A class that collects items and processes them in batches asynchronously. @@ -82,7 +82,7 @@ batcher.addItem(2); new AsyncBatcher(fn, initialOptions): AsyncBatcher ``` -Defined in: [async-batcher.ts:226](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L226) +Defined in: [async-batcher.ts:238](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L238) #### Parameters @@ -100,13 +100,23 @@ Defined in: [async-batcher.ts:226](https://github.com/TanStack/pacer/blob/main/p ## Properties +### asyncRetryer + +```ts +asyncRetryer: AsyncRetryer<(items) => Promise>; +``` + +Defined in: [async-batcher.ts:235](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L235) + +*** + ### fn() ```ts fn: (items) => Promise; ``` -Defined in: [async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L227) +Defined in: [async-batcher.ts:239](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L239) #### Parameters @@ -126,7 +136,7 @@ Defined in: [async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/p options: AsyncBatcherOptionsWithOptionalCallbacks; ``` -Defined in: [async-batcher.ts:223](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L223) +Defined in: [async-batcher.ts:234](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L234) *** @@ -136,7 +146,7 @@ Defined in: [async-batcher.ts:223](https://github.com/TanStack/pacer/blob/main/p readonly store: Store>>; ``` -Defined in: [async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L220) +Defined in: [async-batcher.ts:231](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L231) ## Methods @@ -146,7 +156,7 @@ Defined in: [async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/p addItem(item): void ``` -Defined in: [async-batcher.ts:277](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L277) +Defined in: [async-batcher.ts:293](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L293) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -169,7 +179,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L378) +Defined in: [async-batcher.ts:394](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L394) Removes all items from the async batcher @@ -185,7 +195,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [async-batcher.ts:352](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L352) +Defined in: [async-batcher.ts:368](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L368) Processes the current batch of items immediately @@ -201,7 +211,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [async-batcher.ts:360](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L360) +Defined in: [async-batcher.ts:376](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L376) Returns a copy of all items in the async batcher @@ -217,7 +227,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [async-batcher.ts:364](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L364) +Defined in: [async-batcher.ts:380](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L380) #### Returns @@ -231,7 +241,7 @@ Defined in: [async-batcher.ts:364](https://github.com/TanStack/pacer/blob/main/p reset(): void ``` -Defined in: [async-batcher.ts:385](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L385) +Defined in: [async-batcher.ts:401](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L401) Resets the async batcher state to its default values @@ -247,7 +257,7 @@ Resets the async batcher state to its default values setOptions(newOptions): void ``` -Defined in: [async-batcher.ts:241](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L241) +Defined in: [async-batcher.ts:257](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L257) Updates the async batcher options diff --git a/docs/reference/classes/asyncdebouncer.md b/docs/reference/classes/asyncdebouncer.md index 4be9dab3..411ff090 100644 --- a/docs/reference/classes/asyncdebouncer.md +++ b/docs/reference/classes/asyncdebouncer.md @@ -7,7 +7,7 @@ title: AsyncDebouncer # Class: AsyncDebouncer\ -Defined in: [async-debouncer.ts:177](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L177) +Defined in: [async-debouncer.ts:186](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L186) A class that creates an async debounced function. @@ -66,7 +66,7 @@ const results = await asyncDebouncer.maybeExecute(inputElement.value); new AsyncDebouncer(fn, initialOptions): AsyncDebouncer ``` -Defined in: [async-debouncer.ts:188](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L188) +Defined in: [async-debouncer.ts:197](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L197) #### Parameters @@ -84,13 +84,23 @@ Defined in: [async-debouncer.ts:188](https://github.com/TanStack/pacer/blob/main ## Properties +### asyncRetryer + +```ts +asyncRetryer: AsyncRetryer; +``` + +Defined in: [async-debouncer.ts:191](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L191) + +*** + ### fn ```ts fn: TFn; ``` -Defined in: [async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L189) +Defined in: [async-debouncer.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L198) *** @@ -100,7 +110,7 @@ Defined in: [async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main options: AsyncDebouncerOptions; ``` -Defined in: [async-debouncer.ts:181](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L181) +Defined in: [async-debouncer.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L190) *** @@ -110,7 +120,7 @@ Defined in: [async-debouncer.ts:181](https://github.com/TanStack/pacer/blob/main readonly store: Store>>; ``` -Defined in: [async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L178) +Defined in: [async-debouncer.ts:187](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L187) ## Methods @@ -120,7 +130,7 @@ Defined in: [async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-debouncer.ts:387](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L387) +Defined in: [async-debouncer.ts:395](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L395) Cancels any pending execution or aborts any execution in progress @@ -136,7 +146,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-debouncer.ts:339](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L339) +Defined in: [async-debouncer.ts:350](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L350) Processes the current pending execution immediately @@ -152,7 +162,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-debouncer.ts:262](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L262) +Defined in: [async-debouncer.ts:275](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L275) Attempts to execute the debounced function. If a call is already in progress, it will be queued. @@ -188,7 +198,7 @@ The error from the debounced function if no onError handler is configured reset(): void ``` -Defined in: [async-debouncer.ts:396](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L396) +Defined in: [async-debouncer.ts:404](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L404) Resets the debouncer state to its default values @@ -204,7 +214,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-debouncer.ts:203](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L203) +Defined in: [async-debouncer.ts:216](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L216) Updates the async debouncer options diff --git a/docs/reference/classes/asyncqueuer.md b/docs/reference/classes/asyncqueuer.md index 797f7e4f..fa8710c1 100644 --- a/docs/reference/classes/asyncqueuer.md +++ b/docs/reference/classes/asyncqueuer.md @@ -7,7 +7,7 @@ title: AsyncQueuer # Class: AsyncQueuer\ -Defined in: [async-queuer.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L259) +Defined in: [async-queuer.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L268) A flexible asynchronous queue for processing tasks with configurable concurrency, priority, and expiration. @@ -71,7 +71,7 @@ asyncQueuer.start(); new AsyncQueuer(fn, initialOptions): AsyncQueuer ``` -Defined in: [async-queuer.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L266) +Defined in: [async-queuer.ts:276](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L276) #### Parameters @@ -89,13 +89,23 @@ Defined in: [async-queuer.ts:266](https://github.com/TanStack/pacer/blob/main/pa ## Properties +### asyncRetryer + +```ts +asyncRetryer: AsyncRetryer<(item) => Promise>; +``` + +Defined in: [async-queuer.ts:273](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L273) + +*** + ### fn() ```ts fn: (item) => Promise; ``` -Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L267) +Defined in: [async-queuer.ts:277](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L277) #### Parameters @@ -115,7 +125,7 @@ Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/pa options: AsyncQueuerOptions; ``` -Defined in: [async-queuer.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L263) +Defined in: [async-queuer.ts:272](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L272) *** @@ -125,7 +135,7 @@ Defined in: [async-queuer.ts:263](https://github.com/TanStack/pacer/blob/main/pa readonly store: Store>>; ``` -Defined in: [async-queuer.ts:260](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L260) +Defined in: [async-queuer.ts:269](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L269) ## Methods @@ -138,7 +148,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [async-queuer.ts:400](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L400) +Defined in: [async-queuer.ts:414](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L414) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -176,7 +186,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [async-queuer.ts:704](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L704) +Defined in: [async-queuer.ts:718](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L718) Removes all pending items from the queue. Does not affect active tasks. @@ -192,7 +202,7 @@ Removes all pending items from the queue. Does not affect active tasks. execute(position?): Promise ``` -Defined in: [async-queuer.ts:526](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L526) +Defined in: [async-queuer.ts:540](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L540) Removes and returns the next item from the queue and executes the task function with it. @@ -222,7 +232,7 @@ queuer.execute('back'); flush(numberOfItems, position?): Promise ``` -Defined in: [async-queuer.ts:561](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L561) +Defined in: [async-queuer.ts:575](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L575) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -249,7 +259,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): Promise ``` -Defined in: [async-queuer.ts:575](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L575) +Defined in: [async-queuer.ts:589](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L589) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -272,7 +282,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:479](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L479) +Defined in: [async-queuer.ts:493](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L493) Removes and returns the next item from the queue without executing the task function. Use for manual queue management. Normally, use execute() to process items. @@ -304,7 +314,7 @@ queuer.getNextItem('back'); peekActiveItems(): TValue[] ``` -Defined in: [async-queuer.ts:667](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L667) +Defined in: [async-queuer.ts:681](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L681) Returns the items currently being processed (active tasks). @@ -320,7 +330,7 @@ Returns the items currently being processed (active tasks). peekAllItems(): TValue[] ``` -Defined in: [async-queuer.ts:660](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L660) +Defined in: [async-queuer.ts:674](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L674) Returns a copy of all items in the queue, including active and pending items. @@ -336,7 +346,7 @@ Returns a copy of all items in the queue, including active and pending items. peekNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:650](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L650) +Defined in: [async-queuer.ts:664](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L664) Returns the next item in the queue without removing it. @@ -365,7 +375,7 @@ queuer.peekNextItem('back'); // back peekPendingItems(): TValue[] ``` -Defined in: [async-queuer.ts:674](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L674) +Defined in: [async-queuer.ts:688](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L688) Returns the items waiting to be processed (pending tasks). @@ -381,7 +391,7 @@ Returns the items waiting to be processed (pending tasks). reset(): void ``` -Defined in: [async-queuer.ts:712](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L712) +Defined in: [async-queuer.ts:726](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L726) Resets the queuer state to its default values @@ -397,7 +407,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [async-queuer.ts:298](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L298) +Defined in: [async-queuer.ts:312](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L312) Updates the queuer options. New options are merged with existing options. @@ -419,7 +429,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [async-queuer.ts:681](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L681) +Defined in: [async-queuer.ts:695](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L695) Starts processing items in the queue. If already running, does nothing. @@ -435,7 +445,7 @@ Starts processing items in the queue. If already running, does nothing. stop(): void ``` -Defined in: [async-queuer.ts:691](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L691) +Defined in: [async-queuer.ts:705](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L705) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index 9e1c68cd..a3dcb267 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -7,7 +7,7 @@ title: AsyncRateLimiter # Class: AsyncRateLimiter\ -Defined in: [async-rate-limiter.ts:205](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L205) +Defined in: [async-rate-limiter.ts:214](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L214) A class that creates an async rate-limited function. @@ -87,7 +87,7 @@ const data = await rateLimiter.maybeExecute('123'); new AsyncRateLimiter(fn, initialOptions): AsyncRateLimiter ``` -Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L212) +Defined in: [async-rate-limiter.ts:222](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L222) #### Parameters @@ -105,13 +105,23 @@ Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/m ## Properties +### asyncRetryer + +```ts +asyncRetryer: AsyncRetryer; +``` + +Defined in: [async-rate-limiter.ts:219](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L219) + +*** + ### fn ```ts fn: TFn; ``` -Defined in: [async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L213) +Defined in: [async-rate-limiter.ts:223](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L223) *** @@ -121,7 +131,7 @@ Defined in: [async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/m options: AsyncRateLimiterOptions; ``` -Defined in: [async-rate-limiter.ts:209](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L209) +Defined in: [async-rate-limiter.ts:218](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L218) *** @@ -131,7 +141,7 @@ Defined in: [async-rate-limiter.ts:209](https://github.com/TanStack/pacer/blob/m readonly store: Store>>; ``` -Defined in: [async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L206) +Defined in: [async-rate-limiter.ts:215](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L215) ## Methods @@ -141,7 +151,7 @@ Defined in: [async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/m getMsUntilNextWindow(): number ``` -Defined in: [async-rate-limiter.ts:433](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L433) +Defined in: [async-rate-limiter.ts:447](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L447) Returns the number of milliseconds until the next execution will be possible For fixed windows, this is the time until the current window resets @@ -159,7 +169,7 @@ For sliding windows, this is the time until the oldest execution expires getRemainingInWindow(): number ``` -Defined in: [async-rate-limiter.ts:423](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L423) +Defined in: [async-rate-limiter.ts:437](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L437) Returns the number of remaining executions allowed in the current window @@ -175,7 +185,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [async-rate-limiter.ts:302](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L302) +Defined in: [async-rate-limiter.ts:316](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L316) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -223,7 +233,7 @@ const result2 = await rateLimiter.maybeExecute('arg1', 'arg2'); // undefined reset(): void ``` -Defined in: [async-rate-limiter.ts:444](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L444) +Defined in: [async-rate-limiter.ts:458](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L458) Resets the rate limiter state @@ -239,7 +249,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [async-rate-limiter.ts:230](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L230) +Defined in: [async-rate-limiter.ts:244](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L244) Updates the async rate limiter options diff --git a/docs/reference/classes/asyncretryer.md b/docs/reference/classes/asyncretryer.md new file mode 100644 index 00000000..20cc7e58 --- /dev/null +++ b/docs/reference/classes/asyncretryer.md @@ -0,0 +1,225 @@ +--- +id: AsyncRetryer +title: AsyncRetryer +--- + + + +# Class: AsyncRetryer\ + +Defined in: [async-retryer.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L198) + +Provides robust retry functionality for asynchronous functions, supporting configurable backoff strategies, +attempt limits, and detailed state management. The AsyncRetryer class is designed to help you reliably +execute async operations that may fail intermittently, such as network requests or database operations, +by automatically retrying them according to your chosen policy. + +## Retrying Concepts + +- **Retrying**: Automatically re-executes a failed async function up to a specified number of attempts. + Useful for handling transient errors (e.g., network flakiness, rate limits, temporary server issues). +- **Backoff Strategies**: Controls the delay between retry attempts (default: `'exponential'`): + - `'exponential'`: Wait time doubles with each attempt (1s, 2s, 4s, ...) - **DEFAULT** + - `'linear'`: Wait time increases linearly (1s, 2s, 3s, ...) + - `'fixed'`: Waits a constant amount of time (`baseWait`) between each attempt +- **Abort & Cancellation**: Supports cancellation via an internal `AbortController`. If cancelled, retries are stopped. +- **State Management**: Tracks execution status, current attempt, last error, and result using TanStack Store. +- **Callbacks**: Provides hooks for handling success, error, retry, and settled events. + +## State Management +- Uses TanStack Store for fine-grained reactivity. +- State includes: `isExecuting`, `currentAttempt`, `lastError`, `lastResult`, and `status` (`idle`, `executing`, `retrying`, `disabled`). +- State can be accessed via the `store.state` property. + +## Error Handling +The `throwOnError` option controls when errors are thrown (default: `'last'`): +- `'last'`: Only throws the final error after all retries are exhausted - **DEFAULT** +- `true`: Throws every error immediately (no retries) +- `false`: Never throws errors, returns `undefined` instead + +Additional error handling: +- `onError`: Called for every error (including during retries) +- `onLastError`: Called only for the final error after all retries fail +- If `onError` is provided but `throwOnError` is not specified, defaults to `'last'` + +## Usage +- Use for async operations that may fail transiently and benefit from retrying. +- Configure `maxAttempts`, `backoff`, and `baseWait` to control retry behavior. +- Use `onRetry`, `onSuccess`, `onError`, and `onSettled` for custom side effects. + +## Example + +```typescript +// Retry a fetch operation up to 5 times with exponential backoff +const retryer = new AsyncRetryer(fetchData, { + maxAttempts: 5, + backoff: 'exponential', + baseWait: 1000, + onRetry: (attempt, error) => console.log(`Retry attempt ${attempt} after error:`, error), + onSuccess: (result) => console.log('Success:', result), + onError: (error) => console.error('Error:', error), + onLastError: (error) => console.error('All retries failed:', error), +}) + +const result = await retryer.execute(userId) +``` + +## Type Parameters + +• **TFn** *extends* [`AnyAsyncFunction`](../../type-aliases/anyasyncfunction.md) + +The async function type to be retried. + +## Constructors + +### new AsyncRetryer() + +```ts +new AsyncRetryer(fn, initialOptions): AsyncRetryer +``` + +Defined in: [async-retryer.ts:210](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L210) + +Creates a new AsyncRetryer instance + +#### Parameters + +##### fn + +`TFn` + +The async function to retry + +##### initialOptions + +[`AsyncRetryerOptions`](../../interfaces/asyncretryeroptions.md)\<`TFn`\> = `{}` + +Configuration options for the retryer + +#### Returns + +[`AsyncRetryer`](../asyncretryer.md)\<`TFn`\> + +## Properties + +### fn + +```ts +fn: TFn; +``` + +Defined in: [async-retryer.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L211) + +The async function to retry + +*** + +### options + +```ts +options: AsyncRetryerOptions & Omit>, + | "initialState" + | "onError" + | "onLastError" + | "onRetry" + | "onSettled" +| "onSuccess">; +``` + +Defined in: [async-retryer.ts:202](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L202) + +*** + +### store + +```ts +readonly store: Store>>; +``` + +Defined in: [async-retryer.ts:199](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L199) + +## Methods + +### cancel() + +```ts +cancel(): void +``` + +Defined in: [async-retryer.ts:395](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L395) + +Cancels the current execution and any pending retries + +#### Returns + +`void` + +*** + +### execute() + +```ts +execute(...args): Promise> +``` + +Defined in: [async-retryer.ts:284](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L284) + +Executes the function with retry logic + +#### Parameters + +##### args + +...`Parameters`\<`TFn`\> + +Arguments to pass to the function + +#### Returns + +`Promise`\<`undefined` \| `ReturnType`\<`TFn`\>\> + +The function result, or undefined if disabled or all retries failed (when throwOnError is false) + +#### Throws + +The last error if throwOnError is true and all retries fail + +*** + +### reset() + +```ts +reset(): void +``` + +Defined in: [async-retryer.ts:409](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L409) + +Resets the retryer to its initial state and cancels any ongoing execution + +#### Returns + +`void` + +*** + +### setOptions() + +```ts +setOptions(newOptions): void +``` + +Defined in: [async-retryer.ts:228](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L228) + +Updates the retryer options + +#### Parameters + +##### newOptions + +`Partial`\<[`AsyncRetryerOptions`](../../interfaces/asyncretryeroptions.md)\<`TFn`\>\> + +Partial options to merge with existing options + +#### Returns + +`void` diff --git a/docs/reference/classes/asyncthrottler.md b/docs/reference/classes/asyncthrottler.md index cd73bfeb..50440785 100644 --- a/docs/reference/classes/asyncthrottler.md +++ b/docs/reference/classes/asyncthrottler.md @@ -7,7 +7,7 @@ title: AsyncThrottler # Class: AsyncThrottler\ -Defined in: [async-throttler.ts:188](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L188) +Defined in: [async-throttler.ts:197](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L197) A class that creates an async throttled function. @@ -69,7 +69,7 @@ const result = await throttler.maybeExecute(inputElement.value); new AsyncThrottler(fn, initialOptions): AsyncThrottler ``` -Defined in: [async-throttler.ts:199](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L199) +Defined in: [async-throttler.ts:208](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L208) #### Parameters @@ -87,13 +87,23 @@ Defined in: [async-throttler.ts:199](https://github.com/TanStack/pacer/blob/main ## Properties +### asyncRetryer + +```ts +asyncRetryer: AsyncRetryer; +``` + +Defined in: [async-throttler.ts:202](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L202) + +*** + ### fn ```ts fn: TFn; ``` -Defined in: [async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L200) +Defined in: [async-throttler.ts:209](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L209) *** @@ -103,7 +113,7 @@ Defined in: [async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main options: AsyncThrottlerOptions; ``` -Defined in: [async-throttler.ts:192](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L192) +Defined in: [async-throttler.ts:201](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L201) *** @@ -113,7 +123,7 @@ Defined in: [async-throttler.ts:192](https://github.com/TanStack/pacer/blob/main readonly store: Store>>; ``` -Defined in: [async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L189) +Defined in: [async-throttler.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L198) ## Methods @@ -123,7 +133,7 @@ Defined in: [async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-throttler.ts:422](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L422) +Defined in: [async-throttler.ts:430](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L430) Cancels any pending execution or aborts any execution in progress @@ -139,7 +149,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-throttler.ts:371](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L371) +Defined in: [async-throttler.ts:382](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L382) Processes the current pending execution immediately @@ -155,7 +165,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-throttler.ts:281](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L281) +Defined in: [async-throttler.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L294) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -197,7 +207,7 @@ await throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [async-throttler.ts:430](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L430) +Defined in: [async-throttler.ts:438](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L438) Resets the debouncer state to its default values @@ -213,7 +223,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-throttler.ts:214](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L214) +Defined in: [async-throttler.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L227) Updates the async throttler options diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index c97f6e49..d3bf8d00 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -11,7 +11,7 @@ title: asyncBatch function asyncBatch(fn, options): (item) => void ``` -Defined in: [async-batcher.ts:440](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L440) +Defined in: [async-batcher.ts:456](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L456) Creates an async batcher that processes items in batches diff --git a/docs/reference/functions/asyncdebounce.md b/docs/reference/functions/asyncdebounce.md index c1b269ac..04c74624 100644 --- a/docs/reference/functions/asyncdebounce.md +++ b/docs/reference/functions/asyncdebounce.md @@ -11,7 +11,7 @@ title: asyncDebounce function asyncDebounce(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-debouncer.ts:445](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L445) +Defined in: [async-debouncer.ts:453](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L453) Creates an async debounced function that delays execution until after a specified wait time. The debounced function will only execute once the wait period has elapsed without any new calls. diff --git a/docs/reference/functions/asyncqueue.md b/docs/reference/functions/asyncqueue.md index fe62c082..76cc1c38 100644 --- a/docs/reference/functions/asyncqueue.md +++ b/docs/reference/functions/asyncqueue.md @@ -11,7 +11,7 @@ title: asyncQueue function asyncQueue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [async-queuer.ts:751](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L751) +Defined in: [async-queuer.ts:765](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L765) Creates a new AsyncQueuer instance and returns a bound addItem function for adding tasks. The queuer is started automatically and ready to process items. diff --git a/docs/reference/functions/asyncratelimit.md b/docs/reference/functions/asyncratelimit.md index 4810dfee..49704cdd 100644 --- a/docs/reference/functions/asyncratelimit.md +++ b/docs/reference/functions/asyncratelimit.md @@ -11,7 +11,7 @@ title: asyncRateLimit function asyncRateLimit(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-rate-limiter.ts:515](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L515) +Defined in: [async-rate-limiter.ts:529](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L529) Creates an async rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/asyncretry.md b/docs/reference/functions/asyncretry.md new file mode 100644 index 00000000..3f6b2424 --- /dev/null +++ b/docs/reference/functions/asyncretry.md @@ -0,0 +1,61 @@ +--- +id: asyncRetry +title: asyncRetry +--- + + + +# Function: asyncRetry() + +```ts +function asyncRetry(fn, initialOptions): (...args) => Promise> +``` + +Defined in: [async-retryer.ts:432](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L432) + +Creates a retry-enabled version of an async function + +## Type Parameters + +• **TFn** *extends* [`AnyAsyncFunction`](../../type-aliases/anyasyncfunction.md) + +## Parameters + +### fn + +`TFn` + +The async function to add retry functionality to + +### initialOptions + +[`AsyncRetryerOptions`](../../interfaces/asyncretryeroptions.md)\<`TFn`\> = `{}` + +Configuration options for the retry behavior + +## Returns + +`Function` + +A new function that executes the original with retry logic + +### Parameters + +#### args + +...`Parameters`\<`TFn`\> + +### Returns + +`Promise`\<`undefined` \| `ReturnType`\<`TFn`\>\> + +## Example + +```typescript +const retryFetch = asyncRetry(fetch, { + maxAttempts: 3, + backoff: 'exponential' +}) + +const response = await retryFetch('/api/data') +``` diff --git a/docs/reference/functions/asyncthrottle.md b/docs/reference/functions/asyncthrottle.md index 5e83fd7d..5efca894 100644 --- a/docs/reference/functions/asyncthrottle.md +++ b/docs/reference/functions/asyncthrottle.md @@ -11,7 +11,7 @@ title: asyncThrottle function asyncThrottle(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-throttler.ts:478](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L478) +Defined in: [async-throttler.ts:486](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L486) Creates an async throttled function that limits how often the function can execute. The throttled function will execute at most once per wait period, even if called multiple times. diff --git a/docs/reference/index.md b/docs/reference/index.md index a592ae55..a8719c78 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -13,6 +13,7 @@ title: "@tanstack/pacer" - [AsyncDebouncer](../classes/asyncdebouncer.md) - [AsyncQueuer](../classes/asyncqueuer.md) - [AsyncRateLimiter](../classes/asyncratelimiter.md) +- [AsyncRetryer](../classes/asyncretryer.md) - [AsyncThrottler](../classes/asyncthrottler.md) - [Batcher](../classes/batcher.md) - [Debouncer](../classes/debouncer.md) @@ -30,6 +31,8 @@ title: "@tanstack/pacer" - [AsyncQueuerState](../interfaces/asyncqueuerstate.md) - [AsyncRateLimiterOptions](../interfaces/asyncratelimiteroptions.md) - [AsyncRateLimiterState](../interfaces/asyncratelimiterstate.md) +- [AsyncRetryerOptions](../interfaces/asyncretryeroptions.md) +- [AsyncRetryerState](../interfaces/asyncretryerstate.md) - [AsyncThrottlerOptions](../interfaces/asyncthrottleroptions.md) - [AsyncThrottlerState](../interfaces/asyncthrottlerstate.md) - [BatcherOptions](../interfaces/batcheroptions.md) @@ -56,6 +59,7 @@ title: "@tanstack/pacer" - [asyncDebounce](../functions/asyncdebounce.md) - [asyncQueue](../functions/asyncqueue.md) - [asyncRateLimit](../functions/asyncratelimit.md) +- [asyncRetry](../functions/asyncretry.md) - [asyncThrottle](../functions/asyncthrottle.md) - [batch](../functions/batch.md) - [debounce](../functions/debounce.md) diff --git a/docs/reference/interfaces/asyncbatcheroptions.md b/docs/reference/interfaces/asyncbatcheroptions.md index 78b35a21..56aa2d2e 100644 --- a/docs/reference/interfaces/asyncbatcheroptions.md +++ b/docs/reference/interfaces/asyncbatcheroptions.md @@ -7,7 +7,7 @@ title: AsyncBatcherOptions # Interface: AsyncBatcherOptions\ -Defined in: [async-batcher.ts:81](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L81) +Defined in: [async-batcher.ts:83](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L83) Options for configuring an AsyncBatcher instance @@ -17,13 +17,25 @@ Options for configuring an AsyncBatcher instance ## Properties +### asyncRetryerOptions? + +```ts +optional asyncRetryerOptions: AsyncRetryerOptions<(items) => Promise>; +``` + +Defined in: [async-batcher.ts:87](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L87) + +Options for configuring the underlying async retryer + +*** + ### getShouldExecute()? ```ts optional getShouldExecute: (items, batcher) => boolean; ``` -Defined in: [async-batcher.ts:86](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L86) +Defined in: [async-batcher.ts:94](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L94) Custom function to determine if a batch should be processed Return true to process the batch immediately @@ -50,7 +62,7 @@ Return true to process the batch immediately optional initialState: Partial>; ``` -Defined in: [async-batcher.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L93) +Defined in: [async-batcher.ts:101](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L101) Initial state for the async batcher @@ -62,7 +74,7 @@ Initial state for the async batcher optional maxSize: number; ``` -Defined in: [async-batcher.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L98) +Defined in: [async-batcher.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L106) Maximum number of items in a batch @@ -80,7 +92,7 @@ Infinity optional onError: (error, batch, batcher) => void; ``` -Defined in: [async-batcher.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L104) +Defined in: [async-batcher.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L112) Optional error handler for when the batch function throws. If provided, the handler will be called with the error, the batch of items that failed, and batcher instance. @@ -112,7 +124,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onItemsChange: (batcher) => void; ``` -Defined in: [async-batcher.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L112) +Defined in: [async-batcher.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L120) Callback fired after items are added to the batcher @@ -134,7 +146,7 @@ Callback fired after items are added to the batcher optional onSettled: (batch, batcher) => void; ``` -Defined in: [async-batcher.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L116) +Defined in: [async-batcher.ts:124](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L124) Optional callback to call when a batch is settled (completed or failed) @@ -160,7 +172,7 @@ Optional callback to call when a batch is settled (completed or failed) optional onSuccess: (result, batch, batcher) => void; ``` -Defined in: [async-batcher.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L120) +Defined in: [async-batcher.ts:128](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L128) Optional callback to call when a batch succeeds @@ -190,7 +202,7 @@ Optional callback to call when a batch succeeds optional started: boolean; ``` -Defined in: [async-batcher.ts:129](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L129) +Defined in: [async-batcher.ts:137](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L137) Whether the batcher should start processing immediately @@ -208,7 +220,7 @@ true optional throwOnError: boolean; ``` -Defined in: [async-batcher.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L135) +Defined in: [async-batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L143) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -222,7 +234,7 @@ Can be explicitly set to override these defaults. optional wait: number | (asyncBatcher) => number; ``` -Defined in: [async-batcher.ts:142](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L142) +Defined in: [async-batcher.ts:150](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L150) Maximum time in milliseconds to wait before processing a batch. If the wait duration has elapsed, the batch will be processed. diff --git a/docs/reference/interfaces/asyncbatcherstate.md b/docs/reference/interfaces/asyncbatcherstate.md index 6a3a6970..49eb38c2 100644 --- a/docs/reference/interfaces/asyncbatcherstate.md +++ b/docs/reference/interfaces/asyncbatcherstate.md @@ -7,7 +7,7 @@ title: AsyncBatcherState # Interface: AsyncBatcherState\ -Defined in: [async-batcher.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L5) +Defined in: [async-batcher.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L7) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-batcher.ts:5](https://github.com/TanStack/pacer/blob/main/pac errorCount: number; ``` -Defined in: [async-batcher.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L9) +Defined in: [async-batcher.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L11) Number of batch executions that have resulted in errors @@ -33,7 +33,7 @@ Number of batch executions that have resulted in errors failedItems: TValue[]; ``` -Defined in: [async-batcher.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L13) +Defined in: [async-batcher.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L15) Array of items that failed during batch processing @@ -45,7 +45,7 @@ Array of items that failed during batch processing isEmpty: boolean; ``` -Defined in: [async-batcher.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L17) +Defined in: [async-batcher.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L19) Whether the batcher has no items to process (items array is empty) @@ -57,7 +57,7 @@ Whether the batcher has no items to process (items array is empty) isExecuting: boolean; ``` -Defined in: [async-batcher.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L21) +Defined in: [async-batcher.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L23) Whether a batch is currently being processed asynchronously @@ -69,7 +69,7 @@ Whether a batch is currently being processed asynchronously isPending: boolean; ``` -Defined in: [async-batcher.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L25) +Defined in: [async-batcher.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L27) Whether the batcher is waiting for the timeout to trigger batch processing @@ -81,7 +81,7 @@ Whether the batcher is waiting for the timeout to trigger batch processing items: TValue[]; ``` -Defined in: [async-batcher.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L29) +Defined in: [async-batcher.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L31) Array of items currently queued for batch processing @@ -93,7 +93,7 @@ Array of items currently queued for batch processing lastResult: any; ``` -Defined in: [async-batcher.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L33) +Defined in: [async-batcher.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L35) The result from the most recent batch execution @@ -105,7 +105,7 @@ The result from the most recent batch execution settleCount: number; ``` -Defined in: [async-batcher.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L37) +Defined in: [async-batcher.ts:39](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L39) Number of batch executions that have completed (either successfully or with errors) @@ -117,7 +117,7 @@ Number of batch executions that have completed (either successfully or with erro size: number; ``` -Defined in: [async-batcher.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L41) +Defined in: [async-batcher.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L43) Number of items currently in the batch queue @@ -126,10 +126,10 @@ Number of items currently in the batch queue ### status ```ts -status: "idle" | "pending" | "executing" | "populated"; +status: "idle" | "executing" | "pending" | "populated"; ``` -Defined in: [async-batcher.ts:45](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L45) +Defined in: [async-batcher.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L47) Current processing status - 'idle' when not processing, 'pending' when waiting for timeout, 'executing' when processing, 'populated' when items are present, but no wait is configured @@ -141,7 +141,7 @@ Current processing status - 'idle' when not processing, 'pending' when waiting f successCount: number; ``` -Defined in: [async-batcher.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L49) +Defined in: [async-batcher.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L51) Number of batch executions that have completed successfully @@ -153,7 +153,7 @@ Number of batch executions that have completed successfully totalItemsFailed: number; ``` -Defined in: [async-batcher.ts:53](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L53) +Defined in: [async-batcher.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L55) Total number of items that have failed processing across all batches @@ -165,6 +165,6 @@ Total number of items that have failed processing across all batches totalItemsProcessed: number; ``` -Defined in: [async-batcher.ts:57](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L57) +Defined in: [async-batcher.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L59) Total number of items that have been processed across all batches diff --git a/docs/reference/interfaces/asyncdebounceroptions.md b/docs/reference/interfaces/asyncdebounceroptions.md index b9f62cc1..e8751714 100644 --- a/docs/reference/interfaces/asyncdebounceroptions.md +++ b/docs/reference/interfaces/asyncdebounceroptions.md @@ -7,7 +7,7 @@ title: AsyncDebouncerOptions # Interface: AsyncDebouncerOptions\ -Defined in: [async-debouncer.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L63) +Defined in: [async-debouncer.ts:65](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L65) Options for configuring an async debounced function @@ -17,13 +17,25 @@ Options for configuring an async debounced function ## Properties +### asyncRetryerOptions? + +```ts +optional asyncRetryerOptions: AsyncRetryerOptions; +``` + +Defined in: [async-debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L69) + +Options for configuring the underlying async retryer + +*** + ### enabled? ```ts optional enabled: boolean | (debouncer) => boolean; ``` -Defined in: [async-debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L69) +Defined in: [async-debouncer.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L75) Whether the debouncer is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +49,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [async-debouncer.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L73) +Defined in: [async-debouncer.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L79) Initial state for the async debouncer @@ -49,7 +61,7 @@ Initial state for the async debouncer optional leading: boolean; ``` -Defined in: [async-debouncer.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L78) +Defined in: [async-debouncer.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L84) Whether to execute on the leading edge of the timeout. Defaults to false. @@ -62,7 +74,7 @@ Defaults to false. optional onError: (error, args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L84) +Defined in: [async-debouncer.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L90) Optional error handler for when the debounced function throws. If provided, the handler will be called with the error and debouncer instance. @@ -94,7 +106,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:92](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L92) +Defined in: [async-debouncer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L98) Optional callback to call when the debounced function is executed @@ -120,7 +132,7 @@ Optional callback to call when the debounced function is executed optional onSuccess: (result, args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:96](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L96) +Defined in: [async-debouncer.ts:102](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L102) Optional callback to call when the debounced function is executed @@ -150,7 +162,7 @@ Optional callback to call when the debounced function is executed optional throwOnError: boolean; ``` -Defined in: [async-debouncer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L106) +Defined in: [async-debouncer.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L112) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +176,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [async-debouncer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L111) +Defined in: [async-debouncer.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L117) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -177,7 +189,7 @@ Defaults to true. wait: number | (debouncer) => number; ``` -Defined in: [async-debouncer.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L117) +Defined in: [async-debouncer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L123) Delay in milliseconds to wait after the last call before executing. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncdebouncerstate.md b/docs/reference/interfaces/asyncdebouncerstate.md index 78e91133..c72df0c5 100644 --- a/docs/reference/interfaces/asyncdebouncerstate.md +++ b/docs/reference/interfaces/asyncdebouncerstate.md @@ -7,7 +7,7 @@ title: AsyncDebouncerState # Interface: AsyncDebouncerState\ -Defined in: [async-debouncer.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L5) +Defined in: [async-debouncer.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L7) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-debouncer.ts:5](https://github.com/TanStack/pacer/blob/main/p canLeadingExecute: boolean; ``` -Defined in: [async-debouncer.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L9) +Defined in: [async-debouncer.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L11) Whether the debouncer can execute on the leading edge of the timeout @@ -33,7 +33,7 @@ Whether the debouncer can execute on the leading edge of the timeout errorCount: number; ``` -Defined in: [async-debouncer.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L13) +Defined in: [async-debouncer.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L15) Number of function executions that have resulted in errors @@ -45,7 +45,7 @@ Number of function executions that have resulted in errors isExecuting: boolean; ``` -Defined in: [async-debouncer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L17) +Defined in: [async-debouncer.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L19) Whether the debounced function is currently executing asynchronously @@ -57,7 +57,7 @@ Whether the debounced function is currently executing asynchronously isPending: boolean; ``` -Defined in: [async-debouncer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L21) +Defined in: [async-debouncer.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L23) Whether the debouncer is waiting for the timeout to trigger execution @@ -69,7 +69,7 @@ Whether the debouncer is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [async-debouncer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L25) +Defined in: [async-debouncer.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L27) The arguments from the most recent call to maybeExecute @@ -81,7 +81,7 @@ The arguments from the most recent call to maybeExecute lastResult: undefined | ReturnType; ``` -Defined in: [async-debouncer.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L29) +Defined in: [async-debouncer.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L31) The result from the most recent successful function execution @@ -93,7 +93,7 @@ The result from the most recent successful function execution settleCount: number; ``` -Defined in: [async-debouncer.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L33) +Defined in: [async-debouncer.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L35) Number of function executions that have completed (either successfully or with errors) @@ -102,10 +102,10 @@ Number of function executions that have completed (either successfully or with e ### status ```ts -status: "idle" | "pending" | "executing" | "disabled" | "settled"; +status: "disabled" | "idle" | "executing" | "pending" | "settled"; ``` -Defined in: [async-debouncer.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L37) +Defined in: [async-debouncer.ts:39](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L39) Current execution status - 'idle' when not active, 'pending' when waiting, 'executing' when running, 'settled' when completed @@ -117,6 +117,6 @@ Current execution status - 'idle' when not active, 'pending' when waiting, 'exec successCount: number; ``` -Defined in: [async-debouncer.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L41) +Defined in: [async-debouncer.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L43) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/asyncqueueroptions.md b/docs/reference/interfaces/asyncqueueroptions.md index 92c61d43..025f89ce 100644 --- a/docs/reference/interfaces/asyncqueueroptions.md +++ b/docs/reference/interfaces/asyncqueueroptions.md @@ -7,7 +7,7 @@ title: AsyncQueuerOptions # Interface: AsyncQueuerOptions\ -Defined in: [async-queuer.ts:94](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L94) +Defined in: [async-queuer.ts:96](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L96) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-queuer.ts:94](https://github.com/TanStack/pacer/blob/main/pac optional addItemsTo: QueuePosition; ``` -Defined in: [async-queuer.ts:99](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L99) +Defined in: [async-queuer.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L105) Default position to add items to the queuer @@ -33,13 +33,25 @@ Default position to add items to the queuer *** +### asyncRetryerOptions? + +```ts +optional asyncRetryerOptions: AsyncRetryerOptions<(item) => Promise>; +``` + +Defined in: [async-queuer.ts:100](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L100) + +Options for configuring the underlying async retryer + +*** + ### concurrency? ```ts optional concurrency: number | (queuer) => number; ``` -Defined in: [async-queuer.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L105) +Defined in: [async-queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L111) Maximum number of concurrent tasks to process. Can be a number or a function that returns a number. @@ -58,7 +70,7 @@ Can be a number or a function that returns a number. optional expirationDuration: number; ``` -Defined in: [async-queuer.ts:110](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L110) +Defined in: [async-queuer.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L116) Maximum time in milliseconds that an item can stay in the queue If not provided, items will never expire @@ -71,7 +83,7 @@ If not provided, items will never expire optional getIsExpired: (item, addedAt) => boolean; ``` -Defined in: [async-queuer.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L115) +Defined in: [async-queuer.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L121) Function to determine if an item has expired If provided, this overrides the expirationDuration behavior @@ -98,7 +110,7 @@ If provided, this overrides the expirationDuration behavior optional getItemsFrom: QueuePosition; ``` -Defined in: [async-queuer.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L120) +Defined in: [async-queuer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L126) Default position to get items from during processing @@ -116,7 +128,7 @@ Default position to get items from during processing optional getPriority: (item) => number; ``` -Defined in: [async-queuer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L126) +Defined in: [async-queuer.ts:132](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L132) Function to determine priority of items in the queuer Higher priority items will be processed first @@ -140,7 +152,7 @@ If not provided, will use static priority values attached to tasks optional initialItems: TValue[]; ``` -Defined in: [async-queuer.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L130) +Defined in: [async-queuer.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L136) Initial items to populate the queuer with @@ -152,7 +164,7 @@ Initial items to populate the queuer with optional initialState: Partial>; ``` -Defined in: [async-queuer.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L134) +Defined in: [async-queuer.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L140) Initial state for the async queuer @@ -164,7 +176,7 @@ Initial state for the async queuer optional maxSize: number; ``` -Defined in: [async-queuer.ts:138](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L138) +Defined in: [async-queuer.ts:144](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L144) Maximum number of items allowed in the queuer @@ -176,7 +188,7 @@ Maximum number of items allowed in the queuer optional onError: (error, item, queuer) => void; ``` -Defined in: [async-queuer.ts:144](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L144) +Defined in: [async-queuer.ts:150](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L150) Optional error handler for when a task throws. If provided, the handler will be called with the error and queuer instance. @@ -208,7 +220,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onExpire: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:148](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L148) +Defined in: [async-queuer.ts:154](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L154) Callback fired whenever an item expires in the queuer @@ -234,7 +246,7 @@ Callback fired whenever an item expires in the queuer optional onItemsChange: (queuer) => void; ``` -Defined in: [async-queuer.ts:152](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L152) +Defined in: [async-queuer.ts:158](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L158) Callback fired whenever an item is added or removed from the queuer @@ -256,7 +268,7 @@ Callback fired whenever an item is added or removed from the queuer optional onReject: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:156](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L156) +Defined in: [async-queuer.ts:162](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L162) Callback fired whenever an item is rejected from being added to the queuer @@ -282,7 +294,7 @@ Callback fired whenever an item is rejected from being added to the queuer optional onSettled: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:160](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L160) +Defined in: [async-queuer.ts:166](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L166) Optional callback to call when a task is settled @@ -308,7 +320,7 @@ Optional callback to call when a task is settled optional onSuccess: (result, item, queuer) => void; ``` -Defined in: [async-queuer.ts:164](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L164) +Defined in: [async-queuer.ts:170](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L170) Optional callback to call when a task succeeds @@ -338,7 +350,7 @@ Optional callback to call when a task succeeds optional started: boolean; ``` -Defined in: [async-queuer.ts:168](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L168) +Defined in: [async-queuer.ts:174](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L174) Whether the queuer should start processing tasks immediately or not. @@ -350,7 +362,7 @@ Whether the queuer should start processing tasks immediately or not. optional throwOnError: boolean; ``` -Defined in: [async-queuer.ts:174](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L174) +Defined in: [async-queuer.ts:180](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L180) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -364,7 +376,7 @@ Can be explicitly set to override these defaults. optional wait: number | (queuer) => number; ``` -Defined in: [async-queuer.ts:180](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L180) +Defined in: [async-queuer.ts:186](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L186) Time in milliseconds to wait between processing items. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncqueuerstate.md b/docs/reference/interfaces/asyncqueuerstate.md index 5edf5fa5..75afad6f 100644 --- a/docs/reference/interfaces/asyncqueuerstate.md +++ b/docs/reference/interfaces/asyncqueuerstate.md @@ -7,7 +7,7 @@ title: AsyncQueuerState # Interface: AsyncQueuerState\ -Defined in: [async-queuer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L6) +Defined in: [async-queuer.ts:8](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L8) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-queuer.ts:6](https://github.com/TanStack/pacer/blob/main/pack activeItems: TValue[]; ``` -Defined in: [async-queuer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L10) +Defined in: [async-queuer.ts:12](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L12) Items currently being processed by the queuer @@ -33,7 +33,7 @@ Items currently being processed by the queuer errorCount: number; ``` -Defined in: [async-queuer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L14) +Defined in: [async-queuer.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L16) Number of task executions that have resulted in errors @@ -45,7 +45,7 @@ Number of task executions that have resulted in errors expirationCount: number; ``` -Defined in: [async-queuer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L18) +Defined in: [async-queuer.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L20) Number of items that have been removed from the queue due to expiration @@ -57,7 +57,7 @@ Number of items that have been removed from the queue due to expiration isEmpty: boolean; ``` -Defined in: [async-queuer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L22) +Defined in: [async-queuer.ts:24](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L24) Whether the queuer has no items to process (items array is empty) @@ -69,7 +69,7 @@ Whether the queuer has no items to process (items array is empty) isFull: boolean; ``` -Defined in: [async-queuer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L26) +Defined in: [async-queuer.ts:28](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L28) Whether the queuer has reached its maximum capacity @@ -81,7 +81,7 @@ Whether the queuer has reached its maximum capacity isIdle: boolean; ``` -Defined in: [async-queuer.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L30) +Defined in: [async-queuer.ts:32](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L32) Whether the queuer is not currently processing any items @@ -93,7 +93,7 @@ Whether the queuer is not currently processing any items isRunning: boolean; ``` -Defined in: [async-queuer.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L34) +Defined in: [async-queuer.ts:36](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L36) Whether the queuer is active and will process items automatically @@ -105,7 +105,7 @@ Whether the queuer is active and will process items automatically items: TValue[]; ``` -Defined in: [async-queuer.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L38) +Defined in: [async-queuer.ts:40](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L40) Array of items currently waiting to be processed @@ -117,7 +117,7 @@ Array of items currently waiting to be processed itemTimestamps: number[]; ``` -Defined in: [async-queuer.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L42) +Defined in: [async-queuer.ts:44](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L44) Timestamps when items were added to the queue for expiration tracking @@ -129,7 +129,7 @@ Timestamps when items were added to the queue for expiration tracking lastResult: any; ``` -Defined in: [async-queuer.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L46) +Defined in: [async-queuer.ts:48](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L48) The result from the most recent task execution @@ -141,7 +141,7 @@ The result from the most recent task execution pendingTick: boolean; ``` -Defined in: [async-queuer.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L50) +Defined in: [async-queuer.ts:52](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L52) Whether the queuer has a pending timeout for processing the next item @@ -153,7 +153,7 @@ Whether the queuer has a pending timeout for processing the next item rejectionCount: number; ``` -Defined in: [async-queuer.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L54) +Defined in: [async-queuer.ts:56](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L56) Number of items that have been rejected from being added to the queue @@ -165,7 +165,7 @@ Number of items that have been rejected from being added to the queue settledCount: number; ``` -Defined in: [async-queuer.ts:58](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L58) +Defined in: [async-queuer.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L60) Number of task executions that have completed (either successfully or with errors) @@ -177,7 +177,7 @@ Number of task executions that have completed (either successfully or with error size: number; ``` -Defined in: [async-queuer.ts:62](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L62) +Defined in: [async-queuer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L64) Number of items currently in the queue @@ -189,7 +189,7 @@ Number of items currently in the queue status: "idle" | "running" | "stopped"; ``` -Defined in: [async-queuer.ts:66](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L66) +Defined in: [async-queuer.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L68) Current processing status - 'idle' when not processing, 'running' when active, 'stopped' when paused @@ -201,6 +201,6 @@ Current processing status - 'idle' when not processing, 'running' when active, ' successCount: number; ``` -Defined in: [async-queuer.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L70) +Defined in: [async-queuer.ts:72](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L72) Number of task executions that have completed successfully diff --git a/docs/reference/interfaces/asyncratelimiteroptions.md b/docs/reference/interfaces/asyncratelimiteroptions.md index 9bb807f6..2c0d390b 100644 --- a/docs/reference/interfaces/asyncratelimiteroptions.md +++ b/docs/reference/interfaces/asyncratelimiteroptions.md @@ -7,7 +7,7 @@ title: AsyncRateLimiterOptions # Interface: AsyncRateLimiterOptions\ -Defined in: [async-rate-limiter.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L63) +Defined in: [async-rate-limiter.ts:65](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L65) Options for configuring an async rate-limited function @@ -17,13 +17,25 @@ Options for configuring an async rate-limited function ## Properties +### asyncRetryerOptions? + +```ts +optional asyncRetryerOptions: AsyncRetryerOptions; +``` + +Defined in: [async-rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L69) + +Options for configuring the underlying async retryer + +*** + ### enabled? ```ts optional enabled: boolean | (rateLimiter) => boolean; ``` -Defined in: [async-rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L69) +Defined in: [async-rate-limiter.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L75) Whether the rate limiter is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +49,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [async-rate-limiter.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L73) +Defined in: [async-rate-limiter.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L79) Initial state for the rate limiter @@ -49,7 +61,7 @@ Initial state for the rate limiter limit: number | (rateLimiter) => number; ``` -Defined in: [async-rate-limiter.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L78) +Defined in: [async-rate-limiter.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L84) Maximum number of executions allowed within the time window. Can be a number or a function that returns a number. @@ -62,7 +74,7 @@ Can be a number or a function that returns a number. optional onError: (error, args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L84) +Defined in: [async-rate-limiter.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L90) Optional error handler for when the rate-limited function throws. If provided, the handler will be called with the error and rate limiter instance. @@ -94,7 +106,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onReject: (args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:92](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L92) +Defined in: [async-rate-limiter.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L98) Optional callback function that is called when an execution is rejected due to rate limiting @@ -120,7 +132,7 @@ Optional callback function that is called when an execution is rejected due to r optional onSettled: (args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:96](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L96) +Defined in: [async-rate-limiter.ts:102](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L102) Optional function to call when the rate-limited function is executed @@ -146,7 +158,7 @@ Optional function to call when the rate-limited function is executed optional onSuccess: (result, args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L103) +Defined in: [async-rate-limiter.ts:109](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L109) Optional function to call when the rate-limited function is executed @@ -176,7 +188,7 @@ Optional function to call when the rate-limited function is executed optional throwOnError: boolean; ``` -Defined in: [async-rate-limiter.ts:113](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L113) +Defined in: [async-rate-limiter.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L119) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -190,7 +202,7 @@ Can be explicitly set to override these defaults. window: number | (rateLimiter) => number; ``` -Defined in: [async-rate-limiter.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L118) +Defined in: [async-rate-limiter.ts:124](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L124) Time window in milliseconds within which the limit applies. Can be a number or a function that returns a number. @@ -203,7 +215,7 @@ Can be a number or a function that returns a number. optional windowType: "fixed" | "sliding"; ``` -Defined in: [async-rate-limiter.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L125) +Defined in: [async-rate-limiter.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L131) Type of window to use for rate limiting - 'fixed': Uses a fixed window that resets after the window period diff --git a/docs/reference/interfaces/asyncratelimiterstate.md b/docs/reference/interfaces/asyncratelimiterstate.md index 8e7cc64e..5bc3b39e 100644 --- a/docs/reference/interfaces/asyncratelimiterstate.md +++ b/docs/reference/interfaces/asyncratelimiterstate.md @@ -7,7 +7,7 @@ title: AsyncRateLimiterState # Interface: AsyncRateLimiterState\ -Defined in: [async-rate-limiter.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L5) +Defined in: [async-rate-limiter.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L7) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-rate-limiter.ts:5](https://github.com/TanStack/pacer/blob/mai errorCount: number; ``` -Defined in: [async-rate-limiter.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L9) +Defined in: [async-rate-limiter.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L11) Number of function executions that have resulted in errors @@ -33,7 +33,7 @@ Number of function executions that have resulted in errors executionTimes: number[]; ``` -Defined in: [async-rate-limiter.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L13) +Defined in: [async-rate-limiter.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L15) Array of timestamps when executions occurred for rate limiting calculations @@ -45,7 +45,7 @@ Array of timestamps when executions occurred for rate limiting calculations isExceeded: boolean; ``` -Defined in: [async-rate-limiter.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L17) +Defined in: [async-rate-limiter.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L19) Whether the rate limiter has exceeded the limit @@ -57,7 +57,7 @@ Whether the rate limiter has exceeded the limit isExecuting: boolean; ``` -Defined in: [async-rate-limiter.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L21) +Defined in: [async-rate-limiter.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L23) Whether the rate-limited function is currently executing asynchronously @@ -69,7 +69,7 @@ Whether the rate-limited function is currently executing asynchronously lastResult: undefined | ReturnType; ``` -Defined in: [async-rate-limiter.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L25) +Defined in: [async-rate-limiter.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L27) The result from the most recent successful function execution @@ -81,7 +81,7 @@ The result from the most recent successful function execution rejectionCount: number; ``` -Defined in: [async-rate-limiter.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L29) +Defined in: [async-rate-limiter.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L31) Number of function executions that have been rejected due to rate limiting @@ -93,7 +93,7 @@ Number of function executions that have been rejected due to rate limiting settleCount: number; ``` -Defined in: [async-rate-limiter.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L33) +Defined in: [async-rate-limiter.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L35) Number of function executions that have completed (either successfully or with errors) @@ -102,10 +102,10 @@ Number of function executions that have completed (either successfully or with e ### status ```ts -status: "idle" | "executing" | "disabled" | "exceeded"; +status: "disabled" | "idle" | "executing" | "exceeded"; ``` -Defined in: [async-rate-limiter.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L37) +Defined in: [async-rate-limiter.ts:39](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L39) Current execution status - 'disabled' when not active, 'executing' when executing, 'idle' when not executing, 'exceeded' when rate limit is exceeded @@ -117,6 +117,6 @@ Current execution status - 'disabled' when not active, 'executing' when executin successCount: number; ``` -Defined in: [async-rate-limiter.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L41) +Defined in: [async-rate-limiter.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L43) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/asyncretryeroptions.md b/docs/reference/interfaces/asyncretryeroptions.md new file mode 100644 index 00000000..c039c1fb --- /dev/null +++ b/docs/reference/interfaces/asyncretryeroptions.md @@ -0,0 +1,264 @@ +--- +id: AsyncRetryerOptions +title: AsyncRetryerOptions +--- + + + +# Interface: AsyncRetryerOptions\ + +Defined in: [async-retryer.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L59) + +## Type Parameters + +• **TFn** *extends* [`AnyAsyncFunction`](../../type-aliases/anyasyncfunction.md) + +## Properties + +### backoff? + +```ts +optional backoff: "linear" | "exponential" | "fixed"; +``` + +Defined in: [async-retryer.ts:67](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L67) + +The backoff strategy for retry delays: +- 'exponential': Wait time doubles with each attempt (1s, 2s, 4s, ...) +- 'linear': Wait time increases linearly (1s, 2s, 3s, ...) +- 'fixed': Same wait time for all attempts + +#### Default + +```ts +'exponential' +``` + +*** + +### baseWait? + +```ts +optional baseWait: number | (retryer) => number; +``` + +Defined in: [async-retryer.ts:72](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L72) + +Base wait time in milliseconds between retries, or a function that returns the wait time + +#### Default + +```ts +1000 +``` + +*** + +### enabled? + +```ts +optional enabled: boolean | (retryer) => boolean; +``` + +Defined in: [async-retryer.ts:77](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L77) + +Whether the retryer is enabled, or a function that determines if it's enabled + +#### Default + +```ts +true +``` + +*** + +### initialState? + +```ts +optional initialState: Partial>; +``` + +Defined in: [async-retryer.ts:81](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L81) + +Initial state to merge with the default state + +*** + +### maxAttempts? + +```ts +optional maxAttempts: number | (retryer) => number; +``` + +Defined in: [async-retryer.ts:86](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L86) + +Maximum number of retry attempts, or a function that returns the max attempts + +#### Default + +```ts +3 +``` + +*** + +### onError()? + +```ts +optional onError: (error, args, retryer) => void; +``` + +Defined in: [async-retryer.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L90) + +Callback invoked when any error occurs during execution (including retries) + +#### Parameters + +##### error + +`unknown` + +##### args + +`Parameters`\<`TFn`\> + +##### retryer + +[`AsyncRetryer`](../../classes/asyncretryer.md)\<`TFn`\> + +#### Returns + +`void` + +*** + +### onLastError()? + +```ts +optional onLastError: (error, retryer) => void; +``` + +Defined in: [async-retryer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L98) + +Callback invoked when the final error occurs after all retries are exhausted + +#### Parameters + +##### error + +`Error` + +##### retryer + +[`AsyncRetryer`](../../classes/asyncretryer.md)\<`TFn`\> + +#### Returns + +`void` + +*** + +### onRetry()? + +```ts +optional onRetry: (attempt, error, retryer) => void; +``` + +Defined in: [async-retryer.ts:102](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L102) + +Callback invoked before each retry attempt + +#### Parameters + +##### attempt + +`number` + +##### error + +`Error` + +##### retryer + +[`AsyncRetryer`](../../classes/asyncretryer.md)\<`TFn`\> + +#### Returns + +`void` + +*** + +### onSettled()? + +```ts +optional onSettled: (args, retryer) => void; +``` + +Defined in: [async-retryer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L106) + +Callback invoked after execution completes (success or failure) + +#### Parameters + +##### args + +`Parameters`\<`TFn`\> + +##### retryer + +[`AsyncRetryer`](../../classes/asyncretryer.md)\<`TFn`\> + +#### Returns + +`void` + +*** + +### onSuccess()? + +```ts +optional onSuccess: (result, args, retryer) => void; +``` + +Defined in: [async-retryer.ts:110](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L110) + +Callback invoked when execution succeeds + +#### Parameters + +##### result + +`ReturnType`\<`TFn`\> + +##### args + +`Parameters`\<`TFn`\> + +##### retryer + +[`AsyncRetryer`](../../classes/asyncretryer.md)\<`TFn`\> + +#### Returns + +`void` + +*** + +### throwOnError? + +```ts +optional throwOnError: boolean | "last"; +``` + +Defined in: [async-retryer.ts:122](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L122) + +Controls when errors are thrown: +- 'last': Only throw the final error after all retries are exhausted +- true: Throw every error immediately (disables retrying) +- false: Never throw errors, return undefined instead + +#### Default + +```ts +'last' +``` diff --git a/docs/reference/interfaces/asyncretryerstate.md b/docs/reference/interfaces/asyncretryerstate.md new file mode 100644 index 00000000..dd7647da --- /dev/null +++ b/docs/reference/interfaces/asyncretryerstate.md @@ -0,0 +1,110 @@ +--- +id: AsyncRetryerState +title: AsyncRetryerState +--- + + + +# Interface: AsyncRetryerState\ + +Defined in: [async-retryer.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L5) + +## Type Parameters + +• **TFn** *extends* [`AnyAsyncFunction`](../../type-aliases/anyasyncfunction.md) + +## Properties + +### currentAttempt + +```ts +currentAttempt: number; +``` + +Defined in: [async-retryer.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L9) + +The current retry attempt number (0 when not executing) + +*** + +### executionCount + +```ts +executionCount: number; +``` + +Defined in: [async-retryer.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L13) + +Total number of completed executions (successful or failed) + +*** + +### isExecuting + +```ts +isExecuting: boolean; +``` + +Defined in: [async-retryer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L17) + +Whether the retryer is currently executing the function + +*** + +### lastError + +```ts +lastError: undefined | Error; +``` + +Defined in: [async-retryer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L21) + +The most recent error encountered during execution + +*** + +### lastExecutionTime + +```ts +lastExecutionTime: number; +``` + +Defined in: [async-retryer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L25) + +Timestamp of the last execution completion in milliseconds + +*** + +### lastResult + +```ts +lastResult: undefined | ReturnType; +``` + +Defined in: [async-retryer.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L29) + +The result from the most recent successful execution + +*** + +### status + +```ts +status: "disabled" | "idle" | "executing" | "retrying"; +``` + +Defined in: [async-retryer.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L33) + +Current execution status - 'disabled' when not enabled, 'idle' when ready, 'executing' when running + +*** + +### totalExecutionTime + +```ts +totalExecutionTime: number; +``` + +Defined in: [async-retryer.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-retryer.ts#L37) + +Total time spent executing (including retries) in milliseconds diff --git a/docs/reference/interfaces/asyncthrottleroptions.md b/docs/reference/interfaces/asyncthrottleroptions.md index 6bd5b084..d73ded7d 100644 --- a/docs/reference/interfaces/asyncthrottleroptions.md +++ b/docs/reference/interfaces/asyncthrottleroptions.md @@ -7,7 +7,7 @@ title: AsyncThrottlerOptions # Interface: AsyncThrottlerOptions\ -Defined in: [async-throttler.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L68) +Defined in: [async-throttler.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L70) Options for configuring an async throttled function @@ -17,13 +17,25 @@ Options for configuring an async throttled function ## Properties +### asyncRetryerOptions? + +```ts +optional asyncRetryerOptions: AsyncRetryerOptions; +``` + +Defined in: [async-throttler.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L74) + +Options for configuring the underlying async retryer + +*** + ### enabled? ```ts optional enabled: boolean | (throttler) => boolean; ``` -Defined in: [async-throttler.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L74) +Defined in: [async-throttler.ts:80](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L80) Whether the throttler is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +49,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [async-throttler.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L78) +Defined in: [async-throttler.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L84) Initial state for the async throttler @@ -49,7 +61,7 @@ Initial state for the async throttler optional leading: boolean; ``` -Defined in: [async-throttler.ts:83](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L83) +Defined in: [async-throttler.ts:89](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L89) Whether to execute the function immediately when called Defaults to true @@ -62,7 +74,7 @@ Defaults to true optional onError: (error, args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:89](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L89) +Defined in: [async-throttler.ts:95](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L95) Optional error handler for when the throttled function throws. If provided, the handler will be called with the error and throttler instance. @@ -94,7 +106,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L97) +Defined in: [async-throttler.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L103) Optional function to call when the throttled function is executed @@ -120,7 +132,7 @@ Optional function to call when the throttled function is executed optional onSuccess: (result, args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L104) +Defined in: [async-throttler.ts:110](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L110) Optional function to call when the throttled function is executed @@ -150,7 +162,7 @@ Optional function to call when the throttled function is executed optional throwOnError: boolean; ``` -Defined in: [async-throttler.ts:114](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L114) +Defined in: [async-throttler.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L120) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +176,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [async-throttler.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L119) +Defined in: [async-throttler.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L125) Whether to execute the function on the trailing edge of the wait period Defaults to true @@ -177,7 +189,7 @@ Defaults to true wait: number | (throttler) => number; ``` -Defined in: [async-throttler.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L125) +Defined in: [async-throttler.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L131) Time window in milliseconds during which the function can only be executed once. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncthrottlerstate.md b/docs/reference/interfaces/asyncthrottlerstate.md index 148bae3c..f4d3cacd 100644 --- a/docs/reference/interfaces/asyncthrottlerstate.md +++ b/docs/reference/interfaces/asyncthrottlerstate.md @@ -7,7 +7,7 @@ title: AsyncThrottlerState # Interface: AsyncThrottlerState\ -Defined in: [async-throttler.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L5) +Defined in: [async-throttler.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L7) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [async-throttler.ts:5](https://github.com/TanStack/pacer/blob/main/p errorCount: number; ``` -Defined in: [async-throttler.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L9) +Defined in: [async-throttler.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L11) Number of function executions that have resulted in errors @@ -33,7 +33,7 @@ Number of function executions that have resulted in errors isExecuting: boolean; ``` -Defined in: [async-throttler.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L13) +Defined in: [async-throttler.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L15) Whether the throttled function is currently executing asynchronously @@ -45,7 +45,7 @@ Whether the throttled function is currently executing asynchronously isPending: boolean; ``` -Defined in: [async-throttler.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L17) +Defined in: [async-throttler.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L19) Whether the throttler is waiting for the timeout to trigger execution @@ -57,7 +57,7 @@ Whether the throttler is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [async-throttler.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L21) +Defined in: [async-throttler.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L23) The arguments from the most recent call to maybeExecute @@ -69,7 +69,7 @@ The arguments from the most recent call to maybeExecute lastExecutionTime: number; ``` -Defined in: [async-throttler.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L25) +Defined in: [async-throttler.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L27) Timestamp of the last function execution in milliseconds @@ -81,7 +81,7 @@ Timestamp of the last function execution in milliseconds lastResult: undefined | ReturnType; ``` -Defined in: [async-throttler.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L29) +Defined in: [async-throttler.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L31) The result from the most recent successful function execution @@ -93,7 +93,7 @@ The result from the most recent successful function execution nextExecutionTime: undefined | number; ``` -Defined in: [async-throttler.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L33) +Defined in: [async-throttler.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L35) Timestamp when the next execution can occur in milliseconds @@ -105,7 +105,7 @@ Timestamp when the next execution can occur in milliseconds settleCount: number; ``` -Defined in: [async-throttler.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L37) +Defined in: [async-throttler.ts:39](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L39) Number of function executions that have completed (either successfully or with errors) @@ -114,10 +114,10 @@ Number of function executions that have completed (either successfully or with e ### status ```ts -status: "idle" | "pending" | "executing" | "disabled" | "settled"; +status: "disabled" | "idle" | "executing" | "pending" | "settled"; ``` -Defined in: [async-throttler.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L41) +Defined in: [async-throttler.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L43) Current execution status - 'idle' when not active, 'pending' when waiting, 'executing' when running, 'settled' when completed @@ -129,6 +129,6 @@ Current execution status - 'idle' when not active, 'pending' when waiting, 'exec successCount: number; ``` -Defined in: [async-throttler.ts:45](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L45) +Defined in: [async-throttler.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L47) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/debouncerstate.md b/docs/reference/interfaces/debouncerstate.md index 3b2a70a4..728ee596 100644 --- a/docs/reference/interfaces/debouncerstate.md +++ b/docs/reference/interfaces/debouncerstate.md @@ -66,7 +66,7 @@ The arguments from the most recent call to maybeExecute ### status ```ts -status: "idle" | "pending" | "disabled"; +status: "disabled" | "idle" | "pending"; ``` Defined in: [debouncer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L25) diff --git a/docs/reference/interfaces/ratelimiterstate.md b/docs/reference/interfaces/ratelimiterstate.md index bb165047..e6b27468 100644 --- a/docs/reference/interfaces/ratelimiterstate.md +++ b/docs/reference/interfaces/ratelimiterstate.md @@ -62,7 +62,7 @@ Number of function executions that have been rejected due to rate limiting ### status ```ts -status: "idle" | "disabled" | "exceeded"; +status: "disabled" | "idle" | "exceeded"; ``` Defined in: [rate-limiter.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L25) diff --git a/docs/reference/interfaces/throttlerstate.md b/docs/reference/interfaces/throttlerstate.md index d2c4a654..de074cbe 100644 --- a/docs/reference/interfaces/throttlerstate.md +++ b/docs/reference/interfaces/throttlerstate.md @@ -78,7 +78,7 @@ Timestamp when the next execution can occur in milliseconds ### status ```ts -status: "idle" | "pending" | "disabled"; +status: "disabled" | "idle" | "pending"; ``` Defined in: [throttler.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L29) From c1029549a57bda40d050f35e45634a3776190092 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Tue, 12 Aug 2025 11:45:30 +0200 Subject: [PATCH 13/44] feat: drastically improve the pacer devtools UI --- examples/react/util-comparison/package.json | 4 +- examples/react/util-comparison/src/index.tsx | 18 +- packages/pacer-devtools/package.json | 4 +- .../src/context/context-provider.tsx | 81 +++-- .../pacer-devtools/src/context/context.ts | 44 +-- packages/pacer-devtools/src/devtools.tsx | 84 ++++- packages/pacer-devtools/src/styles/tokens.ts | 305 ++++++++++++++++++ .../pacer-devtools/src/styles/use-styles.ts | 123 +++++++ packages/pacer-devtools/src/tree.tsx | 71 ++++ .../pacer-react-devtools/src/devtools.tsx | 4 +- .../pacer-solid-devtools/src/devtools.tsx | 4 +- packages/pacer/src/async-batcher.ts | 10 +- packages/pacer/src/async-debouncer.ts | 10 +- packages/pacer/src/async-queuer.ts | 36 ++- packages/pacer/src/async-rate-limiter.ts | 10 +- packages/pacer/src/async-throttler.ts | 10 +- packages/pacer/src/batcher.ts | 10 +- packages/pacer/src/debouncer.ts | 10 +- packages/pacer/src/event-client.ts | 31 +- packages/pacer/src/index.ts | 3 +- packages/pacer/src/queuer.ts | 10 +- packages/pacer/src/rate-limiter.ts | 9 +- packages/pacer/src/throttler.ts | 8 +- pnpm-lock.yaml | 12 + 24 files changed, 799 insertions(+), 112 deletions(-) create mode 100644 packages/pacer-devtools/src/styles/tokens.ts create mode 100644 packages/pacer-devtools/src/styles/use-styles.ts create mode 100644 packages/pacer-devtools/src/tree.tsx diff --git a/examples/react/util-comparison/package.json b/examples/react/util-comparison/package.json index 3b7e87a9..93dfab0d 100644 --- a/examples/react/util-comparison/package.json +++ b/examples/react/util-comparison/package.json @@ -14,6 +14,8 @@ "react-dom": "^19.1.1" }, "devDependencies": { + "@tanstack/pacer-react-devtools": "0.14.0", + "@tanstack/react-devtools": "0.2.2", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^4.7.0", @@ -31,4 +33,4 @@ "last 1 safari version" ] } -} +} \ No newline at end of file diff --git a/examples/react/util-comparison/src/index.tsx b/examples/react/util-comparison/src/index.tsx index 0bced21c..8a1cb032 100644 --- a/examples/react/util-comparison/src/index.tsx +++ b/examples/react/util-comparison/src/index.tsx @@ -5,6 +5,8 @@ import { useThrottler } from '@tanstack/react-pacer/throttler' import { useRateLimiter } from '@tanstack/react-pacer/rate-limiter' import { useQueuer } from '@tanstack/react-pacer/queuer' import { useBatcher } from '@tanstack/react-pacer/batcher' +import { PacerDevtoolsPanel } from '@tanstack/pacer-react-devtools' +import { TanstackDevtools } from '@tanstack/react-devtools' function ComparisonApp() { const [currentValue, setCurrentValue] = useState(50) @@ -344,11 +346,11 @@ function ComparisonApp() { {instantExecutionCount === 0 ? '0' : Math.round( - ((instantExecutionCount - - utility.state.executionCount) / - instantExecutionCount) * - 100, - )} + ((instantExecutionCount - + utility.state.executionCount) / + instantExecutionCount) * + 100, + )} %
{utility.name === 'Rate Limiter' && ( @@ -440,6 +442,12 @@ function ComparisonApp() { ))}
+ }]} + />
) } diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 4173606f..8d2d4abc 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -61,9 +61,11 @@ "@tanstack/pacer": ">=0.14.0" }, "dependencies": { + "clsx": "^2.1.1", + "goober": "^2.1.16", "solid-js": "^1.9.7" }, "devDependencies": { "vite-plugin-solid": "^2.11.8" } -} +} \ No newline at end of file diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/context/context-provider.tsx index 3fd14931..7d23dc60 100644 --- a/packages/pacer-devtools/src/context/context-provider.tsx +++ b/packages/pacer-devtools/src/context/context-provider.tsx @@ -4,42 +4,83 @@ import { pacerEventClient } from '@tanstack/pacer' import { PacerContext, initialStore } from './context' import type { PacerContextType } from './context' +const updateOrAddToArray = (oldArray: Array, newItem: T) => { + const index = oldArray.findIndex(item => item.uuid === newItem.uuid) + if (index !== -1) { + // Update existing item + return oldArray.map((item, i) => (i === index ? newItem : item)) + } + // Add new item + return [...oldArray, newItem] +} + export function PacerContextProvider(props: { children: any }) { const [store, setStore] = createStore(initialStore) createEffect(() => { const cleanup = pacerEventClient.onAllPluginEvents((e) => { + switch (e.type) { case 'pacer:async-batcher-state': - setStore({ asyncBatcherState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.asyncBatcherState, e.payload) + setStore({ asyncBatcherState: newItems }) + break + } case 'pacer:async-debouncer-state': - setStore({ asyncDebouncerState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.asyncDebouncerState, e.payload) + setStore({ asyncDebouncerState: newItems }) + break + } case 'pacer:async-queuer-state': - setStore({ asyncQueuerState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.asyncQueuerState, e.payload) + setStore({ asyncQueuerState: newItems }) + break + } case 'pacer:async-rate-limiter-state': - setStore({ asyncRateLimiterState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.asyncRateLimiterState, e.payload) + setStore({ asyncRateLimiterState: newItems }) + break + } case 'pacer:async-throttler-state': - setStore({ asyncThrottlerState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.asyncThrottlerState, e.payload) + setStore({ asyncThrottlerState: newItems }) + break + } case 'pacer:batcher-state': - setStore({ batcherState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.batcherState, e.payload) + setStore({ batcherState: newItems }) + break + } case 'pacer:debouncer-state': - setStore({ debouncerState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.debouncerState, e.payload) + setStore({ debouncerState: newItems }) + break + } case 'pacer:queuer-state': - setStore({ queuerState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.queuerState, e.payload) + setStore({ queuerState: newItems }) + break + } case 'pacer:rate-limiter-state': - setStore({ rateLimiterState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.rateLimiterState, e.payload) + setStore({ rateLimiterState: newItems }) + break + } case 'pacer:throttler-state': - setStore({ throttlerState: e.payload }) - break + { + const newItems = updateOrAddToArray(store.throttlerState, e.payload) + setStore({ throttlerState: newItems }) + break + } } }) onCleanup(cleanup) diff --git a/packages/pacer-devtools/src/context/context.ts b/packages/pacer-devtools/src/context/context.ts index e2aac766..c5c5e20f 100644 --- a/packages/pacer-devtools/src/context/context.ts +++ b/packages/pacer-devtools/src/context/context.ts @@ -12,32 +12,34 @@ import type { ThrottlerState, } from '@tanstack/pacer' +type WithUuid = T & { uuid: string } + export interface PacerContextType { - asyncBatcherState: AsyncBatcherState | undefined - asyncDebouncerState: AsyncDebouncerState | undefined - asyncQueuerState: AsyncQueuerState | undefined - asyncRateLimiterState: AsyncRateLimiterState | undefined - asyncThrottlerState: AsyncThrottlerState | undefined - batcherState: BatcherState | undefined - debouncerState: DebouncerState | undefined - queuerState: QueuerState | undefined - rateLimiterState: RateLimiterState | undefined - throttlerState: ThrottlerState | undefined + asyncBatcherState: Array>> + asyncDebouncerState: Array>> + asyncQueuerState: Array>> + asyncRateLimiterState: Array>> + asyncThrottlerState: Array>> + batcherState: Array>> + debouncerState: Array>> + queuerState: Array>> + rateLimiterState: Array> + throttlerState: Array>> } export const initialStore = { - asyncBatcherState: undefined, - asyncDebouncerState: undefined, - asyncQueuerState: undefined, - asyncRateLimiterState: undefined, - asyncThrottlerState: undefined, - batcherState: undefined, - debouncerState: undefined, - queuerState: undefined, - rateLimiterState: undefined, - throttlerState: undefined, + asyncBatcherState: [], + asyncDebouncerState: [], + asyncQueuerState: [], + asyncRateLimiterState: [], + asyncThrottlerState: [], + batcherState: [], + debouncerState: [], + queuerState: [], + rateLimiterState: [], + throttlerState: [], } export const PacerContext = createContext< [PacerContextType, (newState: Partial) => void] ->([initialStore, () => {}]) +>([initialStore, () => { }]) diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx index 3daff91e..fe61395c 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/devtools.tsx @@ -1,16 +1,86 @@ -import { usePacerState } from './context/use-context-hooks' -import { PacerContextProvider } from './context/context-provider' + +import { For, } from 'solid-js'; +import clsx from 'clsx'; +import { usePacerState } from './context/use-context-hooks'; +import { PacerContextProvider } from './context/context-provider'; +import { useStyles } from './styles/use-styles'; +import { JsonTree } from './tree'; + +type StateKey = + | 'asyncBatcherState' + | 'asyncDebouncerState' + | 'asyncQueuerState' + | 'asyncRateLimiterState' + | 'asyncThrottlerState' + | 'batcherState' + | 'debouncerState' + | 'queuerState' + | 'rateLimiterState' + | 'throttlerState'; + +const CONTEXT_SECTIONS: Array<{ key: StateKey; label: string }> = [ + { key: 'asyncBatcherState', label: 'Async Batcher State' }, + { key: 'asyncDebouncerState', label: 'Async Debouncer State' }, + { key: 'asyncQueuerState', label: 'Async Queuer State' }, + { key: 'asyncRateLimiterState', label: 'Async Rate Limiter State' }, + { key: 'asyncThrottlerState', label: 'Async Throttler State' }, + { key: 'batcherState', label: 'Batcher State' }, + { key: 'debouncerState', label: 'Debouncer State' }, + { key: 'queuerState', label: 'Queuer State' }, + { key: 'rateLimiterState', label: 'Rate Limiter State' }, + { key: 'throttlerState', label: 'Throttler State' }, +]; + + +function Section({ key, label }: { key: StateKey; label: string }) { + const state = usePacerState(); + const styles = useStyles(); + + return ( + <> + {state[key].length === 0 ? null : ( +
+
{label}
+
+ {(inst) => + + } +
+
+ )} + + ); +} function Shell() { - const state = usePacerState() + const styles = useStyles(); + return ( -
- Pacer state is: -
{JSON.stringify(state, null, 2)}
+
+
TanStack Pacer
+ +
+ {({ key, label }) => +
+ } +
- ) + ); } +function AnimatedInstanceCard(props: { value: any; }) { + + const styles = useStyles(); + + + return ( +
+ +
+ ); +} + + export default function Devtools() { return ( diff --git a/packages/pacer-devtools/src/styles/tokens.ts b/packages/pacer-devtools/src/styles/tokens.ts new file mode 100644 index 00000000..9d247cf1 --- /dev/null +++ b/packages/pacer-devtools/src/styles/tokens.ts @@ -0,0 +1,305 @@ +export const tokens = { + colors: { + inherit: 'inherit', + current: 'currentColor', + transparent: 'transparent', + black: '#000000', + white: '#ffffff', + neutral: { + 50: '#f9fafb', + 100: '#f2f4f7', + 200: '#eaecf0', + 300: '#d0d5dd', + 400: '#98a2b3', + 500: '#667085', + 600: '#475467', + 700: '#344054', + 800: '#1d2939', + 900: '#101828', + }, + darkGray: { + 50: '#525c7a', + 100: '#49536e', + 200: '#414962', + 300: '#394056', + 400: '#313749', + 500: '#292e3d', + 600: '#212530', + 700: '#191c24', + 800: '#111318', + 900: '#0b0d10', + }, + gray: { + 50: '#f9fafb', + 100: '#f2f4f7', + 200: '#eaecf0', + 300: '#d0d5dd', + 400: '#98a2b3', + 500: '#667085', + 600: '#475467', + 700: '#344054', + 800: '#1d2939', + 900: '#101828', + }, + blue: { + 25: '#F5FAFF', + 50: '#EFF8FF', + 100: '#D1E9FF', + 200: '#B2DDFF', + 300: '#84CAFF', + 400: '#53B1FD', + 500: '#2E90FA', + 600: '#1570EF', + 700: '#175CD3', + 800: '#1849A9', + 900: '#194185', + }, + green: { + 25: '#F6FEF9', + 50: '#ECFDF3', + 100: '#D1FADF', + 200: '#A6F4C5', + 300: '#6CE9A6', + 400: '#32D583', + 500: '#12B76A', + 600: '#039855', + 700: '#027A48', + 800: '#05603A', + 900: '#054F31', + }, + red: { + 50: '#fef2f2', + 100: '#fee2e2', + 200: '#fecaca', + 300: '#fca5a5', + 400: '#f87171', + 500: '#ef4444', + 600: '#dc2626', + 700: '#b91c1c', + 800: '#991b1b', + 900: '#7f1d1d', + 950: '#450a0a', + }, + yellow: { + 25: '#FFFCF5', + 50: '#FFFAEB', + 100: '#FEF0C7', + 200: '#FEDF89', + 300: '#FEC84B', + 400: '#FDB022', + 500: '#F79009', + 600: '#DC6803', + 700: '#B54708', + 800: '#93370D', + 900: '#7A2E0E', + }, + purple: { + 25: '#FAFAFF', + 50: '#F4F3FF', + 100: '#EBE9FE', + 200: '#D9D6FE', + 300: '#BDB4FE', + 400: '#9B8AFB', + 500: '#7A5AF8', + 600: '#6938EF', + 700: '#5925DC', + 800: '#4A1FB8', + 900: '#3E1C96', + }, + teal: { + 25: '#F6FEFC', + 50: '#F0FDF9', + 100: '#CCFBEF', + 200: '#99F6E0', + 300: '#5FE9D0', + 400: '#2ED3B7', + 500: '#15B79E', + 600: '#0E9384', + 700: '#107569', + 800: '#125D56', + 900: '#134E48', + }, + pink: { + 25: '#fdf2f8', + 50: '#fce7f3', + 100: '#fbcfe8', + 200: '#f9a8d4', + 300: '#f472b6', + 400: '#ec4899', + 500: '#db2777', + 600: '#be185d', + 700: '#9d174d', + 800: '#831843', + 900: '#500724', + }, + cyan: { + 25: '#ecfeff', + 50: '#cffafe', + 100: '#a5f3fc', + 200: '#67e8f9', + 300: '#22d3ee', + 400: '#06b6d4', + 500: '#0891b2', + 600: '#0e7490', + 700: '#155e75', + 800: '#164e63', + 900: '#083344', + }, + }, + alpha: { + 100: 'ff', + 90: 'e5', + 80: 'cc', + 70: 'b3', + 60: '99', + 50: '80', + 40: '66', + 30: '4d', + 20: '33', + 10: '1a', + 0: '00', + }, + font: { + size: { + '2xs': 'calc(var(--tsrd-font-size) * 0.625)', + xs: 'calc(var(--tsrd-font-size) * 0.75)', + sm: 'calc(var(--tsrd-font-size) * 0.875)', + md: 'var(--tsrd-font-size)', + lg: 'calc(var(--tsrd-font-size) * 1.125)', + xl: 'calc(var(--tsrd-font-size) * 1.25)', + '2xl': 'calc(var(--tsrd-font-size) * 1.5)', + '3xl': 'calc(var(--tsrd-font-size) * 1.875)', + '4xl': 'calc(var(--tsrd-font-size) * 2.25)', + '5xl': 'calc(var(--tsrd-font-size) * 3)', + '6xl': 'calc(var(--tsrd-font-size) * 3.75)', + '7xl': 'calc(var(--tsrd-font-size) * 4.5)', + '8xl': 'calc(var(--tsrd-font-size) * 6)', + '9xl': 'calc(var(--tsrd-font-size) * 8)', + }, + lineHeight: { + '3xs': 'calc(var(--tsrd-font-size) * 0.75)', + '2xs': 'calc(var(--tsrd-font-size) * 0.875)', + xs: 'calc(var(--tsrd-font-size) * 1)', + sm: 'calc(var(--tsrd-font-size) * 1.25)', + md: 'calc(var(--tsrd-font-size) * 1.5)', + lg: 'calc(var(--tsrd-font-size) * 1.75)', + xl: 'calc(var(--tsrd-font-size) * 2)', + '2xl': 'calc(var(--tsrd-font-size) * 2.25)', + '3xl': 'calc(var(--tsrd-font-size) * 2.5)', + '4xl': 'calc(var(--tsrd-font-size) * 2.75)', + '5xl': 'calc(var(--tsrd-font-size) * 3)', + '6xl': 'calc(var(--tsrd-font-size) * 3.25)', + '7xl': 'calc(var(--tsrd-font-size) * 3.5)', + '8xl': 'calc(var(--tsrd-font-size) * 3.75)', + '9xl': 'calc(var(--tsrd-font-size) * 4)', + }, + weight: { + thin: '100', + extralight: '200', + light: '300', + normal: '400', + medium: '500', + semibold: '600', + bold: '700', + extrabold: '800', + black: '900', + }, + fontFamily: { + sans: 'ui-sans-serif, Inter, system-ui, sans-serif, sans-serif', + mono: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace`, + }, + }, + breakpoints: { + xs: '320px', + sm: '640px', + md: '768px', + lg: '1024px', + xl: '1280px', + '2xl': '1536px', + }, + border: { + radius: { + none: '0px', + xs: 'calc(var(--tsrd-font-size) * 0.125)', + sm: 'calc(var(--tsrd-font-size) * 0.25)', + md: 'calc(var(--tsrd-font-size) * 0.375)', + lg: 'calc(var(--tsrd-font-size) * 0.5)', + xl: 'calc(var(--tsrd-font-size) * 0.75)', + '2xl': 'calc(var(--tsrd-font-size) * 1)', + '3xl': 'calc(var(--tsrd-font-size) * 1.5)', + full: '9999px', + }, + }, + size: { + 0: '0px', + 0.25: 'calc(var(--tsrd-font-size) * 0.0625)', + 0.5: 'calc(var(--tsrd-font-size) * 0.125)', + 1: 'calc(var(--tsrd-font-size) * 0.25)', + 1.5: 'calc(var(--tsrd-font-size) * 0.375)', + 2: 'calc(var(--tsrd-font-size) * 0.5)', + 2.5: 'calc(var(--tsrd-font-size) * 0.625)', + 3: 'calc(var(--tsrd-font-size) * 0.75)', + 3.5: 'calc(var(--tsrd-font-size) * 0.875)', + 4: 'calc(var(--tsrd-font-size) * 1)', + 4.5: 'calc(var(--tsrd-font-size) * 1.125)', + 5: 'calc(var(--tsrd-font-size) * 1.25)', + 5.5: 'calc(var(--tsrd-font-size) * 1.375)', + 6: 'calc(var(--tsrd-font-size) * 1.5)', + 6.5: 'calc(var(--tsrd-font-size) * 1.625)', + 7: 'calc(var(--tsrd-font-size) * 1.75)', + 8: 'calc(var(--tsrd-font-size) * 2)', + 9: 'calc(var(--tsrd-font-size) * 2.25)', + 10: 'calc(var(--tsrd-font-size) * 2.5)', + 11: 'calc(var(--tsrd-font-size) * 2.75)', + 12: 'calc(var(--tsrd-font-size) * 3)', + 14: 'calc(var(--tsrd-font-size) * 3.5)', + 16: 'calc(var(--tsrd-font-size) * 4)', + 20: 'calc(var(--tsrd-font-size) * 5)', + 24: 'calc(var(--tsrd-font-size) * 6)', + 28: 'calc(var(--tsrd-font-size) * 7)', + 32: 'calc(var(--tsrd-font-size) * 8)', + 36: 'calc(var(--tsrd-font-size) * 9)', + 40: 'calc(var(--tsrd-font-size) * 10)', + 44: 'calc(var(--tsrd-font-size) * 11)', + 48: 'calc(var(--tsrd-font-size) * 12)', + 52: 'calc(var(--tsrd-font-size) * 13)', + 56: 'calc(var(--tsrd-font-size) * 14)', + 60: 'calc(var(--tsrd-font-size) * 15)', + 64: 'calc(var(--tsrd-font-size) * 16)', + 72: 'calc(var(--tsrd-font-size) * 18)', + 80: 'calc(var(--tsrd-font-size) * 20)', + 96: 'calc(var(--tsrd-font-size) * 24)', + }, + shadow: { + xs: (_: string = 'rgb(0 0 0 / 0.1)') => + `0 1px 2px 0 rgb(0 0 0 / 0.05)` as const, + sm: (color: string = 'rgb(0 0 0 / 0.1)') => + `0 1px 3px 0 ${color}, 0 1px 2px -1px ${color}` as const, + md: (color: string = 'rgb(0 0 0 / 0.1)') => + `0 4px 6px -1px ${color}, 0 2px 4px -2px ${color}` as const, + lg: (color: string = 'rgb(0 0 0 / 0.1)') => + `0 10px 15px -3px ${color}, 0 4px 6px -4px ${color}` as const, + xl: (color: string = 'rgb(0 0 0 / 0.1)') => + `0 20px 25px -5px ${color}, 0 8px 10px -6px ${color}` as const, + '2xl': (color: string = 'rgb(0 0 0 / 0.25)') => + `0 25px 50px -12px ${color}` as const, + inner: (color: string = 'rgb(0 0 0 / 0.05)') => + `inset 0 2px 4px 0 ${color}` as const, + none: () => `none` as const, + }, + zIndices: { + hide: -1, + auto: 'auto', + base: 0, + docked: 10, + dropdown: 1000, + sticky: 1100, + banner: 1200, + overlay: 1300, + modal: 1400, + popover: 1500, + skipLink: 1600, + toast: 1700, + tooltip: 1800, + }, +} as const diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts new file mode 100644 index 00000000..ad983887 --- /dev/null +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -0,0 +1,123 @@ +import * as goober from 'goober' +import { createSignal } from 'solid-js' +import { tokens } from './tokens' + + +const stylesFactory = () => { + const { colors, font, size, alpha, border } = tokens; + const { fontFamily, size: fontSize } = font; + const css = goober.css; + + return { + devtoolsPanel: css` + background: ${colors.darkGray[900]}; + color: ${colors.gray[100]}; + font-family: ${fontFamily.sans}; + font-size: ${fontSize.md}; + min-height: 100%; + padding: ${size[4]}; + box-sizing: border-box; + display: flex; + flex-direction: column; + gap: ${size[6]}; + width: 100%; + height: 100%; + overflow-x: auto; + `, + stickyHeader: css` + position: sticky; + top: 0; + z-index: 10; + background: ${colors.darkGray[900]}; + padding-bottom: ${size[3]}; + margin-bottom: ${size[2]}; + font-size: ${fontSize.xl}; + font-weight: ${font.weight.bold}; + color: ${colors.blue[400]}; + letter-spacing: 0.04em; + text-transform: uppercase; + border-bottom: 1px solid ${colors.darkGray[700]}; + box-shadow: 0 2px 8px 0 ${colors.black + alpha[40]}; + `, + sectionContainer: css` + display: flex; + flex-wrap: wrap; + gap: ${size[4]}; + `, + section: css` + background: ${colors.darkGray[800]}; + border-radius: ${border.radius.lg}; + box-shadow: ${tokens.shadow.md(colors.black + alpha[80])}; + padding: ${size[4]}; + margin-bottom: ${size[4]}; + border: 1px solid ${colors.darkGray[700]}; + min-width: 0; + max-width: 33%; + max-height: fit-content; + `, + sectionHeader: css` + font-size: ${fontSize.lg}; + font-weight: ${font.weight.bold}; + margin-bottom: ${size[2]}; + color: ${colors.blue[400]}; + letter-spacing: 0.01em; + display: flex; + align-items: center; + gap: ${size[2]}; + `, + sectionEmpty: css` + color: ${colors.gray[500]}; + font-size: ${fontSize.sm}; + font-style: italic; + margin: ${size[2]} 0; + `, + instanceList: css` + display: flex; + flex-direction: column; + gap: ${size[2]}; + `, + instanceCard: css` + background: ${colors.darkGray[700]}; + border-radius: ${border.radius.md}; + padding: ${size[3]}; + border: 1px solid ${colors.darkGray[600]}; + font-size: ${fontSize.sm}; + color: ${colors.gray[100]}; + font-family: ${fontFamily.mono}; + overflow-x: auto; + transition: box-shadow 0.3s, background 0.3s; + `, + flash: (isFlashing: boolean) => isFlashing ? css` + box-shadow: 0 0 0 2px ${colors.blue[400]}; + background: ${colors.blue[600]}; + ` : css``, + valueString: css` + color: ${colors.green[400]}; + `, + valueNumber: css` + color: ${colors.yellow[400]}; + `, + valueBoolean: css` + color: ${colors.pink[400]}; + `, + valueNull: css` + color: ${colors.gray[400]}; + font-style: italic; + `, + valueKey: css` + color: ${colors.blue[300]}; + `, + valueBraces: css` + color: ${colors.gray[500]}; + `, + valueContainer: css` + display: block; + margin-left: 1rem; + ` + }; +} + +export function useStyles() { + const [_styles] = createSignal(stylesFactory()) + return _styles +} diff --git a/packages/pacer-devtools/src/tree.tsx b/packages/pacer-devtools/src/tree.tsx new file mode 100644 index 00000000..5576258d --- /dev/null +++ b/packages/pacer-devtools/src/tree.tsx @@ -0,0 +1,71 @@ +import { For } from "solid-js"; +import { useStyles } from "./styles/use-styles"; + +export function JsonTree(props: { value: any; keyName?: string }) { + const { value, keyName } = props; + const styles = useStyles(); + + if (typeof value === 'string') { + return + {keyName && "{keyName}": } + "{value}" + , + ; + } + if (typeof value === 'number') { + return + {keyName && "{keyName}": } + {value} + , + ; + } + if (typeof value === 'boolean') { + return + + {keyName && "{keyName}": } + {String(value)} + + , + ; + } + if (value === null) { + return + {keyName && "{keyName}": } + null + , + ; + } + if (value === undefined) { + return + {keyName && "{keyName}": } + undefined + , + ; + } + if (Array.isArray(value)) { + return + {keyName && "{keyName}": } + [ + {(item) => <> + + } + + ] + , + ; + } + if (typeof value === 'object') { + const keys = Object.keys(value); + return + {keyName && "{keyName}": } + {'{'} + {(k,) => <> + + } + + {'}'} + + ; + } + return ; +} \ No newline at end of file diff --git a/packages/pacer-react-devtools/src/devtools.tsx b/packages/pacer-react-devtools/src/devtools.tsx index c2ab840d..5bdf7222 100644 --- a/packages/pacer-react-devtools/src/devtools.tsx +++ b/packages/pacer-react-devtools/src/devtools.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useRef, useState } from 'react' import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' -interface PacerDevtoolsReactInit {} +interface PacerDevtoolsReactInit { } export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { const devToolRef = useRef(null) @@ -15,5 +15,5 @@ export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { return () => devtools.unmount() }, [devtools]) - return
+ return
} diff --git a/packages/pacer-solid-devtools/src/devtools.tsx b/packages/pacer-solid-devtools/src/devtools.tsx index 4aad3e6b..657998c8 100644 --- a/packages/pacer-solid-devtools/src/devtools.tsx +++ b/packages/pacer-solid-devtools/src/devtools.tsx @@ -1,7 +1,7 @@ import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' import { createSignal, onCleanup, onMount } from 'solid-js' -interface PacerDevtoolsSolidInit {} +interface PacerDevtoolsSolidInit { } export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { let devToolRef: HTMLDivElement | undefined @@ -16,5 +16,5 @@ export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { } }) - return
+ return
} diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index 7415e52d..c890f3fa 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange, } from './event-client' import type { OptionalKeys } from './types' export interface AsyncBatcherState { @@ -223,11 +223,12 @@ export class AsyncBatcher { ) options: AsyncBatcherOptionsWithOptionalCallbacks #timeoutId: NodeJS.Timeout | null = null - + #uuid: string constructor( public fn: (items: Array) => Promise, initialOptions: AsyncBatcherOptions, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -264,7 +265,10 @@ export class AsyncBatcher { ? 'idle' : 'populated', } as const - pacerEventClient.emit('async-batcher-state', finalState) + emitChange('async-batcher-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index dfc5e31e..3b7cc9ce 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange, } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncDebouncerState { @@ -185,11 +185,12 @@ export class AsyncDebouncer { #resolvePreviousPromise: | ((value?: ReturnType | undefined) => void) | null = null - + #uuid: string constructor( public fn: TFn, initialOptions: AsyncDebouncerOptions, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -229,7 +230,10 @@ export class AsyncDebouncer { ? 'settled' : 'idle', } as const - pacerEventClient.emit('async-debouncer-state', finalState) + emitChange('async-debouncer-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index 4e3ba70e..dd59a642 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' import type { OptionalKeys } from './types' import type { QueuePosition } from './queuer' @@ -263,11 +263,12 @@ export class AsyncQueuer { >(getDefaultAsyncQueuerState()) options: AsyncQueuerOptions #timeoutIds: Set = new Set() - + #uuid: string constructor( public fn: (item: TValue) => Promise, initialOptions: AsyncQueuerOptions = {}, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -323,7 +324,10 @@ export class AsyncQueuer { size, status, } as const - pacerEventClient.emit('async-queuer-state', finalState) + emitChange('async-queuer-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } @@ -371,19 +375,19 @@ export class AsyncQueuer { this.#setState({ activeItems, }) - ;(async () => { - const result = await this.execute() - this.#setState({ lastResult: result }) - - const wait = this.#getWait() - if (wait > 0) { - const timeoutId = setTimeout(() => this.#tick(), wait) - this.#timeoutIds.add(timeoutId) - return - } - - this.#tick() - })() + ; (async () => { + const result = await this.execute() + this.#setState({ lastResult: result }) + + const wait = this.#getWait() + if (wait > 0) { + const timeoutId = setTimeout(() => this.#tick(), wait) + this.#timeoutIds.add(timeoutId) + return + } + + this.#tick() + })() } this.#setState({ pendingTick: false }) diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index 39dff211..c959d8ee 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' import type { AnyAsyncFunction } from './types' export interface AsyncRateLimiterState { @@ -209,11 +209,12 @@ export class AsyncRateLimiter { >(getDefaultAsyncRateLimiterState()) options: AsyncRateLimiterOptions #timeoutIds: Set = new Set() - + #uuid: string constructor( public fn: TFn, initialOptions: AsyncRateLimiterOptions, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -251,7 +252,10 @@ export class AsyncRateLimiter { isExceeded, status, } as const - pacerEventClient.emit('async-rate-limiter-state', finalState) + emitChange('async-rate-limiter-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index af3395ab..acb42072 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncThrottlerState { @@ -196,11 +196,12 @@ export class AsyncThrottler { #resolvePreviousPromise: | ((value?: ReturnType | undefined) => void) | null = null - + #uuid: string constructor( public fn: TFn, initialOptions: AsyncThrottlerOptions, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -240,7 +241,10 @@ export class AsyncThrottler { ? 'settled' : 'idle', } as const - pacerEventClient.emit('async-throttler-state', finalState) + emitChange('async-throttler-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index a7e4e0f8..dcd4709a 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' import type { OptionalKeys } from './types' export interface BatcherState { @@ -142,11 +142,12 @@ export class Batcher { ) options: BatcherOptionsWithOptionalCallbacks #timeoutId: NodeJS.Timeout | null = null - + #uuid: string constructor( public fn: (items: Array) => void, initialOptions: BatcherOptions, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -177,7 +178,10 @@ export class Batcher { status: isPending ? 'pending' : 'idle', } as const - pacerEventClient.emit('batcher-state', finalState) + emitChange('batcher-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index ea242a2b..37de3db6 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' import type { AnyFunction } from './types' export interface DebouncerState { @@ -122,11 +122,12 @@ export class Debouncer { ) options: DebouncerOptions #timeoutId: NodeJS.Timeout | undefined - + #uuid: string constructor( public fn: TFn, initialOptions: DebouncerOptions, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -161,7 +162,10 @@ export class Debouncer { ? 'pending' : 'idle', } as const - pacerEventClient.emit('debouncer-state', finalState) + emitChange('debouncer-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/event-client.ts b/packages/pacer/src/event-client.ts index 8161cea2..c3eaac87 100644 --- a/packages/pacer/src/event-client.ts +++ b/packages/pacer/src/event-client.ts @@ -10,20 +10,22 @@ import type { QueuerState } from './queuer' import type { RateLimiterState } from './rate-limiter' import type { ThrottlerState } from './throttler' +type WithUuid = T & { uuid: string } + export interface PacerEventMap { - 'pacer:async-batcher-state': AsyncBatcherState - 'pacer:async-debouncer-state': AsyncDebouncerState - 'pacer:async-queuer-state': AsyncQueuerState - 'pacer:async-rate-limiter-state': AsyncRateLimiterState - 'pacer:async-throttler-state': AsyncThrottlerState - 'pacer:batcher-state': BatcherState - 'pacer:debouncer-state': DebouncerState - 'pacer:queuer-state': QueuerState - 'pacer:rate-limiter-state': RateLimiterState - 'pacer:throttler-state': ThrottlerState + 'pacer:async-batcher-state': WithUuid> + 'pacer:async-debouncer-state': WithUuid> + 'pacer:async-queuer-state': WithUuid> + 'pacer:async-rate-limiter-state': WithUuid> + 'pacer:async-throttler-state': WithUuid> + 'pacer:batcher-state': WithUuid> + 'pacer:debouncer-state': WithUuid> + 'pacer:queuer-state': WithUuid> + 'pacer:rate-limiter-state': WithUuid + 'pacer:throttler-state': WithUuid> } -export class PacerEventClient extends EventClient { +class PacerEventClient extends EventClient { constructor(props?: { debug: boolean }) { super({ pluginId: 'pacer', @@ -32,4 +34,11 @@ export class PacerEventClient extends EventClient { } } +export const emitChange = extends `${string}:${infer S}` ? S : never>( + event: TSuffix, + payload: PacerEventMap[`pacer:${TSuffix}`] & { uuid: string } +) => { + pacerEventClient.emit(event, payload) +} + export const pacerEventClient = new PacerEventClient() diff --git a/packages/pacer/src/index.ts b/packages/pacer/src/index.ts index 9c630dd2..97f55d9b 100644 --- a/packages/pacer/src/index.ts +++ b/packages/pacer/src/index.ts @@ -10,4 +10,5 @@ export * from './rate-limiter' export * from './throttler' export * from './types' export * from './utils' -export * from './event-client' +export { pacerEventClient } from './event-client' +export type { PacerEventMap } from './event-client' \ No newline at end of file diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index b445fce7..0ee341cf 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' export interface QueuerState { /** @@ -247,11 +247,12 @@ export class Queuer { ) options: QueuerOptions #timeoutId: NodeJS.Timeout | null = null - + #uuid: string constructor( public fn: (item: TValue) => void, initialOptions: QueuerOptions = {}, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -306,7 +307,10 @@ export class Queuer { size, status, } as const - pacerEventClient.emit('queuer-state', finalState) + emitChange('queuer-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index de2fd61f..abf472a1 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' import type { AnyFunction } from './types' export interface RateLimiterState { @@ -135,11 +135,13 @@ export class RateLimiter { new Store(getDefaultRateLimiterState()) options: RateLimiterOptions #timeoutIds: Set = new Set() + #uuid: string constructor( public fn: TFn, initialOptions: RateLimiterOptions, ) { + this.#uuid = crypto.randomUUID() this.options = { ...defaultOptions, ...initialOptions, @@ -174,7 +176,10 @@ export class RateLimiter { isExceeded, status, } as const - pacerEventClient.emit('rate-limiter-state', finalState) + emitChange('rate-limiter-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index 1e1b36f7..009f6933 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { pacerEventClient } from './event-client' +import { emitChange } from './event-client' import type { AnyFunction } from './types' export interface ThrottlerState { @@ -130,6 +130,7 @@ export class Throttler { ) options: ThrottlerOptions #timeoutId: NodeJS.Timeout | undefined + #uuid = crypto.randomUUID() constructor( public fn: TFn, @@ -169,7 +170,10 @@ export class Throttler { ? 'pending' : 'idle', } as const - pacerEventClient.emit('throttler-state', finalState) + emitChange('throttler-state', { + ...finalState, + uuid: this.#uuid, + }) return finalState }) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1de8954d..054f4ec1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1132,6 +1132,12 @@ importers: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) devDependencies: + '@tanstack/pacer-react-devtools': + specifier: 0.14.0 + version: link:../../../packages/pacer-react-devtools + '@tanstack/react-devtools': + specifier: 0.2.2 + version: 0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7) '@types/react': specifier: ^19.1.9 version: 19.1.9 @@ -1559,6 +1565,12 @@ importers: '@tanstack/pacer': specifier: '>=0.14.0' version: link:../pacer + clsx: + specifier: ^2.1.1 + version: 2.1.1 + goober: + specifier: ^2.1.16 + version: 2.1.16(csstype@3.1.3) solid-js: specifier: ^1.9.7 version: 1.9.7 From 03fe0083d253217acaf52e9055bd28a54af43f30 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 09:46:33 +0000 Subject: [PATCH 14/44] ci: apply automated fixes --- docs/reference/classes/asyncbatcher.md | 24 +- docs/reference/classes/asyncdebouncer.md | 20 +- docs/reference/classes/asyncqueuer.md | 38 ++-- docs/reference/classes/asyncratelimiter.md | 20 +- docs/reference/classes/asyncthrottler.md | 20 +- docs/reference/classes/batcher.md | 22 +- docs/reference/classes/debouncer.md | 20 +- docs/reference/classes/pacereventclient.md | 214 ------------------ docs/reference/classes/queuer.md | 34 +-- docs/reference/classes/ratelimiter.md | 20 +- docs/reference/classes/throttler.md | 20 +- docs/reference/functions/asyncbatch.md | 2 +- docs/reference/functions/asyncdebounce.md | 2 +- docs/reference/functions/asyncqueue.md | 2 +- docs/reference/functions/asyncratelimit.md | 2 +- docs/reference/functions/asyncthrottle.md | 2 +- docs/reference/functions/batch.md | 2 +- docs/reference/functions/debounce.md | 2 +- docs/reference/functions/isfunction.md | 2 +- .../functions/parsefunctionorvalue.md | 2 +- docs/reference/functions/queue.md | 2 +- docs/reference/functions/ratelimit.md | 2 +- docs/reference/functions/throttle.md | 2 +- docs/reference/index.md | 1 - .../interfaces/asyncbatcheroptions.md | 22 +- .../reference/interfaces/asyncbatcherstate.md | 28 +-- .../interfaces/asyncdebounceroptions.md | 20 +- .../interfaces/asyncdebouncerstate.md | 20 +- .../interfaces/asyncqueueroptions.md | 38 ++-- docs/reference/interfaces/asyncqueuerstate.md | 34 +-- .../interfaces/asyncratelimiteroptions.md | 22 +- .../interfaces/asyncratelimiterstate.md | 20 +- .../interfaces/asyncthrottleroptions.md | 20 +- .../interfaces/asyncthrottlerstate.md | 22 +- docs/reference/interfaces/batcheroptions.md | 16 +- docs/reference/interfaces/batcherstate.md | 16 +- docs/reference/interfaces/debounceroptions.md | 14 +- docs/reference/interfaces/debouncerstate.md | 12 +- docs/reference/interfaces/pacereventmap.md | 42 ++-- docs/reference/interfaces/queueroptions.md | 30 +-- docs/reference/interfaces/queuerstate.md | 26 +-- .../interfaces/ratelimiteroptions.md | 16 +- docs/reference/interfaces/ratelimiterstate.md | 12 +- docs/reference/interfaces/throttleroptions.md | 14 +- docs/reference/interfaces/throttlerstate.md | 14 +- .../type-aliases/anyasyncfunction.md | 2 +- docs/reference/type-aliases/anyfunction.md | 2 +- docs/reference/type-aliases/optionalkeys.md | 2 +- docs/reference/type-aliases/queueposition.md | 2 +- docs/reference/variables/pacereventclient.md | 2 +- examples/react/util-comparison/package.json | 2 +- examples/react/util-comparison/src/index.tsx | 10 +- packages/pacer-devtools/package.json | 2 +- .../src/context/context-provider.tsx | 130 +++++------ .../pacer-devtools/src/context/context.ts | 2 +- packages/pacer-devtools/src/devtools.tsx | 51 ++--- .../pacer-devtools/src/styles/use-styles.ts | 26 ++- packages/pacer-devtools/src/tree.tsx | 152 ++++++++----- .../pacer-react-devtools/src/devtools.tsx | 4 +- .../pacer-solid-devtools/src/devtools.tsx | 4 +- packages/pacer/src/async-batcher.ts | 2 +- packages/pacer/src/async-debouncer.ts | 2 +- packages/pacer/src/async-queuer.ts | 26 +-- packages/pacer/src/event-client.ts | 11 +- packages/pacer/src/index.ts | 2 +- 65 files changed, 606 insertions(+), 765 deletions(-) delete mode 100644 docs/reference/classes/pacereventclient.md diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index e94aa1b4..43e39bab 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -7,7 +7,7 @@ title: AsyncBatcher # Class: AsyncBatcher\ -Defined in: [packages/pacer/src/async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L220) +Defined in: [async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L220) A class that collects items and processes them in batches asynchronously. @@ -82,7 +82,7 @@ batcher.addItem(2); new AsyncBatcher(fn, initialOptions): AsyncBatcher ``` -Defined in: [packages/pacer/src/async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L227) +Defined in: [async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L227) #### Parameters @@ -106,7 +106,7 @@ Defined in: [packages/pacer/src/async-batcher.ts:227](https://github.com/TanStac fn: (items) => Promise; ``` -Defined in: [packages/pacer/src/async-batcher.ts:228](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L228) +Defined in: [async-batcher.ts:228](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L228) #### Parameters @@ -126,7 +126,7 @@ Defined in: [packages/pacer/src/async-batcher.ts:228](https://github.com/TanStac options: AsyncBatcherOptionsWithOptionalCallbacks; ``` -Defined in: [packages/pacer/src/async-batcher.ts:224](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L224) +Defined in: [async-batcher.ts:224](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L224) *** @@ -136,7 +136,7 @@ Defined in: [packages/pacer/src/async-batcher.ts:224](https://github.com/TanStac readonly store: Store>>; ``` -Defined in: [packages/pacer/src/async-batcher.ts:221](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L221) +Defined in: [async-batcher.ts:221](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L221) ## Methods @@ -146,7 +146,7 @@ Defined in: [packages/pacer/src/async-batcher.ts:221](https://github.com/TanStac addItem(item): void ``` -Defined in: [packages/pacer/src/async-batcher.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L280) +Defined in: [async-batcher.ts:284](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L284) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -169,7 +169,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [packages/pacer/src/async-batcher.ts:381](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L381) +Defined in: [async-batcher.ts:385](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L385) Removes all items from the async batcher @@ -185,7 +185,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [packages/pacer/src/async-batcher.ts:355](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L355) +Defined in: [async-batcher.ts:359](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L359) Processes the current batch of items immediately @@ -201,7 +201,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [packages/pacer/src/async-batcher.ts:363](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L363) +Defined in: [async-batcher.ts:367](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L367) Returns a copy of all items in the async batcher @@ -217,7 +217,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [packages/pacer/src/async-batcher.ts:367](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L367) +Defined in: [async-batcher.ts:371](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L371) #### Returns @@ -231,7 +231,7 @@ Defined in: [packages/pacer/src/async-batcher.ts:367](https://github.com/TanStac reset(): void ``` -Defined in: [packages/pacer/src/async-batcher.ts:388](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L388) +Defined in: [async-batcher.ts:392](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L392) Resets the async batcher state to its default values @@ -247,7 +247,7 @@ Resets the async batcher state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/async-batcher.ts:242](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L242) +Defined in: [async-batcher.ts:243](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L243) Updates the async batcher options diff --git a/docs/reference/classes/asyncdebouncer.md b/docs/reference/classes/asyncdebouncer.md index 297ffe50..6f8666b4 100644 --- a/docs/reference/classes/asyncdebouncer.md +++ b/docs/reference/classes/asyncdebouncer.md @@ -7,7 +7,7 @@ title: AsyncDebouncer # Class: AsyncDebouncer\ -Defined in: [packages/pacer/src/async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L178) +Defined in: [async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L178) A class that creates an async debounced function. @@ -66,7 +66,7 @@ const results = await asyncDebouncer.maybeExecute(inputElement.value); new AsyncDebouncer(fn, initialOptions): AsyncDebouncer ``` -Defined in: [packages/pacer/src/async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L189) +Defined in: [async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L189) #### Parameters @@ -90,7 +90,7 @@ Defined in: [packages/pacer/src/async-debouncer.ts:189](https://github.com/TanSt fn: TFn; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L190) +Defined in: [async-debouncer.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L190) *** @@ -100,7 +100,7 @@ Defined in: [packages/pacer/src/async-debouncer.ts:190](https://github.com/TanSt options: AsyncDebouncerOptions; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:182](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L182) +Defined in: [async-debouncer.ts:182](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L182) *** @@ -110,7 +110,7 @@ Defined in: [packages/pacer/src/async-debouncer.ts:182](https://github.com/TanSt readonly store: Store>>; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:179](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L179) +Defined in: [async-debouncer.ts:179](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L179) ## Methods @@ -120,7 +120,7 @@ Defined in: [packages/pacer/src/async-debouncer.ts:179](https://github.com/TanSt cancel(): void ``` -Defined in: [packages/pacer/src/async-debouncer.ts:390](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L390) +Defined in: [async-debouncer.ts:394](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L394) Cancels any pending execution or aborts any execution in progress @@ -136,7 +136,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [packages/pacer/src/async-debouncer.ts:342](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L342) +Defined in: [async-debouncer.ts:346](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L346) Processes the current pending execution immediately @@ -152,7 +152,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [packages/pacer/src/async-debouncer.ts:265](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L265) +Defined in: [async-debouncer.ts:269](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L269) Attempts to execute the debounced function. If a call is already in progress, it will be queued. @@ -188,7 +188,7 @@ The error from the debounced function if no onError handler is configured reset(): void ``` -Defined in: [packages/pacer/src/async-debouncer.ts:399](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L399) +Defined in: [async-debouncer.ts:403](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L403) Resets the debouncer state to its default values @@ -204,7 +204,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/async-debouncer.ts:204](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L204) +Defined in: [async-debouncer.ts:205](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L205) Updates the async debouncer options diff --git a/docs/reference/classes/asyncqueuer.md b/docs/reference/classes/asyncqueuer.md index 0d09aa38..8a95ac82 100644 --- a/docs/reference/classes/asyncqueuer.md +++ b/docs/reference/classes/asyncqueuer.md @@ -7,7 +7,7 @@ title: AsyncQueuer # Class: AsyncQueuer\ -Defined in: [packages/pacer/src/async-queuer.ts:260](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L260) +Defined in: [async-queuer.ts:260](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L260) A flexible asynchronous queue for processing tasks with configurable concurrency, priority, and expiration. @@ -71,7 +71,7 @@ asyncQueuer.start(); new AsyncQueuer(fn, initialOptions): AsyncQueuer ``` -Defined in: [packages/pacer/src/async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L267) +Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L267) #### Parameters @@ -95,7 +95,7 @@ Defined in: [packages/pacer/src/async-queuer.ts:267](https://github.com/TanStack fn: (item) => Promise; ``` -Defined in: [packages/pacer/src/async-queuer.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L268) +Defined in: [async-queuer.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L268) #### Parameters @@ -115,7 +115,7 @@ Defined in: [packages/pacer/src/async-queuer.ts:268](https://github.com/TanStack options: AsyncQueuerOptions; ``` -Defined in: [packages/pacer/src/async-queuer.ts:264](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L264) +Defined in: [async-queuer.ts:264](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L264) *** @@ -125,7 +125,7 @@ Defined in: [packages/pacer/src/async-queuer.ts:264](https://github.com/TanStack readonly store: Store>>; ``` -Defined in: [packages/pacer/src/async-queuer.ts:261](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L261) +Defined in: [async-queuer.ts:261](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L261) ## Methods @@ -138,7 +138,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [packages/pacer/src/async-queuer.ts:402](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L402) +Defined in: [async-queuer.ts:406](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L406) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -176,7 +176,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [packages/pacer/src/async-queuer.ts:706](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L706) +Defined in: [async-queuer.ts:710](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L710) Removes all pending items from the queue. Does not affect active tasks. @@ -192,7 +192,7 @@ Removes all pending items from the queue. Does not affect active tasks. execute(position?): Promise ``` -Defined in: [packages/pacer/src/async-queuer.ts:528](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L528) +Defined in: [async-queuer.ts:532](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L532) Removes and returns the next item from the queue and executes the task function with it. @@ -222,7 +222,7 @@ queuer.execute('back'); flush(numberOfItems, position?): Promise ``` -Defined in: [packages/pacer/src/async-queuer.ts:563](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L563) +Defined in: [async-queuer.ts:567](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L567) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -249,7 +249,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): Promise ``` -Defined in: [packages/pacer/src/async-queuer.ts:577](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L577) +Defined in: [async-queuer.ts:581](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L581) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -272,7 +272,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [packages/pacer/src/async-queuer.ts:481](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L481) +Defined in: [async-queuer.ts:485](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L485) Removes and returns the next item from the queue without executing the task function. Use for manual queue management. Normally, use execute() to process items. @@ -304,7 +304,7 @@ queuer.getNextItem('back'); peekActiveItems(): TValue[] ``` -Defined in: [packages/pacer/src/async-queuer.ts:669](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L669) +Defined in: [async-queuer.ts:673](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L673) Returns the items currently being processed (active tasks). @@ -320,7 +320,7 @@ Returns the items currently being processed (active tasks). peekAllItems(): TValue[] ``` -Defined in: [packages/pacer/src/async-queuer.ts:662](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L662) +Defined in: [async-queuer.ts:666](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L666) Returns a copy of all items in the queue, including active and pending items. @@ -336,7 +336,7 @@ Returns a copy of all items in the queue, including active and pending items. peekNextItem(position): undefined | TValue ``` -Defined in: [packages/pacer/src/async-queuer.ts:652](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L652) +Defined in: [async-queuer.ts:656](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L656) Returns the next item in the queue without removing it. @@ -365,7 +365,7 @@ queuer.peekNextItem('back'); // back peekPendingItems(): TValue[] ``` -Defined in: [packages/pacer/src/async-queuer.ts:676](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L676) +Defined in: [async-queuer.ts:680](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L680) Returns the items waiting to be processed (pending tasks). @@ -381,7 +381,7 @@ Returns the items waiting to be processed (pending tasks). reset(): void ``` -Defined in: [packages/pacer/src/async-queuer.ts:714](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L714) +Defined in: [async-queuer.ts:718](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L718) Resets the queuer state to its default values @@ -397,7 +397,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/async-queuer.ts:299](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L299) +Defined in: [async-queuer.ts:300](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L300) Updates the queuer options. New options are merged with existing options. @@ -419,7 +419,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [packages/pacer/src/async-queuer.ts:683](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L683) +Defined in: [async-queuer.ts:687](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L687) Starts processing items in the queue. If already running, does nothing. @@ -435,7 +435,7 @@ Starts processing items in the queue. If already running, does nothing. stop(): void ``` -Defined in: [packages/pacer/src/async-queuer.ts:693](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L693) +Defined in: [async-queuer.ts:697](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L697) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index c950b595..34cabbe1 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -7,7 +7,7 @@ title: AsyncRateLimiter # Class: AsyncRateLimiter\ -Defined in: [packages/pacer/src/async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L206) +Defined in: [async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L206) A class that creates an async rate-limited function. @@ -87,7 +87,7 @@ const data = await rateLimiter.maybeExecute('123'); new AsyncRateLimiter(fn, initialOptions): AsyncRateLimiter ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L213) +Defined in: [async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L213) #### Parameters @@ -111,7 +111,7 @@ Defined in: [packages/pacer/src/async-rate-limiter.ts:213](https://github.com/Ta fn: TFn; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:214](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L214) +Defined in: [async-rate-limiter.ts:214](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L214) *** @@ -121,7 +121,7 @@ Defined in: [packages/pacer/src/async-rate-limiter.ts:214](https://github.com/Ta options: AsyncRateLimiterOptions; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:210](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L210) +Defined in: [async-rate-limiter.ts:210](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L210) *** @@ -131,7 +131,7 @@ Defined in: [packages/pacer/src/async-rate-limiter.ts:210](https://github.com/Ta readonly store: Store>>; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:207](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L207) +Defined in: [async-rate-limiter.ts:207](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L207) ## Methods @@ -141,7 +141,7 @@ Defined in: [packages/pacer/src/async-rate-limiter.ts:207](https://github.com/Ta getMsUntilNextWindow(): number ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:436](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L436) +Defined in: [async-rate-limiter.ts:440](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L440) Returns the number of milliseconds until the next execution will be possible For fixed windows, this is the time until the current window resets @@ -159,7 +159,7 @@ For sliding windows, this is the time until the oldest execution expires getRemainingInWindow(): number ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:426](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L426) +Defined in: [async-rate-limiter.ts:430](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L430) Returns the number of remaining executions allowed in the current window @@ -175,7 +175,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:305](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L305) +Defined in: [async-rate-limiter.ts:309](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L309) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -223,7 +223,7 @@ const result2 = await rateLimiter.maybeExecute('arg1', 'arg2'); // undefined reset(): void ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:447](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L447) +Defined in: [async-rate-limiter.ts:451](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L451) Resets the rate limiter state @@ -239,7 +239,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:231](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L231) +Defined in: [async-rate-limiter.ts:232](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L232) Updates the async rate limiter options diff --git a/docs/reference/classes/asyncthrottler.md b/docs/reference/classes/asyncthrottler.md index 6bd6f919..1a17ad2f 100644 --- a/docs/reference/classes/asyncthrottler.md +++ b/docs/reference/classes/asyncthrottler.md @@ -7,7 +7,7 @@ title: AsyncThrottler # Class: AsyncThrottler\ -Defined in: [packages/pacer/src/async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L189) +Defined in: [async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L189) A class that creates an async throttled function. @@ -69,7 +69,7 @@ const result = await throttler.maybeExecute(inputElement.value); new AsyncThrottler(fn, initialOptions): AsyncThrottler ``` -Defined in: [packages/pacer/src/async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L200) +Defined in: [async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L200) #### Parameters @@ -93,7 +93,7 @@ Defined in: [packages/pacer/src/async-throttler.ts:200](https://github.com/TanSt fn: TFn; ``` -Defined in: [packages/pacer/src/async-throttler.ts:201](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L201) +Defined in: [async-throttler.ts:201](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L201) *** @@ -103,7 +103,7 @@ Defined in: [packages/pacer/src/async-throttler.ts:201](https://github.com/TanSt options: AsyncThrottlerOptions; ``` -Defined in: [packages/pacer/src/async-throttler.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L193) +Defined in: [async-throttler.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L193) *** @@ -113,7 +113,7 @@ Defined in: [packages/pacer/src/async-throttler.ts:193](https://github.com/TanSt readonly store: Store>>; ``` -Defined in: [packages/pacer/src/async-throttler.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L190) +Defined in: [async-throttler.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L190) ## Methods @@ -123,7 +123,7 @@ Defined in: [packages/pacer/src/async-throttler.ts:190](https://github.com/TanSt cancel(): void ``` -Defined in: [packages/pacer/src/async-throttler.ts:425](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L425) +Defined in: [async-throttler.ts:429](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L429) Cancels any pending execution or aborts any execution in progress @@ -139,7 +139,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [packages/pacer/src/async-throttler.ts:374](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L374) +Defined in: [async-throttler.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L378) Processes the current pending execution immediately @@ -155,7 +155,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [packages/pacer/src/async-throttler.ts:284](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L284) +Defined in: [async-throttler.ts:288](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L288) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -197,7 +197,7 @@ await throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [packages/pacer/src/async-throttler.ts:433](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L433) +Defined in: [async-throttler.ts:437](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L437) Resets the debouncer state to its default values @@ -213,7 +213,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/async-throttler.ts:215](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L215) +Defined in: [async-throttler.ts:216](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L216) Updates the async throttler options diff --git a/docs/reference/classes/batcher.md b/docs/reference/classes/batcher.md index 57a9ffb3..aca76a53 100644 --- a/docs/reference/classes/batcher.md +++ b/docs/reference/classes/batcher.md @@ -7,7 +7,7 @@ title: Batcher # Class: Batcher\ -Defined in: [packages/pacer/src/batcher.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L139) +Defined in: [batcher.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L139) A class that collects items and processes them in batches. @@ -59,7 +59,7 @@ batcher.addItem(2); new Batcher(fn, initialOptions): Batcher ``` -Defined in: [packages/pacer/src/batcher.ts:146](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L146) +Defined in: [batcher.ts:146](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L146) #### Parameters @@ -83,7 +83,7 @@ Defined in: [packages/pacer/src/batcher.ts:146](https://github.com/TanStack/pace fn: (items) => void; ``` -Defined in: [packages/pacer/src/batcher.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L147) +Defined in: [batcher.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L147) #### Parameters @@ -103,7 +103,7 @@ Defined in: [packages/pacer/src/batcher.ts:147](https://github.com/TanStack/pace options: BatcherOptionsWithOptionalCallbacks; ``` -Defined in: [packages/pacer/src/batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L143) +Defined in: [batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L143) *** @@ -113,7 +113,7 @@ Defined in: [packages/pacer/src/batcher.ts:143](https://github.com/TanStack/pace readonly store: Store>>; ``` -Defined in: [packages/pacer/src/batcher.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L140) +Defined in: [batcher.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L140) ## Methods @@ -123,7 +123,7 @@ Defined in: [packages/pacer/src/batcher.ts:140](https://github.com/TanStack/pace addItem(item): void ``` -Defined in: [packages/pacer/src/batcher.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L193) +Defined in: [batcher.ts:197](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L197) Adds an item to the batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -146,7 +146,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [packages/pacer/src/batcher.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L263) +Defined in: [batcher.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L267) Removes all items from the batcher @@ -162,7 +162,7 @@ Removes all items from the batcher flush(): void ``` -Defined in: [packages/pacer/src/batcher.ts:241](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L241) +Defined in: [batcher.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L245) Processes the current batch of items immediately @@ -178,7 +178,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [packages/pacer/src/batcher.ts:249](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L249) +Defined in: [batcher.ts:253](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L253) Returns a copy of all items in the batcher @@ -194,7 +194,7 @@ Returns a copy of all items in the batcher reset(): void ``` -Defined in: [packages/pacer/src/batcher.ts:270](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L270) +Defined in: [batcher.ts:274](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L274) Resets the batcher state to its default values @@ -210,7 +210,7 @@ Resets the batcher state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/batcher.ts:160](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L160) +Defined in: [batcher.ts:161](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L161) Updates the batcher options diff --git a/docs/reference/classes/debouncer.md b/docs/reference/classes/debouncer.md index 3579c252..18bbec02 100644 --- a/docs/reference/classes/debouncer.md +++ b/docs/reference/classes/debouncer.md @@ -7,7 +7,7 @@ title: Debouncer # Class: Debouncer\ -Defined in: [packages/pacer/src/debouncer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L119) +Defined in: [debouncer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L119) A class that creates a debounced function. @@ -52,7 +52,7 @@ inputElement.addEventListener('input', () => { new Debouncer(fn, initialOptions): Debouncer ``` -Defined in: [packages/pacer/src/debouncer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L126) +Defined in: [debouncer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L126) #### Parameters @@ -76,7 +76,7 @@ Defined in: [packages/pacer/src/debouncer.ts:126](https://github.com/TanStack/pa fn: TFn; ``` -Defined in: [packages/pacer/src/debouncer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L127) +Defined in: [debouncer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L127) *** @@ -86,7 +86,7 @@ Defined in: [packages/pacer/src/debouncer.ts:127](https://github.com/TanStack/pa options: DebouncerOptions; ``` -Defined in: [packages/pacer/src/debouncer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L123) +Defined in: [debouncer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L123) *** @@ -96,7 +96,7 @@ Defined in: [packages/pacer/src/debouncer.ts:123](https://github.com/TanStack/pa readonly store: Store>>; ``` -Defined in: [packages/pacer/src/debouncer.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L120) +Defined in: [debouncer.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L120) ## Methods @@ -106,7 +106,7 @@ Defined in: [packages/pacer/src/debouncer.ts:120](https://github.com/TanStack/pa cancel(): void ``` -Defined in: [packages/pacer/src/debouncer.ts:246](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L246) +Defined in: [debouncer.ts:250](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L250) Cancels any pending execution @@ -122,7 +122,7 @@ Cancels any pending execution flush(): void ``` -Defined in: [packages/pacer/src/debouncer.ts:229](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L229) +Defined in: [debouncer.ts:233](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L233) Processes the current pending execution immediately @@ -138,7 +138,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [packages/pacer/src/debouncer.ts:187](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L187) +Defined in: [debouncer.ts:191](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L191) Attempts to execute the debounced function If a call is already in progress, it will be queued @@ -161,7 +161,7 @@ If a call is already in progress, it will be queued reset(): void ``` -Defined in: [packages/pacer/src/debouncer.ts:257](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L257) +Defined in: [debouncer.ts:261](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L261) Resets the debouncer state to its default values @@ -177,7 +177,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/debouncer.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L140) +Defined in: [debouncer.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L141) Updates the debouncer options diff --git a/docs/reference/classes/pacereventclient.md b/docs/reference/classes/pacereventclient.md deleted file mode 100644 index c9a25ca9..00000000 --- a/docs/reference/classes/pacereventclient.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -id: PacerEventClient -title: PacerEventClient ---- - - - -# Class: PacerEventClient - -Defined in: [packages/pacer/src/event-client.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L26) - -## Extends - -- `EventClient`\<[`PacerEventMap`](../../interfaces/pacereventmap.md)\> - -## Constructors - -### new PacerEventClient() - -```ts -new PacerEventClient(props?): PacerEventClient -``` - -Defined in: [packages/pacer/src/event-client.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L27) - -#### Parameters - -##### props? - -###### debug - -`boolean` - -#### Returns - -[`PacerEventClient`](../pacereventclient.md) - -#### Overrides - -```ts -EventClient.constructor -``` - -## Methods - -### emit() - -```ts -emit(eventSuffix, payload): number | void -``` - -Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:24 - -#### Type Parameters - -• **TSuffix** *extends* - \| `"async-batcher-state"` - \| `"async-debouncer-state"` - \| `"async-queuer-state"` - \| `"async-rate-limiter-state"` - \| `"async-throttler-state"` - \| `"batcher-state"` - \| `"debouncer-state"` - \| `"queuer-state"` - \| `"rate-limiter-state"` - \| `"throttler-state"` - -#### Parameters - -##### eventSuffix - -`TSuffix` - -##### payload - -[`PacerEventMap`](../../interfaces/pacereventmap.md)\[`` `pacer:${TSuffix}` ``\] - -#### Returns - -`number` \| `void` - -#### Inherited from - -```ts -EventClient.emit -``` - -*** - -### getPluginId() - -```ts -getPluginId(): "pacer" -``` - -Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:22 - -#### Returns - -`"pacer"` - -#### Inherited from - -```ts -EventClient.getPluginId -``` - -*** - -### on() - -```ts -on(eventSuffix, cb): () => void -``` - -Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:25 - -#### Type Parameters - -• **TSuffix** *extends* - \| `"async-batcher-state"` - \| `"async-debouncer-state"` - \| `"async-queuer-state"` - \| `"async-rate-limiter-state"` - \| `"async-throttler-state"` - \| `"batcher-state"` - \| `"debouncer-state"` - \| `"queuer-state"` - \| `"rate-limiter-state"` - \| `"throttler-state"` - -#### Parameters - -##### eventSuffix - -`TSuffix` - -##### cb - -(`event`) => `void` - -#### Returns - -`Function` - -##### Returns - -`void` - -#### Inherited from - -```ts -EventClient.on -``` - -*** - -### onAll() - -```ts -onAll(cb): () => void -``` - -Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:26 - -#### Parameters - -##### cb - -(`event`) => `void` - -#### Returns - -`Function` - -##### Returns - -`void` - -#### Inherited from - -```ts -EventClient.onAll -``` - -*** - -### onAllPluginEvents() - -```ts -onAllPluginEvents(cb): () => void -``` - -Defined in: node\_modules/.pnpm/@tanstack+devtools-event-client@0.2.1/node\_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts:27 - -#### Parameters - -##### cb - -(`event`) => `void` - -#### Returns - -`Function` - -##### Returns - -`void` - -#### Inherited from - -```ts -EventClient.onAllPluginEvents -``` diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index ce191fdb..0bfa3727 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -7,7 +7,7 @@ title: Queuer # Class: Queuer\ -Defined in: [packages/pacer/src/queuer.ts:244](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L244) +Defined in: [queuer.ts:244](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L244) A flexible queue that processes items with configurable wait times, expiration, and priority. @@ -92,7 +92,7 @@ manualQueue.getNextItem(); // returns 2, queue is empty new Queuer(fn, initialOptions): Queuer ``` -Defined in: [packages/pacer/src/queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L251) +Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L251) #### Parameters @@ -116,7 +116,7 @@ Defined in: [packages/pacer/src/queuer.ts:251](https://github.com/TanStack/pacer fn: (item) => void; ``` -Defined in: [packages/pacer/src/queuer.ts:252](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L252) +Defined in: [queuer.ts:252](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L252) #### Parameters @@ -136,7 +136,7 @@ Defined in: [packages/pacer/src/queuer.ts:252](https://github.com/TanStack/pacer options: QueuerOptions; ``` -Defined in: [packages/pacer/src/queuer.ts:248](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L248) +Defined in: [queuer.ts:248](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L248) *** @@ -146,7 +146,7 @@ Defined in: [packages/pacer/src/queuer.ts:248](https://github.com/TanStack/pacer readonly store: Store>>; ``` -Defined in: [packages/pacer/src/queuer.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L245) +Defined in: [queuer.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L245) ## Methods @@ -159,7 +159,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [packages/pacer/src/queuer.ts:366](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L366) +Defined in: [queuer.ts:370](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L370) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -198,7 +198,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [packages/pacer/src/queuer.ts:639](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L639) +Defined in: [queuer.ts:643](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L643) Removes all pending items from the queue. Does not affect items being processed. @@ -214,7 +214,7 @@ Removes all pending items from the queue. Does not affect items being processed. execute(position?): undefined | TValue ``` -Defined in: [packages/pacer/src/queuer.ts:493](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L493) +Defined in: [queuer.ts:497](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L497) Removes and returns the next item from the queue and processes it using the provided function. @@ -243,7 +243,7 @@ queuer.execute('back'); flush(numberOfItems, position?): void ``` -Defined in: [packages/pacer/src/queuer.ts:509](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L509) +Defined in: [queuer.ts:513](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L513) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -270,7 +270,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [packages/pacer/src/queuer.ts:524](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L524) +Defined in: [queuer.ts:528](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L528) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -293,7 +293,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [packages/pacer/src/queuer.ts:446](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L446) +Defined in: [queuer.ts:450](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L450) Removes and returns the next item from the queue without executing the function. Use for manual queue management. Normally, use execute() to process items. @@ -324,7 +324,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [packages/pacer/src/queuer.ts:607](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L607) +Defined in: [queuer.ts:611](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L611) Returns a copy of all items in the queue. @@ -340,7 +340,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [packages/pacer/src/queuer.ts:597](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L597) +Defined in: [queuer.ts:601](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L601) Returns the next item in the queue without removing it. @@ -368,7 +368,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [packages/pacer/src/queuer.ts:647](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L647) +Defined in: [queuer.ts:651](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L651) Resets the queuer state to its default values @@ -384,7 +384,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/queuer.ts:282](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L282) +Defined in: [queuer.ts:283](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L283) Updates the queuer options. New options are merged with existing options. @@ -406,7 +406,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [packages/pacer/src/queuer.ts:614](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L614) +Defined in: [queuer.ts:618](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L618) Starts processing items in the queue. If already isRunning, does nothing. @@ -422,7 +422,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [packages/pacer/src/queuer.ts:624](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L624) +Defined in: [queuer.ts:628](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L628) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/ratelimiter.md b/docs/reference/classes/ratelimiter.md index f45a0e9c..5ef754c7 100644 --- a/docs/reference/classes/ratelimiter.md +++ b/docs/reference/classes/ratelimiter.md @@ -7,7 +7,7 @@ title: RateLimiter # Class: RateLimiter\ -Defined in: [packages/pacer/src/rate-limiter.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L133) +Defined in: [rate-limiter.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L133) A class that creates a rate-limited function. @@ -65,7 +65,7 @@ rateLimiter.maybeExecute('123'); new RateLimiter(fn, initialOptions): RateLimiter ``` -Defined in: [packages/pacer/src/rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L139) +Defined in: [rate-limiter.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L140) #### Parameters @@ -89,7 +89,7 @@ Defined in: [packages/pacer/src/rate-limiter.ts:139](https://github.com/TanStack fn: TFn; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L140) +Defined in: [rate-limiter.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L141) *** @@ -99,7 +99,7 @@ Defined in: [packages/pacer/src/rate-limiter.ts:140](https://github.com/TanStack options: RateLimiterOptions; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L136) +Defined in: [rate-limiter.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L136) *** @@ -109,7 +109,7 @@ Defined in: [packages/pacer/src/rate-limiter.ts:136](https://github.com/TanStack readonly store: Store>; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L134) +Defined in: [rate-limiter.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L134) ## Methods @@ -119,7 +119,7 @@ Defined in: [packages/pacer/src/rate-limiter.ts:134](https://github.com/TanStack getMsUntilNextWindow(): number ``` -Defined in: [packages/pacer/src/rate-limiter.ts:320](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L320) +Defined in: [rate-limiter.ts:325](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L325) Returns the number of milliseconds until the next execution will be possible @@ -135,7 +135,7 @@ Returns the number of milliseconds until the next execution will be possible getRemainingInWindow(): number ``` -Defined in: [packages/pacer/src/rate-limiter.ts:312](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L312) +Defined in: [rate-limiter.ts:317](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L317) Returns the number of remaining executions allowed in the current window @@ -151,7 +151,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): boolean ``` -Defined in: [packages/pacer/src/rate-limiter.ts:218](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L218) +Defined in: [rate-limiter.ts:223](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L223) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -186,7 +186,7 @@ rateLimiter.maybeExecute('arg1', 'arg2'); // false reset(): void ``` -Defined in: [packages/pacer/src/rate-limiter.ts:331](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L331) +Defined in: [rate-limiter.ts:336](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L336) Resets the rate limiter state @@ -202,7 +202,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/rate-limiter.ts:156](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L156) +Defined in: [rate-limiter.ts:158](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L158) Updates the rate limiter options diff --git a/docs/reference/classes/throttler.md b/docs/reference/classes/throttler.md index 71d90dc3..819a0872 100644 --- a/docs/reference/classes/throttler.md +++ b/docs/reference/classes/throttler.md @@ -7,7 +7,7 @@ title: Throttler # Class: Throttler\ -Defined in: [packages/pacer/src/throttler.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L127) +Defined in: [throttler.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L127) A class that creates a throttled function. @@ -56,7 +56,7 @@ throttler.maybeExecute('123'); // Throttled new Throttler(fn, initialOptions): Throttler ``` -Defined in: [packages/pacer/src/throttler.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L134) +Defined in: [throttler.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L135) #### Parameters @@ -80,7 +80,7 @@ Defined in: [packages/pacer/src/throttler.ts:134](https://github.com/TanStack/pa fn: TFn; ``` -Defined in: [packages/pacer/src/throttler.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L135) +Defined in: [throttler.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L136) *** @@ -90,7 +90,7 @@ Defined in: [packages/pacer/src/throttler.ts:135](https://github.com/TanStack/pa options: ThrottlerOptions; ``` -Defined in: [packages/pacer/src/throttler.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L131) +Defined in: [throttler.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L131) *** @@ -100,7 +100,7 @@ Defined in: [packages/pacer/src/throttler.ts:131](https://github.com/TanStack/pa readonly store: Store>>; ``` -Defined in: [packages/pacer/src/throttler.ts:128](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L128) +Defined in: [throttler.ts:128](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L128) ## Methods @@ -110,7 +110,7 @@ Defined in: [packages/pacer/src/throttler.ts:128](https://github.com/TanStack/pa cancel(): void ``` -Defined in: [packages/pacer/src/throttler.ts:284](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L284) +Defined in: [throttler.ts:288](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L288) Cancels any pending trailing execution and clears internal state. @@ -132,7 +132,7 @@ Has no effect if there is no pending execution. flush(): void ``` -Defined in: [packages/pacer/src/throttler.ts:262](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L262) +Defined in: [throttler.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L266) Processes the current pending execution immediately @@ -148,7 +148,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [packages/pacer/src/throttler.ts:207](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L207) +Defined in: [throttler.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L211) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -190,7 +190,7 @@ throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [packages/pacer/src/throttler.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L295) +Defined in: [throttler.ts:299](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L299) Resets the throttler state to its default values @@ -206,7 +206,7 @@ Resets the throttler state to its default values setOptions(newOptions): void ``` -Defined in: [packages/pacer/src/throttler.ts:148](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L148) +Defined in: [throttler.ts:149](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L149) Updates the throttler options diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index 9d6078f3..058fa991 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -11,7 +11,7 @@ title: asyncBatch function asyncBatch(fn, options): (item) => void ``` -Defined in: [packages/pacer/src/async-batcher.ts:443](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L443) +Defined in: [async-batcher.ts:447](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L447) Creates an async batcher that processes items in batches diff --git a/docs/reference/functions/asyncdebounce.md b/docs/reference/functions/asyncdebounce.md index 2792a773..b7ad9237 100644 --- a/docs/reference/functions/asyncdebounce.md +++ b/docs/reference/functions/asyncdebounce.md @@ -11,7 +11,7 @@ title: asyncDebounce function asyncDebounce(fn, initialOptions): (...args) => Promise> ``` -Defined in: [packages/pacer/src/async-debouncer.ts:448](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L448) +Defined in: [async-debouncer.ts:452](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L452) Creates an async debounced function that delays execution until after a specified wait time. The debounced function will only execute once the wait period has elapsed without any new calls. diff --git a/docs/reference/functions/asyncqueue.md b/docs/reference/functions/asyncqueue.md index ffead6df..2e3da553 100644 --- a/docs/reference/functions/asyncqueue.md +++ b/docs/reference/functions/asyncqueue.md @@ -11,7 +11,7 @@ title: asyncQueue function asyncQueue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [packages/pacer/src/async-queuer.ts:753](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L753) +Defined in: [async-queuer.ts:757](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L757) Creates a new AsyncQueuer instance and returns a bound addItem function for adding tasks. The queuer is started automatically and ready to process items. diff --git a/docs/reference/functions/asyncratelimit.md b/docs/reference/functions/asyncratelimit.md index e85faaaa..d0db7b3b 100644 --- a/docs/reference/functions/asyncratelimit.md +++ b/docs/reference/functions/asyncratelimit.md @@ -11,7 +11,7 @@ title: asyncRateLimit function asyncRateLimit(fn, initialOptions): (...args) => Promise> ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:518](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L518) +Defined in: [async-rate-limiter.ts:522](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L522) Creates an async rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/asyncthrottle.md b/docs/reference/functions/asyncthrottle.md index 77f5c6ad..97f76c2b 100644 --- a/docs/reference/functions/asyncthrottle.md +++ b/docs/reference/functions/asyncthrottle.md @@ -11,7 +11,7 @@ title: asyncThrottle function asyncThrottle(fn, initialOptions): (...args) => Promise> ``` -Defined in: [packages/pacer/src/async-throttler.ts:481](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L481) +Defined in: [async-throttler.ts:485](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L485) Creates an async throttled function that limits how often the function can execute. The throttled function will execute at most once per wait period, even if called multiple times. diff --git a/docs/reference/functions/batch.md b/docs/reference/functions/batch.md index 78ccafbc..9342bf72 100644 --- a/docs/reference/functions/batch.md +++ b/docs/reference/functions/batch.md @@ -11,7 +11,7 @@ title: batch function batch(fn, options): (item) => void ``` -Defined in: [packages/pacer/src/batcher.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L294) +Defined in: [batcher.ts:298](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L298) Creates a batcher that processes items in batches diff --git a/docs/reference/functions/debounce.md b/docs/reference/functions/debounce.md index 9b932c63..da4e2ecf 100644 --- a/docs/reference/functions/debounce.md +++ b/docs/reference/functions/debounce.md @@ -11,7 +11,7 @@ title: debounce function debounce(fn, initialOptions): (...args) => void ``` -Defined in: [packages/pacer/src/debouncer.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L290) +Defined in: [debouncer.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L294) Creates a debounced function that delays invoking the provided function until after a specified wait time. Multiple calls during the wait period will cancel previous pending invocations and reset the timer. diff --git a/docs/reference/functions/isfunction.md b/docs/reference/functions/isfunction.md index 9cbdfafd..96879e1e 100644 --- a/docs/reference/functions/isfunction.md +++ b/docs/reference/functions/isfunction.md @@ -11,7 +11,7 @@ title: isFunction function isFunction(value): value is T ``` -Defined in: [packages/pacer/src/utils.ts:3](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L3) +Defined in: [utils.ts:3](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L3) ## Type Parameters diff --git a/docs/reference/functions/parsefunctionorvalue.md b/docs/reference/functions/parsefunctionorvalue.md index 7d0685c7..1629cd6c 100644 --- a/docs/reference/functions/parsefunctionorvalue.md +++ b/docs/reference/functions/parsefunctionorvalue.md @@ -11,7 +11,7 @@ title: parseFunctionOrValue function parseFunctionOrValue(value, ...args): T ``` -Defined in: [packages/pacer/src/utils.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L7) +Defined in: [utils.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L7) ## Type Parameters diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 35556f2b..61dbc854 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [packages/pacer/src/queuer.ts:690](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L690) +Defined in: [queuer.ts:694](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L694) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. diff --git a/docs/reference/functions/ratelimit.md b/docs/reference/functions/ratelimit.md index 0d3918b5..778862a2 100644 --- a/docs/reference/functions/ratelimit.md +++ b/docs/reference/functions/ratelimit.md @@ -11,7 +11,7 @@ title: rateLimit function rateLimit(fn, initialOptions): (...args) => boolean ``` -Defined in: [packages/pacer/src/rate-limiter.ts:383](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L383) +Defined in: [rate-limiter.ts:388](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L388) Creates a rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/throttle.md b/docs/reference/functions/throttle.md index d17e3390..739ae5c2 100644 --- a/docs/reference/functions/throttle.md +++ b/docs/reference/functions/throttle.md @@ -11,7 +11,7 @@ title: throttle function throttle(fn, initialOptions): (...args) => void ``` -Defined in: [packages/pacer/src/throttler.ts:334](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L334) +Defined in: [throttler.ts:338](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L338) Creates a throttled function that limits how often the provided function can execute. diff --git a/docs/reference/index.md b/docs/reference/index.md index bb332f65..a27297a2 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -16,7 +16,6 @@ title: "@tanstack/pacer" - [AsyncThrottler](../classes/asyncthrottler.md) - [Batcher](../classes/batcher.md) - [Debouncer](../classes/debouncer.md) -- [PacerEventClient](../classes/pacereventclient.md) - [Queuer](../classes/queuer.md) - [RateLimiter](../classes/ratelimiter.md) - [Throttler](../classes/throttler.md) diff --git a/docs/reference/interfaces/asyncbatcheroptions.md b/docs/reference/interfaces/asyncbatcheroptions.md index 2b999ffb..e2d5495e 100644 --- a/docs/reference/interfaces/asyncbatcheroptions.md +++ b/docs/reference/interfaces/asyncbatcheroptions.md @@ -7,7 +7,7 @@ title: AsyncBatcherOptions # Interface: AsyncBatcherOptions\ -Defined in: [packages/pacer/src/async-batcher.ts:82](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L82) +Defined in: [async-batcher.ts:82](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L82) Options for configuring an AsyncBatcher instance @@ -23,7 +23,7 @@ Options for configuring an AsyncBatcher instance optional getShouldExecute: (items, batcher) => boolean; ``` -Defined in: [packages/pacer/src/async-batcher.ts:87](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L87) +Defined in: [async-batcher.ts:87](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L87) Custom function to determine if a batch should be processed Return true to process the batch immediately @@ -50,7 +50,7 @@ Return true to process the batch immediately optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/async-batcher.ts:94](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L94) +Defined in: [async-batcher.ts:94](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L94) Initial state for the async batcher @@ -62,7 +62,7 @@ Initial state for the async batcher optional maxSize: number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:99](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L99) +Defined in: [async-batcher.ts:99](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L99) Maximum number of items in a batch @@ -80,7 +80,7 @@ Infinity optional onError: (error, batch, batcher) => void; ``` -Defined in: [packages/pacer/src/async-batcher.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L105) +Defined in: [async-batcher.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L105) Optional error handler for when the batch function throws. If provided, the handler will be called with the error, the batch of items that failed, and batcher instance. @@ -112,7 +112,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onItemsChange: (batcher) => void; ``` -Defined in: [packages/pacer/src/async-batcher.ts:113](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L113) +Defined in: [async-batcher.ts:113](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L113) Callback fired after items are added to the batcher @@ -134,7 +134,7 @@ Callback fired after items are added to the batcher optional onSettled: (batch, batcher) => void; ``` -Defined in: [packages/pacer/src/async-batcher.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L117) +Defined in: [async-batcher.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L117) Optional callback to call when a batch is settled (completed or failed) @@ -160,7 +160,7 @@ Optional callback to call when a batch is settled (completed or failed) optional onSuccess: (result, batch, batcher) => void; ``` -Defined in: [packages/pacer/src/async-batcher.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L121) +Defined in: [async-batcher.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L121) Optional callback to call when a batch succeeds @@ -190,7 +190,7 @@ Optional callback to call when a batch succeeds optional started: boolean; ``` -Defined in: [packages/pacer/src/async-batcher.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L130) +Defined in: [async-batcher.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L130) Whether the batcher should start processing immediately @@ -208,7 +208,7 @@ true optional throwOnError: boolean; ``` -Defined in: [packages/pacer/src/async-batcher.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L136) +Defined in: [async-batcher.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L136) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -222,7 +222,7 @@ Can be explicitly set to override these defaults. optional wait: number | (asyncBatcher) => number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L143) +Defined in: [async-batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L143) Maximum time in milliseconds to wait before processing a batch. If the wait duration has elapsed, the batch will be processed. diff --git a/docs/reference/interfaces/asyncbatcherstate.md b/docs/reference/interfaces/asyncbatcherstate.md index 6b0b2ac2..38bbde18 100644 --- a/docs/reference/interfaces/asyncbatcherstate.md +++ b/docs/reference/interfaces/asyncbatcherstate.md @@ -7,7 +7,7 @@ title: AsyncBatcherState # Interface: AsyncBatcherState\ -Defined in: [packages/pacer/src/async-batcher.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L6) +Defined in: [async-batcher.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/async-batcher.ts:6](https://github.com/TanStack/ errorCount: number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L10) +Defined in: [async-batcher.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L10) Number of batch executions that have resulted in errors @@ -33,7 +33,7 @@ Number of batch executions that have resulted in errors failedItems: TValue[]; ``` -Defined in: [packages/pacer/src/async-batcher.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L14) +Defined in: [async-batcher.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L14) Array of items that failed during batch processing @@ -45,7 +45,7 @@ Array of items that failed during batch processing isEmpty: boolean; ``` -Defined in: [packages/pacer/src/async-batcher.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L18) +Defined in: [async-batcher.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L18) Whether the batcher has no items to process (items array is empty) @@ -57,7 +57,7 @@ Whether the batcher has no items to process (items array is empty) isExecuting: boolean; ``` -Defined in: [packages/pacer/src/async-batcher.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L22) +Defined in: [async-batcher.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L22) Whether a batch is currently being processed asynchronously @@ -69,7 +69,7 @@ Whether a batch is currently being processed asynchronously isPending: boolean; ``` -Defined in: [packages/pacer/src/async-batcher.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L26) +Defined in: [async-batcher.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L26) Whether the batcher is waiting for the timeout to trigger batch processing @@ -81,7 +81,7 @@ Whether the batcher is waiting for the timeout to trigger batch processing items: TValue[]; ``` -Defined in: [packages/pacer/src/async-batcher.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L30) +Defined in: [async-batcher.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L30) Array of items currently queued for batch processing @@ -93,7 +93,7 @@ Array of items currently queued for batch processing lastResult: any; ``` -Defined in: [packages/pacer/src/async-batcher.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L34) +Defined in: [async-batcher.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L34) The result from the most recent batch execution @@ -105,7 +105,7 @@ The result from the most recent batch execution settleCount: number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L38) +Defined in: [async-batcher.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L38) Number of batch executions that have completed (either successfully or with errors) @@ -117,7 +117,7 @@ Number of batch executions that have completed (either successfully or with erro size: number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L42) +Defined in: [async-batcher.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L42) Number of items currently in the batch queue @@ -129,7 +129,7 @@ Number of items currently in the batch queue status: "idle" | "pending" | "executing" | "populated"; ``` -Defined in: [packages/pacer/src/async-batcher.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L46) +Defined in: [async-batcher.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L46) Current processing status - 'idle' when not processing, 'pending' when waiting for timeout, 'executing' when processing, 'populated' when items are present, but no wait is configured @@ -141,7 +141,7 @@ Current processing status - 'idle' when not processing, 'pending' when waiting f successCount: number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L50) +Defined in: [async-batcher.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L50) Number of batch executions that have completed successfully @@ -153,7 +153,7 @@ Number of batch executions that have completed successfully totalItemsFailed: number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L54) +Defined in: [async-batcher.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L54) Total number of items that have failed processing across all batches @@ -165,6 +165,6 @@ Total number of items that have failed processing across all batches totalItemsProcessed: number; ``` -Defined in: [packages/pacer/src/async-batcher.ts:58](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L58) +Defined in: [async-batcher.ts:58](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L58) Total number of items that have been processed across all batches diff --git a/docs/reference/interfaces/asyncdebounceroptions.md b/docs/reference/interfaces/asyncdebounceroptions.md index cb5191ca..53b27b99 100644 --- a/docs/reference/interfaces/asyncdebounceroptions.md +++ b/docs/reference/interfaces/asyncdebounceroptions.md @@ -7,7 +7,7 @@ title: AsyncDebouncerOptions # Interface: AsyncDebouncerOptions\ -Defined in: [packages/pacer/src/async-debouncer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L64) +Defined in: [async-debouncer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L64) Options for configuring an async debounced function @@ -23,7 +23,7 @@ Options for configuring an async debounced function optional enabled: boolean | (debouncer) => boolean; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L70) +Defined in: [async-debouncer.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L70) Whether the debouncer is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L74) +Defined in: [async-debouncer.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L74) Initial state for the async debouncer @@ -49,7 +49,7 @@ Initial state for the async debouncer optional leading: boolean; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L79) +Defined in: [async-debouncer.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L79) Whether to execute on the leading edge of the timeout. Defaults to false. @@ -62,7 +62,7 @@ Defaults to false. optional onError: (error, args, debouncer) => void; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L85) +Defined in: [async-debouncer.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L85) Optional error handler for when the debounced function throws. If provided, the handler will be called with the error and debouncer instance. @@ -94,7 +94,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, debouncer) => void; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L93) +Defined in: [async-debouncer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L93) Optional callback to call when the debounced function is executed @@ -120,7 +120,7 @@ Optional callback to call when the debounced function is executed optional onSuccess: (result, args, debouncer) => void; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L97) +Defined in: [async-debouncer.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L97) Optional callback to call when the debounced function is executed @@ -150,7 +150,7 @@ Optional callback to call when the debounced function is executed optional throwOnError: boolean; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L107) +Defined in: [async-debouncer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L107) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +164,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L112) +Defined in: [async-debouncer.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L112) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -177,7 +177,7 @@ Defaults to true. wait: number | (debouncer) => number; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L118) +Defined in: [async-debouncer.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L118) Delay in milliseconds to wait after the last call before executing. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncdebouncerstate.md b/docs/reference/interfaces/asyncdebouncerstate.md index 513b4101..b8482b0b 100644 --- a/docs/reference/interfaces/asyncdebouncerstate.md +++ b/docs/reference/interfaces/asyncdebouncerstate.md @@ -7,7 +7,7 @@ title: AsyncDebouncerState # Interface: AsyncDebouncerState\ -Defined in: [packages/pacer/src/async-debouncer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L6) +Defined in: [async-debouncer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/async-debouncer.ts:6](https://github.com/TanStac canLeadingExecute: boolean; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L10) +Defined in: [async-debouncer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L10) Whether the debouncer can execute on the leading edge of the timeout @@ -33,7 +33,7 @@ Whether the debouncer can execute on the leading edge of the timeout errorCount: number; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L14) +Defined in: [async-debouncer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L14) Number of function executions that have resulted in errors @@ -45,7 +45,7 @@ Number of function executions that have resulted in errors isExecuting: boolean; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L18) +Defined in: [async-debouncer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L18) Whether the debounced function is currently executing asynchronously @@ -57,7 +57,7 @@ Whether the debounced function is currently executing asynchronously isPending: boolean; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L22) +Defined in: [async-debouncer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L22) Whether the debouncer is waiting for the timeout to trigger execution @@ -69,7 +69,7 @@ Whether the debouncer is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L26) +Defined in: [async-debouncer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L26) The arguments from the most recent call to maybeExecute @@ -81,7 +81,7 @@ The arguments from the most recent call to maybeExecute lastResult: undefined | ReturnType; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L30) +Defined in: [async-debouncer.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L30) The result from the most recent successful function execution @@ -93,7 +93,7 @@ The result from the most recent successful function execution settleCount: number; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L34) +Defined in: [async-debouncer.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L34) Number of function executions that have completed (either successfully or with errors) @@ -105,7 +105,7 @@ Number of function executions that have completed (either successfully or with e status: "disabled" | "idle" | "pending" | "executing" | "settled"; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L38) +Defined in: [async-debouncer.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L38) Current execution status - 'idle' when not active, 'pending' when waiting, 'executing' when running, 'settled' when completed @@ -117,6 +117,6 @@ Current execution status - 'idle' when not active, 'pending' when waiting, 'exec successCount: number; ``` -Defined in: [packages/pacer/src/async-debouncer.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L42) +Defined in: [async-debouncer.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L42) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/asyncqueueroptions.md b/docs/reference/interfaces/asyncqueueroptions.md index dd99dce3..7685fe32 100644 --- a/docs/reference/interfaces/asyncqueueroptions.md +++ b/docs/reference/interfaces/asyncqueueroptions.md @@ -7,7 +7,7 @@ title: AsyncQueuerOptions # Interface: AsyncQueuerOptions\ -Defined in: [packages/pacer/src/async-queuer.ts:95](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L95) +Defined in: [async-queuer.ts:95](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L95) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/async-queuer.ts:95](https://github.com/TanStack/ optional addItemsTo: QueuePosition; ``` -Defined in: [packages/pacer/src/async-queuer.ts:100](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L100) +Defined in: [async-queuer.ts:100](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L100) Default position to add items to the queuer @@ -39,7 +39,7 @@ Default position to add items to the queuer optional concurrency: number | (queuer) => number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L106) +Defined in: [async-queuer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L106) Maximum number of concurrent tasks to process. Can be a number or a function that returns a number. @@ -58,7 +58,7 @@ Can be a number or a function that returns a number. optional expirationDuration: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L111) +Defined in: [async-queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L111) Maximum time in milliseconds that an item can stay in the queue If not provided, items will never expire @@ -71,7 +71,7 @@ If not provided, items will never expire optional getIsExpired: (item, addedAt) => boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L116) +Defined in: [async-queuer.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L116) Function to determine if an item has expired If provided, this overrides the expirationDuration behavior @@ -98,7 +98,7 @@ If provided, this overrides the expirationDuration behavior optional getItemsFrom: QueuePosition; ``` -Defined in: [packages/pacer/src/async-queuer.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L121) +Defined in: [async-queuer.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L121) Default position to get items from during processing @@ -116,7 +116,7 @@ Default position to get items from during processing optional getPriority: (item) => number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L127) +Defined in: [async-queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L127) Function to determine priority of items in the queuer Higher priority items will be processed first @@ -140,7 +140,7 @@ If not provided, will use static priority values attached to tasks optional initialItems: TValue[]; ``` -Defined in: [packages/pacer/src/async-queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L131) +Defined in: [async-queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L131) Initial items to populate the queuer with @@ -152,7 +152,7 @@ Initial items to populate the queuer with optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/async-queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L135) +Defined in: [async-queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L135) Initial state for the async queuer @@ -164,7 +164,7 @@ Initial state for the async queuer optional maxSize: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L139) +Defined in: [async-queuer.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L139) Maximum number of items allowed in the queuer @@ -176,7 +176,7 @@ Maximum number of items allowed in the queuer optional onError: (error, item, queuer) => void; ``` -Defined in: [packages/pacer/src/async-queuer.ts:145](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L145) +Defined in: [async-queuer.ts:145](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L145) Optional error handler for when a task throws. If provided, the handler will be called with the error and queuer instance. @@ -208,7 +208,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onExpire: (item, queuer) => void; ``` -Defined in: [packages/pacer/src/async-queuer.ts:149](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L149) +Defined in: [async-queuer.ts:149](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L149) Callback fired whenever an item expires in the queuer @@ -234,7 +234,7 @@ Callback fired whenever an item expires in the queuer optional onItemsChange: (queuer) => void; ``` -Defined in: [packages/pacer/src/async-queuer.ts:153](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L153) +Defined in: [async-queuer.ts:153](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L153) Callback fired whenever an item is added or removed from the queuer @@ -256,7 +256,7 @@ Callback fired whenever an item is added or removed from the queuer optional onReject: (item, queuer) => void; ``` -Defined in: [packages/pacer/src/async-queuer.ts:157](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L157) +Defined in: [async-queuer.ts:157](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L157) Callback fired whenever an item is rejected from being added to the queuer @@ -282,7 +282,7 @@ Callback fired whenever an item is rejected from being added to the queuer optional onSettled: (item, queuer) => void; ``` -Defined in: [packages/pacer/src/async-queuer.ts:161](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L161) +Defined in: [async-queuer.ts:161](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L161) Optional callback to call when a task is settled @@ -308,7 +308,7 @@ Optional callback to call when a task is settled optional onSuccess: (result, item, queuer) => void; ``` -Defined in: [packages/pacer/src/async-queuer.ts:165](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L165) +Defined in: [async-queuer.ts:165](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L165) Optional callback to call when a task succeeds @@ -338,7 +338,7 @@ Optional callback to call when a task succeeds optional started: boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:169](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L169) +Defined in: [async-queuer.ts:169](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L169) Whether the queuer should start processing tasks immediately or not. @@ -350,7 +350,7 @@ Whether the queuer should start processing tasks immediately or not. optional throwOnError: boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:175](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L175) +Defined in: [async-queuer.ts:175](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L175) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -364,7 +364,7 @@ Can be explicitly set to override these defaults. optional wait: number | (queuer) => number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:181](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L181) +Defined in: [async-queuer.ts:181](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L181) Time in milliseconds to wait between processing items. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncqueuerstate.md b/docs/reference/interfaces/asyncqueuerstate.md index f7aca665..130e33b7 100644 --- a/docs/reference/interfaces/asyncqueuerstate.md +++ b/docs/reference/interfaces/asyncqueuerstate.md @@ -7,7 +7,7 @@ title: AsyncQueuerState # Interface: AsyncQueuerState\ -Defined in: [packages/pacer/src/async-queuer.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L7) +Defined in: [async-queuer.ts:7](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L7) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/async-queuer.ts:7](https://github.com/TanStack/p activeItems: TValue[]; ``` -Defined in: [packages/pacer/src/async-queuer.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L11) +Defined in: [async-queuer.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L11) Items currently being processed by the queuer @@ -33,7 +33,7 @@ Items currently being processed by the queuer errorCount: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L15) +Defined in: [async-queuer.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L15) Number of task executions that have resulted in errors @@ -45,7 +45,7 @@ Number of task executions that have resulted in errors expirationCount: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L19) +Defined in: [async-queuer.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L19) Number of items that have been removed from the queue due to expiration @@ -57,7 +57,7 @@ Number of items that have been removed from the queue due to expiration isEmpty: boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L23) +Defined in: [async-queuer.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L23) Whether the queuer has no items to process (items array is empty) @@ -69,7 +69,7 @@ Whether the queuer has no items to process (items array is empty) isFull: boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L27) +Defined in: [async-queuer.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L27) Whether the queuer has reached its maximum capacity @@ -81,7 +81,7 @@ Whether the queuer has reached its maximum capacity isIdle: boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L31) +Defined in: [async-queuer.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L31) Whether the queuer is not currently processing any items @@ -93,7 +93,7 @@ Whether the queuer is not currently processing any items isRunning: boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L35) +Defined in: [async-queuer.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L35) Whether the queuer is active and will process items automatically @@ -105,7 +105,7 @@ Whether the queuer is active and will process items automatically items: TValue[]; ``` -Defined in: [packages/pacer/src/async-queuer.ts:39](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L39) +Defined in: [async-queuer.ts:39](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L39) Array of items currently waiting to be processed @@ -117,7 +117,7 @@ Array of items currently waiting to be processed itemTimestamps: number[]; ``` -Defined in: [packages/pacer/src/async-queuer.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L43) +Defined in: [async-queuer.ts:43](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L43) Timestamps when items were added to the queue for expiration tracking @@ -129,7 +129,7 @@ Timestamps when items were added to the queue for expiration tracking lastResult: any; ``` -Defined in: [packages/pacer/src/async-queuer.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L47) +Defined in: [async-queuer.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L47) The result from the most recent task execution @@ -141,7 +141,7 @@ The result from the most recent task execution pendingTick: boolean; ``` -Defined in: [packages/pacer/src/async-queuer.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L51) +Defined in: [async-queuer.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L51) Whether the queuer has a pending timeout for processing the next item @@ -153,7 +153,7 @@ Whether the queuer has a pending timeout for processing the next item rejectionCount: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L55) +Defined in: [async-queuer.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L55) Number of items that have been rejected from being added to the queue @@ -165,7 +165,7 @@ Number of items that have been rejected from being added to the queue settledCount: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L59) +Defined in: [async-queuer.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L59) Number of task executions that have completed (either successfully or with errors) @@ -177,7 +177,7 @@ Number of task executions that have completed (either successfully or with error size: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L63) +Defined in: [async-queuer.ts:63](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L63) Number of items currently in the queue @@ -189,7 +189,7 @@ Number of items currently in the queue status: "idle" | "running" | "stopped"; ``` -Defined in: [packages/pacer/src/async-queuer.ts:67](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L67) +Defined in: [async-queuer.ts:67](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L67) Current processing status - 'idle' when not processing, 'running' when active, 'stopped' when paused @@ -201,6 +201,6 @@ Current processing status - 'idle' when not processing, 'running' when active, ' successCount: number; ``` -Defined in: [packages/pacer/src/async-queuer.ts:71](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L71) +Defined in: [async-queuer.ts:71](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L71) Number of task executions that have completed successfully diff --git a/docs/reference/interfaces/asyncratelimiteroptions.md b/docs/reference/interfaces/asyncratelimiteroptions.md index 6de7abfe..40f9ac9d 100644 --- a/docs/reference/interfaces/asyncratelimiteroptions.md +++ b/docs/reference/interfaces/asyncratelimiteroptions.md @@ -7,7 +7,7 @@ title: AsyncRateLimiterOptions # Interface: AsyncRateLimiterOptions\ -Defined in: [packages/pacer/src/async-rate-limiter.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L64) +Defined in: [async-rate-limiter.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L64) Options for configuring an async rate-limited function @@ -23,7 +23,7 @@ Options for configuring an async rate-limited function optional enabled: boolean | (rateLimiter) => boolean; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L70) +Defined in: [async-rate-limiter.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L70) Whether the rate limiter is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L74) +Defined in: [async-rate-limiter.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L74) Initial state for the rate limiter @@ -49,7 +49,7 @@ Initial state for the rate limiter limit: number | (rateLimiter) => number; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L79) +Defined in: [async-rate-limiter.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L79) Maximum number of executions allowed within the time window. Can be a number or a function that returns a number. @@ -62,7 +62,7 @@ Can be a number or a function that returns a number. optional onError: (error, args, rateLimiter) => void; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L85) +Defined in: [async-rate-limiter.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L85) Optional error handler for when the rate-limited function throws. If provided, the handler will be called with the error and rate limiter instance. @@ -94,7 +94,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onReject: (args, rateLimiter) => void; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L93) +Defined in: [async-rate-limiter.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L93) Optional callback function that is called when an execution is rejected due to rate limiting @@ -120,7 +120,7 @@ Optional callback function that is called when an execution is rejected due to r optional onSettled: (args, rateLimiter) => void; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L97) +Defined in: [async-rate-limiter.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L97) Optional function to call when the rate-limited function is executed @@ -146,7 +146,7 @@ Optional function to call when the rate-limited function is executed optional onSuccess: (result, args, rateLimiter) => void; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L104) +Defined in: [async-rate-limiter.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L104) Optional function to call when the rate-limited function is executed @@ -176,7 +176,7 @@ Optional function to call when the rate-limited function is executed optional throwOnError: boolean; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:114](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L114) +Defined in: [async-rate-limiter.ts:114](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L114) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -190,7 +190,7 @@ Can be explicitly set to override these defaults. window: number | (rateLimiter) => number; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L119) +Defined in: [async-rate-limiter.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L119) Time window in milliseconds within which the limit applies. Can be a number or a function that returns a number. @@ -203,7 +203,7 @@ Can be a number or a function that returns a number. optional windowType: "fixed" | "sliding"; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L126) +Defined in: [async-rate-limiter.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L126) Type of window to use for rate limiting - 'fixed': Uses a fixed window that resets after the window period diff --git a/docs/reference/interfaces/asyncratelimiterstate.md b/docs/reference/interfaces/asyncratelimiterstate.md index dabae5fe..40df4d50 100644 --- a/docs/reference/interfaces/asyncratelimiterstate.md +++ b/docs/reference/interfaces/asyncratelimiterstate.md @@ -7,7 +7,7 @@ title: AsyncRateLimiterState # Interface: AsyncRateLimiterState\ -Defined in: [packages/pacer/src/async-rate-limiter.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L6) +Defined in: [async-rate-limiter.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/async-rate-limiter.ts:6](https://github.com/TanS errorCount: number; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L10) +Defined in: [async-rate-limiter.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L10) Number of function executions that have resulted in errors @@ -33,7 +33,7 @@ Number of function executions that have resulted in errors executionTimes: number[]; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L14) +Defined in: [async-rate-limiter.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L14) Array of timestamps when executions occurred for rate limiting calculations @@ -45,7 +45,7 @@ Array of timestamps when executions occurred for rate limiting calculations isExceeded: boolean; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L18) +Defined in: [async-rate-limiter.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L18) Whether the rate limiter has exceeded the limit @@ -57,7 +57,7 @@ Whether the rate limiter has exceeded the limit isExecuting: boolean; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L22) +Defined in: [async-rate-limiter.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L22) Whether the rate-limited function is currently executing asynchronously @@ -69,7 +69,7 @@ Whether the rate-limited function is currently executing asynchronously lastResult: undefined | ReturnType; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L26) +Defined in: [async-rate-limiter.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L26) The result from the most recent successful function execution @@ -81,7 +81,7 @@ The result from the most recent successful function execution rejectionCount: number; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L30) +Defined in: [async-rate-limiter.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L30) Number of function executions that have been rejected due to rate limiting @@ -93,7 +93,7 @@ Number of function executions that have been rejected due to rate limiting settleCount: number; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L34) +Defined in: [async-rate-limiter.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L34) Number of function executions that have completed (either successfully or with errors) @@ -105,7 +105,7 @@ Number of function executions that have completed (either successfully or with e status: "disabled" | "idle" | "executing" | "exceeded"; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L38) +Defined in: [async-rate-limiter.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L38) Current execution status - 'disabled' when not active, 'executing' when executing, 'idle' when not executing, 'exceeded' when rate limit is exceeded @@ -117,6 +117,6 @@ Current execution status - 'disabled' when not active, 'executing' when executin successCount: number; ``` -Defined in: [packages/pacer/src/async-rate-limiter.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L42) +Defined in: [async-rate-limiter.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L42) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/asyncthrottleroptions.md b/docs/reference/interfaces/asyncthrottleroptions.md index 7fa793f1..277be425 100644 --- a/docs/reference/interfaces/asyncthrottleroptions.md +++ b/docs/reference/interfaces/asyncthrottleroptions.md @@ -7,7 +7,7 @@ title: AsyncThrottlerOptions # Interface: AsyncThrottlerOptions\ -Defined in: [packages/pacer/src/async-throttler.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L69) +Defined in: [async-throttler.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L69) Options for configuring an async throttled function @@ -23,7 +23,7 @@ Options for configuring an async throttled function optional enabled: boolean | (throttler) => boolean; ``` -Defined in: [packages/pacer/src/async-throttler.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L75) +Defined in: [async-throttler.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L75) Whether the throttler is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/async-throttler.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L79) +Defined in: [async-throttler.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L79) Initial state for the async throttler @@ -49,7 +49,7 @@ Initial state for the async throttler optional leading: boolean; ``` -Defined in: [packages/pacer/src/async-throttler.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L84) +Defined in: [async-throttler.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L84) Whether to execute the function immediately when called Defaults to true @@ -62,7 +62,7 @@ Defaults to true optional onError: (error, args, asyncThrottler) => void; ``` -Defined in: [packages/pacer/src/async-throttler.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L90) +Defined in: [async-throttler.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L90) Optional error handler for when the throttled function throws. If provided, the handler will be called with the error and throttler instance. @@ -94,7 +94,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, asyncThrottler) => void; ``` -Defined in: [packages/pacer/src/async-throttler.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L98) +Defined in: [async-throttler.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L98) Optional function to call when the throttled function is executed @@ -120,7 +120,7 @@ Optional function to call when the throttled function is executed optional onSuccess: (result, args, asyncThrottler) => void; ``` -Defined in: [packages/pacer/src/async-throttler.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L105) +Defined in: [async-throttler.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L105) Optional function to call when the throttled function is executed @@ -150,7 +150,7 @@ Optional function to call when the throttled function is executed optional throwOnError: boolean; ``` -Defined in: [packages/pacer/src/async-throttler.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L115) +Defined in: [async-throttler.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L115) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +164,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [packages/pacer/src/async-throttler.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L120) +Defined in: [async-throttler.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L120) Whether to execute the function on the trailing edge of the wait period Defaults to true @@ -177,7 +177,7 @@ Defaults to true wait: number | (throttler) => number; ``` -Defined in: [packages/pacer/src/async-throttler.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L126) +Defined in: [async-throttler.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L126) Time window in milliseconds during which the function can only be executed once. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncthrottlerstate.md b/docs/reference/interfaces/asyncthrottlerstate.md index bf3c5d98..2340f1b1 100644 --- a/docs/reference/interfaces/asyncthrottlerstate.md +++ b/docs/reference/interfaces/asyncthrottlerstate.md @@ -7,7 +7,7 @@ title: AsyncThrottlerState # Interface: AsyncThrottlerState\ -Defined in: [packages/pacer/src/async-throttler.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L6) +Defined in: [async-throttler.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/async-throttler.ts:6](https://github.com/TanStac errorCount: number; ``` -Defined in: [packages/pacer/src/async-throttler.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L10) +Defined in: [async-throttler.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L10) Number of function executions that have resulted in errors @@ -33,7 +33,7 @@ Number of function executions that have resulted in errors isExecuting: boolean; ``` -Defined in: [packages/pacer/src/async-throttler.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L14) +Defined in: [async-throttler.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L14) Whether the throttled function is currently executing asynchronously @@ -45,7 +45,7 @@ Whether the throttled function is currently executing asynchronously isPending: boolean; ``` -Defined in: [packages/pacer/src/async-throttler.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L18) +Defined in: [async-throttler.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L18) Whether the throttler is waiting for the timeout to trigger execution @@ -57,7 +57,7 @@ Whether the throttler is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [packages/pacer/src/async-throttler.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L22) +Defined in: [async-throttler.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L22) The arguments from the most recent call to maybeExecute @@ -69,7 +69,7 @@ The arguments from the most recent call to maybeExecute lastExecutionTime: number; ``` -Defined in: [packages/pacer/src/async-throttler.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L26) +Defined in: [async-throttler.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L26) Timestamp of the last function execution in milliseconds @@ -81,7 +81,7 @@ Timestamp of the last function execution in milliseconds lastResult: undefined | ReturnType; ``` -Defined in: [packages/pacer/src/async-throttler.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L30) +Defined in: [async-throttler.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L30) The result from the most recent successful function execution @@ -93,7 +93,7 @@ The result from the most recent successful function execution nextExecutionTime: undefined | number; ``` -Defined in: [packages/pacer/src/async-throttler.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L34) +Defined in: [async-throttler.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L34) Timestamp when the next execution can occur in milliseconds @@ -105,7 +105,7 @@ Timestamp when the next execution can occur in milliseconds settleCount: number; ``` -Defined in: [packages/pacer/src/async-throttler.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L38) +Defined in: [async-throttler.ts:38](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L38) Number of function executions that have completed (either successfully or with errors) @@ -117,7 +117,7 @@ Number of function executions that have completed (either successfully or with e status: "disabled" | "idle" | "pending" | "executing" | "settled"; ``` -Defined in: [packages/pacer/src/async-throttler.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L42) +Defined in: [async-throttler.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L42) Current execution status - 'idle' when not active, 'pending' when waiting, 'executing' when running, 'settled' when completed @@ -129,6 +129,6 @@ Current execution status - 'idle' when not active, 'pending' when waiting, 'exec successCount: number; ``` -Defined in: [packages/pacer/src/async-throttler.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L46) +Defined in: [async-throttler.ts:46](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L46) Number of function executions that have completed successfully diff --git a/docs/reference/interfaces/batcheroptions.md b/docs/reference/interfaces/batcheroptions.md index 9577326e..2c44ec3d 100644 --- a/docs/reference/interfaces/batcheroptions.md +++ b/docs/reference/interfaces/batcheroptions.md @@ -7,7 +7,7 @@ title: BatcherOptions # Interface: BatcherOptions\ -Defined in: [packages/pacer/src/batcher.ts:52](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L52) +Defined in: [batcher.ts:52](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L52) Options for configuring a Batcher instance @@ -23,7 +23,7 @@ Options for configuring a Batcher instance optional getShouldExecute: (items, batcher) => boolean; ``` -Defined in: [packages/pacer/src/batcher.ts:57](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L57) +Defined in: [batcher.ts:57](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L57) Custom function to determine if a batch should be processed Return true to process the batch immediately @@ -50,7 +50,7 @@ Return true to process the batch immediately optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/batcher.ts:61](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L61) +Defined in: [batcher.ts:61](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L61) Initial state for the batcher @@ -62,7 +62,7 @@ Initial state for the batcher optional maxSize: number; ``` -Defined in: [packages/pacer/src/batcher.ts:66](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L66) +Defined in: [batcher.ts:66](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L66) Maximum number of items in a batch @@ -80,7 +80,7 @@ Infinity optional onExecute: (batch, batcher) => void; ``` -Defined in: [packages/pacer/src/batcher.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L70) +Defined in: [batcher.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L70) Callback fired after a batch is processed @@ -106,7 +106,7 @@ Callback fired after a batch is processed optional onItemsChange: (batcher) => void; ``` -Defined in: [packages/pacer/src/batcher.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L74) +Defined in: [batcher.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L74) Callback fired after items are added to the batcher @@ -128,7 +128,7 @@ Callback fired after items are added to the batcher optional started: boolean; ``` -Defined in: [packages/pacer/src/batcher.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L79) +Defined in: [batcher.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L79) Whether the batcher should start processing immediately @@ -146,7 +146,7 @@ true optional wait: number | (batcher) => number; ``` -Defined in: [packages/pacer/src/batcher.ts:86](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L86) +Defined in: [batcher.ts:86](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L86) Maximum time in milliseconds to wait before processing a batch. If the wait duration has elapsed, the batch will be processed. diff --git a/docs/reference/interfaces/batcherstate.md b/docs/reference/interfaces/batcherstate.md index a4fba1d1..fc3e32e7 100644 --- a/docs/reference/interfaces/batcherstate.md +++ b/docs/reference/interfaces/batcherstate.md @@ -7,7 +7,7 @@ title: BatcherState # Interface: BatcherState\ -Defined in: [packages/pacer/src/batcher.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L6) +Defined in: [batcher.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/batcher.ts:6](https://github.com/TanStack/pacer/ executionCount: number; ``` -Defined in: [packages/pacer/src/batcher.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L10) +Defined in: [batcher.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L10) Number of batch executions that have been completed @@ -33,7 +33,7 @@ Number of batch executions that have been completed isEmpty: boolean; ``` -Defined in: [packages/pacer/src/batcher.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L14) +Defined in: [batcher.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L14) Whether the batcher has no items to process (items array is empty) @@ -45,7 +45,7 @@ Whether the batcher has no items to process (items array is empty) isPending: boolean; ``` -Defined in: [packages/pacer/src/batcher.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L18) +Defined in: [batcher.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L18) Whether the batcher is waiting for the timeout to trigger batch processing @@ -57,7 +57,7 @@ Whether the batcher is waiting for the timeout to trigger batch processing items: TValue[]; ``` -Defined in: [packages/pacer/src/batcher.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L22) +Defined in: [batcher.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L22) Array of items currently queued for batch processing @@ -69,7 +69,7 @@ Array of items currently queued for batch processing size: number; ``` -Defined in: [packages/pacer/src/batcher.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L26) +Defined in: [batcher.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L26) Number of items currently in the batch queue @@ -81,7 +81,7 @@ Number of items currently in the batch queue status: "idle" | "pending"; ``` -Defined in: [packages/pacer/src/batcher.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L30) +Defined in: [batcher.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L30) Current processing status - 'idle' when not processing, 'pending' when waiting for timeout @@ -93,6 +93,6 @@ Current processing status - 'idle' when not processing, 'pending' when waiting f totalItemsProcessed: number; ``` -Defined in: [packages/pacer/src/batcher.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L34) +Defined in: [batcher.ts:34](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L34) Total number of items that have been processed across all batches diff --git a/docs/reference/interfaces/debounceroptions.md b/docs/reference/interfaces/debounceroptions.md index 63fbc3d3..9910cddd 100644 --- a/docs/reference/interfaces/debounceroptions.md +++ b/docs/reference/interfaces/debounceroptions.md @@ -7,7 +7,7 @@ title: DebouncerOptions # Interface: DebouncerOptions\ -Defined in: [packages/pacer/src/debouncer.ts:44](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L44) +Defined in: [debouncer.ts:44](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L44) Options for configuring a debounced function @@ -23,7 +23,7 @@ Options for configuring a debounced function optional enabled: boolean | (debouncer) => boolean; ``` -Defined in: [packages/pacer/src/debouncer.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L50) +Defined in: [debouncer.ts:50](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L50) Whether the debouncer is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/debouncer.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L54) +Defined in: [debouncer.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L54) Initial state for the debouncer @@ -49,7 +49,7 @@ Initial state for the debouncer optional leading: boolean; ``` -Defined in: [packages/pacer/src/debouncer.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L60) +Defined in: [debouncer.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L60) Whether to execute on the leading edge of the timeout. The first call will execute immediately and the rest will wait the delay. @@ -63,7 +63,7 @@ Defaults to false. optional onExecute: (args, debouncer) => void; ``` -Defined in: [packages/pacer/src/debouncer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L64) +Defined in: [debouncer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L64) Callback function that is called after the function is executed @@ -89,7 +89,7 @@ Callback function that is called after the function is executed optional trailing: boolean; ``` -Defined in: [packages/pacer/src/debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L69) +Defined in: [debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L69) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -102,7 +102,7 @@ Defaults to true. wait: number | (debouncer) => number; ``` -Defined in: [packages/pacer/src/debouncer.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L75) +Defined in: [debouncer.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L75) Delay in milliseconds before executing the function. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/debouncerstate.md b/docs/reference/interfaces/debouncerstate.md index 5cabe467..676c46f5 100644 --- a/docs/reference/interfaces/debouncerstate.md +++ b/docs/reference/interfaces/debouncerstate.md @@ -7,7 +7,7 @@ title: DebouncerState # Interface: DebouncerState\ -Defined in: [packages/pacer/src/debouncer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L6) +Defined in: [debouncer.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/debouncer.ts:6](https://github.com/TanStack/pace canLeadingExecute: boolean; ``` -Defined in: [packages/pacer/src/debouncer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L10) +Defined in: [debouncer.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L10) Whether the debouncer can execute on the leading edge of the timeout @@ -33,7 +33,7 @@ Whether the debouncer can execute on the leading edge of the timeout executionCount: number; ``` -Defined in: [packages/pacer/src/debouncer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L14) +Defined in: [debouncer.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L14) Number of function executions that have been completed @@ -45,7 +45,7 @@ Number of function executions that have been completed isPending: boolean; ``` -Defined in: [packages/pacer/src/debouncer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L18) +Defined in: [debouncer.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L18) Whether the debouncer is waiting for the timeout to trigger execution @@ -57,7 +57,7 @@ Whether the debouncer is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [packages/pacer/src/debouncer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L22) +Defined in: [debouncer.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L22) The arguments from the most recent call to maybeExecute @@ -69,6 +69,6 @@ The arguments from the most recent call to maybeExecute status: "disabled" | "idle" | "pending"; ``` -Defined in: [packages/pacer/src/debouncer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L26) +Defined in: [debouncer.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L26) Current execution status - 'idle' when not active, 'pending' when waiting for timeout diff --git a/docs/reference/interfaces/pacereventmap.md b/docs/reference/interfaces/pacereventmap.md index 24757832..9193e21c 100644 --- a/docs/reference/interfaces/pacereventmap.md +++ b/docs/reference/interfaces/pacereventmap.md @@ -7,104 +7,104 @@ title: PacerEventMap # Interface: PacerEventMap -Defined in: [packages/pacer/src/event-client.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L13) +Defined in: [event-client.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L15) ## Properties ### pacer:async-batcher-state ```ts -pacer:async-batcher-state: AsyncBatcherState; +pacer:async-batcher-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L14) +Defined in: [event-client.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L16) *** ### pacer:async-debouncer-state ```ts -pacer:async-debouncer-state: AsyncDebouncerState; +pacer:async-debouncer-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L15) +Defined in: [event-client.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L17) *** ### pacer:async-queuer-state ```ts -pacer:async-queuer-state: AsyncQueuerState; +pacer:async-queuer-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L16) +Defined in: [event-client.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L18) *** ### pacer:async-rate-limiter-state ```ts -pacer:async-rate-limiter-state: AsyncRateLimiterState; +pacer:async-rate-limiter-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L17) +Defined in: [event-client.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L19) *** ### pacer:async-throttler-state ```ts -pacer:async-throttler-state: AsyncThrottlerState; +pacer:async-throttler-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L18) +Defined in: [event-client.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L20) *** ### pacer:batcher-state ```ts -pacer:batcher-state: BatcherState; +pacer:batcher-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L19) +Defined in: [event-client.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L21) *** ### pacer:debouncer-state ```ts -pacer:debouncer-state: DebouncerState; +pacer:debouncer-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L20) +Defined in: [event-client.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L22) *** ### pacer:queuer-state ```ts -pacer:queuer-state: QueuerState; +pacer:queuer-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L21) +Defined in: [event-client.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L23) *** ### pacer:rate-limiter-state ```ts -pacer:rate-limiter-state: RateLimiterState; +pacer:rate-limiter-state: WithUuid; ``` -Defined in: [packages/pacer/src/event-client.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L22) +Defined in: [event-client.ts:24](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L24) *** ### pacer:throttler-state ```ts -pacer:throttler-state: ThrottlerState; +pacer:throttler-state: WithUuid>; ``` -Defined in: [packages/pacer/src/event-client.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L23) +Defined in: [event-client.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L25) diff --git a/docs/reference/interfaces/queueroptions.md b/docs/reference/interfaces/queueroptions.md index 8e2ab82f..70d3cbee 100644 --- a/docs/reference/interfaces/queueroptions.md +++ b/docs/reference/interfaces/queueroptions.md @@ -7,7 +7,7 @@ title: QueuerOptions # Interface: QueuerOptions\ -Defined in: [packages/pacer/src/queuer.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L78) +Defined in: [queuer.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L78) Options for configuring a Queuer instance. @@ -25,7 +25,7 @@ These options control queue behavior, item expiration, callbacks, and more. optional addItemsTo: QueuePosition; ``` -Defined in: [packages/pacer/src/queuer.ts:83](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L83) +Defined in: [queuer.ts:83](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L83) Default position to add items to the queuer @@ -43,7 +43,7 @@ Default position to add items to the queuer optional expirationDuration: number; ``` -Defined in: [packages/pacer/src/queuer.ts:88](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L88) +Defined in: [queuer.ts:88](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L88) Maximum time in milliseconds that an item can stay in the queue If not provided, items will never expire @@ -56,7 +56,7 @@ If not provided, items will never expire optional getIsExpired: (item, addedAt) => boolean; ``` -Defined in: [packages/pacer/src/queuer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L93) +Defined in: [queuer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L93) Function to determine if an item has expired If provided, this overrides the expirationDuration behavior @@ -83,7 +83,7 @@ If provided, this overrides the expirationDuration behavior optional getItemsFrom: QueuePosition; ``` -Defined in: [packages/pacer/src/queuer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L98) +Defined in: [queuer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L98) Default position to get items from during processing @@ -101,7 +101,7 @@ Default position to get items from during processing optional getPriority: (item) => number; ``` -Defined in: [packages/pacer/src/queuer.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L103) +Defined in: [queuer.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L103) Function to determine priority of items in the queuer Higher priority items will be processed first @@ -124,7 +124,7 @@ Higher priority items will be processed first optional initialItems: TValue[]; ``` -Defined in: [packages/pacer/src/queuer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L107) +Defined in: [queuer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L107) Initial items to populate the queuer with @@ -136,7 +136,7 @@ Initial items to populate the queuer with optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L111) +Defined in: [queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L111) Initial state for the queuer @@ -148,7 +148,7 @@ Initial state for the queuer optional maxSize: number; ``` -Defined in: [packages/pacer/src/queuer.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L115) +Defined in: [queuer.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L115) Maximum number of items allowed in the queuer @@ -160,7 +160,7 @@ Maximum number of items allowed in the queuer optional onExecute: (item, queuer) => void; ``` -Defined in: [packages/pacer/src/queuer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L119) +Defined in: [queuer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L119) Callback fired whenever an item is removed from the queuer @@ -186,7 +186,7 @@ Callback fired whenever an item is removed from the queuer optional onExpire: (item, queuer) => void; ``` -Defined in: [packages/pacer/src/queuer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L123) +Defined in: [queuer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L123) Callback fired whenever an item expires in the queuer @@ -212,7 +212,7 @@ Callback fired whenever an item expires in the queuer optional onItemsChange: (queuer) => void; ``` -Defined in: [packages/pacer/src/queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L127) +Defined in: [queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L127) Callback fired whenever an item is added or removed from the queuer @@ -234,7 +234,7 @@ Callback fired whenever an item is added or removed from the queuer optional onReject: (item, queuer) => void; ``` -Defined in: [packages/pacer/src/queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L131) +Defined in: [queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L131) Callback fired whenever an item is rejected from being added to the queuer @@ -260,7 +260,7 @@ Callback fired whenever an item is rejected from being added to the queuer optional started: boolean; ``` -Defined in: [packages/pacer/src/queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L135) +Defined in: [queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L135) Whether the queuer should start processing tasks immediately @@ -272,7 +272,7 @@ Whether the queuer should start processing tasks immediately optional wait: number | (queuer) => number; ``` -Defined in: [packages/pacer/src/queuer.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L141) +Defined in: [queuer.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L141) Time in milliseconds to wait between processing items. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/queuerstate.md b/docs/reference/interfaces/queuerstate.md index accb2e89..f98be509 100644 --- a/docs/reference/interfaces/queuerstate.md +++ b/docs/reference/interfaces/queuerstate.md @@ -7,7 +7,7 @@ title: QueuerState # Interface: QueuerState\ -Defined in: [packages/pacer/src/queuer.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L5) +Defined in: [queuer.ts:5](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L5) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/queuer.ts:5](https://github.com/TanStack/pacer/b executionCount: number; ``` -Defined in: [packages/pacer/src/queuer.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L9) +Defined in: [queuer.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L9) Number of items that have been processed by the queuer @@ -33,7 +33,7 @@ Number of items that have been processed by the queuer expirationCount: number; ``` -Defined in: [packages/pacer/src/queuer.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L13) +Defined in: [queuer.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L13) Number of items that have been removed from the queue due to expiration @@ -45,7 +45,7 @@ Number of items that have been removed from the queue due to expiration isEmpty: boolean; ``` -Defined in: [packages/pacer/src/queuer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L17) +Defined in: [queuer.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L17) Whether the queuer has no items to process (items array is empty) @@ -57,7 +57,7 @@ Whether the queuer has no items to process (items array is empty) isFull: boolean; ``` -Defined in: [packages/pacer/src/queuer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L21) +Defined in: [queuer.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L21) Whether the queuer has reached its maximum capacity @@ -69,7 +69,7 @@ Whether the queuer has reached its maximum capacity isIdle: boolean; ``` -Defined in: [packages/pacer/src/queuer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L25) +Defined in: [queuer.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L25) Whether the queuer is not currently processing any items @@ -81,7 +81,7 @@ Whether the queuer is not currently processing any items isRunning: boolean; ``` -Defined in: [packages/pacer/src/queuer.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L29) +Defined in: [queuer.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L29) Whether the queuer is active and will process items automatically @@ -93,7 +93,7 @@ Whether the queuer is active and will process items automatically items: TValue[]; ``` -Defined in: [packages/pacer/src/queuer.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L33) +Defined in: [queuer.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L33) Array of items currently waiting to be processed @@ -105,7 +105,7 @@ Array of items currently waiting to be processed itemTimestamps: number[]; ``` -Defined in: [packages/pacer/src/queuer.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L37) +Defined in: [queuer.ts:37](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L37) Timestamps when items were added to the queue for expiration tracking @@ -117,7 +117,7 @@ Timestamps when items were added to the queue for expiration tracking pendingTick: boolean; ``` -Defined in: [packages/pacer/src/queuer.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L41) +Defined in: [queuer.ts:41](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L41) Whether the queuer has a pending timeout for processing the next item @@ -129,7 +129,7 @@ Whether the queuer has a pending timeout for processing the next item rejectionCount: number; ``` -Defined in: [packages/pacer/src/queuer.ts:45](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L45) +Defined in: [queuer.ts:45](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L45) Number of items that have been rejected from being added to the queue @@ -141,7 +141,7 @@ Number of items that have been rejected from being added to the queue size: number; ``` -Defined in: [packages/pacer/src/queuer.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L49) +Defined in: [queuer.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L49) Number of items currently in the queue @@ -153,6 +153,6 @@ Number of items currently in the queue status: "idle" | "running" | "stopped"; ``` -Defined in: [packages/pacer/src/queuer.ts:53](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L53) +Defined in: [queuer.ts:53](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L53) Current processing status - 'idle' when not processing, 'running' when active, 'stopped' when paused diff --git a/docs/reference/interfaces/ratelimiteroptions.md b/docs/reference/interfaces/ratelimiteroptions.md index c435536f..9800f487 100644 --- a/docs/reference/interfaces/ratelimiteroptions.md +++ b/docs/reference/interfaces/ratelimiteroptions.md @@ -7,7 +7,7 @@ title: RateLimiterOptions # Interface: RateLimiterOptions\ -Defined in: [packages/pacer/src/rate-limiter.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L42) +Defined in: [rate-limiter.ts:42](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L42) Options for configuring a rate-limited function @@ -23,7 +23,7 @@ Options for configuring a rate-limited function optional enabled: boolean | (rateLimiter) => boolean; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L47) +Defined in: [rate-limiter.ts:47](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L47) Whether the rate limiter is enabled. When disabled, maybeExecute will not trigger any executions. Defaults to true. @@ -36,7 +36,7 @@ Defaults to true. optional initialState: Partial; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L51) +Defined in: [rate-limiter.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L51) Initial state for the rate limiter @@ -48,7 +48,7 @@ Initial state for the rate limiter limit: number | (rateLimiter) => number; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:56](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L56) +Defined in: [rate-limiter.ts:56](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L56) Maximum number of executions allowed within the time window. Can be a number or a callback function that receives the rate limiter instance and returns a number. @@ -61,7 +61,7 @@ Can be a number or a callback function that receives the rate limiter instance a optional onExecute: (args, rateLimiter) => void; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L60) +Defined in: [rate-limiter.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L60) Callback function that is called after the function is executed @@ -87,7 +87,7 @@ Callback function that is called after the function is executed optional onReject: (rateLimiter) => void; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L64) +Defined in: [rate-limiter.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L64) Optional callback function that is called when an execution is rejected due to rate limiting @@ -109,7 +109,7 @@ Optional callback function that is called when an execution is rejected due to r window: number | (rateLimiter) => number; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L69) +Defined in: [rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L69) Time window in milliseconds within which the limit applies. Can be a number or a callback function that receives the rate limiter instance and returns a number. @@ -122,7 +122,7 @@ Can be a number or a callback function that receives the rate limiter instance a optional windowType: "fixed" | "sliding"; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:76](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L76) +Defined in: [rate-limiter.ts:76](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L76) Type of window to use for rate limiting - 'fixed': Uses a fixed window that resets after the window period diff --git a/docs/reference/interfaces/ratelimiterstate.md b/docs/reference/interfaces/ratelimiterstate.md index 05b9bef8..fe9d9e69 100644 --- a/docs/reference/interfaces/ratelimiterstate.md +++ b/docs/reference/interfaces/ratelimiterstate.md @@ -7,7 +7,7 @@ title: RateLimiterState # Interface: RateLimiterState -Defined in: [packages/pacer/src/rate-limiter.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L6) +Defined in: [rate-limiter.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L6) ## Properties @@ -17,7 +17,7 @@ Defined in: [packages/pacer/src/rate-limiter.ts:6](https://github.com/TanStack/p executionCount: number; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L10) +Defined in: [rate-limiter.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L10) Number of function executions that have been completed @@ -29,7 +29,7 @@ Number of function executions that have been completed executionTimes: number[]; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L14) +Defined in: [rate-limiter.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L14) Array of timestamps when executions occurred for rate limiting calculations @@ -41,7 +41,7 @@ Array of timestamps when executions occurred for rate limiting calculations isExceeded: boolean; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L18) +Defined in: [rate-limiter.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L18) Whether the rate limiter has exceeded the limit @@ -53,7 +53,7 @@ Whether the rate limiter has exceeded the limit rejectionCount: number; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L22) +Defined in: [rate-limiter.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L22) Number of function executions that have been rejected due to rate limiting @@ -65,6 +65,6 @@ Number of function executions that have been rejected due to rate limiting status: "disabled" | "idle" | "exceeded"; ``` -Defined in: [packages/pacer/src/rate-limiter.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L26) +Defined in: [rate-limiter.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L26) Current execution status - 'disabled' when not active, 'executing' when executing, 'idle' when not executing, 'exceeded' when rate limit is exceeded diff --git a/docs/reference/interfaces/throttleroptions.md b/docs/reference/interfaces/throttleroptions.md index 43e3c376..c4d9c518 100644 --- a/docs/reference/interfaces/throttleroptions.md +++ b/docs/reference/interfaces/throttleroptions.md @@ -7,7 +7,7 @@ title: ThrottlerOptions # Interface: ThrottlerOptions\ -Defined in: [packages/pacer/src/throttler.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L49) +Defined in: [throttler.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L49) Options for configuring a throttled function @@ -23,7 +23,7 @@ Options for configuring a throttled function optional enabled: boolean | (throttler) => boolean; ``` -Defined in: [packages/pacer/src/throttler.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L55) +Defined in: [throttler.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L55) Whether the throttler is enabled. When disabled, maybeExecute will not trigger any executions. Can be a boolean or a function that returns a boolean. @@ -37,7 +37,7 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [packages/pacer/src/throttler.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L59) +Defined in: [throttler.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L59) Initial state for the throttler @@ -49,7 +49,7 @@ Initial state for the throttler optional leading: boolean; ``` -Defined in: [packages/pacer/src/throttler.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L64) +Defined in: [throttler.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L64) Whether to execute on the leading edge of the timeout. Defaults to true. @@ -62,7 +62,7 @@ Defaults to true. optional onExecute: (args, throttler) => void; ``` -Defined in: [packages/pacer/src/throttler.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L68) +Defined in: [throttler.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L68) Callback function that is called after the function is executed @@ -88,7 +88,7 @@ Callback function that is called after the function is executed optional trailing: boolean; ``` -Defined in: [packages/pacer/src/throttler.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L73) +Defined in: [throttler.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L73) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -101,7 +101,7 @@ Defaults to true. wait: number | (throttler) => number; ``` -Defined in: [packages/pacer/src/throttler.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L79) +Defined in: [throttler.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L79) Time window in milliseconds during which the function can only be executed once. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/throttlerstate.md b/docs/reference/interfaces/throttlerstate.md index e10d6d0a..5dda13a5 100644 --- a/docs/reference/interfaces/throttlerstate.md +++ b/docs/reference/interfaces/throttlerstate.md @@ -7,7 +7,7 @@ title: ThrottlerState # Interface: ThrottlerState\ -Defined in: [packages/pacer/src/throttler.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L6) +Defined in: [throttler.ts:6](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L6) ## Type Parameters @@ -21,7 +21,7 @@ Defined in: [packages/pacer/src/throttler.ts:6](https://github.com/TanStack/pace executionCount: number; ``` -Defined in: [packages/pacer/src/throttler.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L10) +Defined in: [throttler.ts:10](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L10) Number of function executions that have been completed @@ -33,7 +33,7 @@ Number of function executions that have been completed isPending: boolean; ``` -Defined in: [packages/pacer/src/throttler.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L14) +Defined in: [throttler.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L14) Whether the throttler is waiting for the timeout to trigger execution @@ -45,7 +45,7 @@ Whether the throttler is waiting for the timeout to trigger execution lastArgs: undefined | Parameters; ``` -Defined in: [packages/pacer/src/throttler.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L18) +Defined in: [throttler.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L18) The arguments from the most recent call to maybeExecute @@ -57,7 +57,7 @@ The arguments from the most recent call to maybeExecute lastExecutionTime: number; ``` -Defined in: [packages/pacer/src/throttler.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L22) +Defined in: [throttler.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L22) Timestamp of the last function execution in milliseconds @@ -69,7 +69,7 @@ Timestamp of the last function execution in milliseconds nextExecutionTime: undefined | number; ``` -Defined in: [packages/pacer/src/throttler.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L26) +Defined in: [throttler.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L26) Timestamp when the next execution can occur in milliseconds @@ -81,6 +81,6 @@ Timestamp when the next execution can occur in milliseconds status: "disabled" | "idle" | "pending"; ``` -Defined in: [packages/pacer/src/throttler.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L30) +Defined in: [throttler.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L30) Current execution status - 'idle' when not active, 'pending' when waiting for timeout diff --git a/docs/reference/type-aliases/anyasyncfunction.md b/docs/reference/type-aliases/anyasyncfunction.md index 8d277867..19b6a17d 100644 --- a/docs/reference/type-aliases/anyasyncfunction.md +++ b/docs/reference/type-aliases/anyasyncfunction.md @@ -11,7 +11,7 @@ title: AnyAsyncFunction type AnyAsyncFunction = (...args) => Promise; ``` -Defined in: [packages/pacer/src/types.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L9) +Defined in: [types.ts:9](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L9) Represents an asynchronous function that can be called with any arguments and returns a promise. diff --git a/docs/reference/type-aliases/anyfunction.md b/docs/reference/type-aliases/anyfunction.md index a05f98cc..039ac0e6 100644 --- a/docs/reference/type-aliases/anyfunction.md +++ b/docs/reference/type-aliases/anyfunction.md @@ -11,7 +11,7 @@ title: AnyFunction type AnyFunction = (...args) => any; ``` -Defined in: [packages/pacer/src/types.ts:4](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L4) +Defined in: [types.ts:4](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L4) Represents a function that can be called with any arguments and returns any value. diff --git a/docs/reference/type-aliases/optionalkeys.md b/docs/reference/type-aliases/optionalkeys.md index f35b429c..e09cbfd2 100644 --- a/docs/reference/type-aliases/optionalkeys.md +++ b/docs/reference/type-aliases/optionalkeys.md @@ -11,7 +11,7 @@ title: OptionalKeys type OptionalKeys = Omit & Partial>; ``` -Defined in: [packages/pacer/src/types.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L11) +Defined in: [types.ts:11](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/types.ts#L11) ## Type Parameters diff --git a/docs/reference/type-aliases/queueposition.md b/docs/reference/type-aliases/queueposition.md index 0e1000a2..4ab6460c 100644 --- a/docs/reference/type-aliases/queueposition.md +++ b/docs/reference/type-aliases/queueposition.md @@ -11,7 +11,7 @@ title: QueuePosition type QueuePosition = "front" | "back"; ``` -Defined in: [packages/pacer/src/queuer.ts:170](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L170) +Defined in: [queuer.ts:170](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L170) Position type for addItem and getNextItem operations. diff --git a/docs/reference/variables/pacereventclient.md b/docs/reference/variables/pacereventclient.md index a6659a46..4f3957d1 100644 --- a/docs/reference/variables/pacereventclient.md +++ b/docs/reference/variables/pacereventclient.md @@ -11,4 +11,4 @@ title: pacerEventClient const pacerEventClient: PacerEventClient; ``` -Defined in: [packages/pacer/src/event-client.ts:35](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L35) +Defined in: [event-client.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L51) diff --git a/examples/react/util-comparison/package.json b/examples/react/util-comparison/package.json index 93dfab0d..480673df 100644 --- a/examples/react/util-comparison/package.json +++ b/examples/react/util-comparison/package.json @@ -33,4 +33,4 @@ "last 1 safari version" ] } -} \ No newline at end of file +} diff --git a/examples/react/util-comparison/src/index.tsx b/examples/react/util-comparison/src/index.tsx index 8a1cb032..ba95270e 100644 --- a/examples/react/util-comparison/src/index.tsx +++ b/examples/react/util-comparison/src/index.tsx @@ -346,11 +346,11 @@ function ComparisonApp() { {instantExecutionCount === 0 ? '0' : Math.round( - ((instantExecutionCount - - utility.state.executionCount) / - instantExecutionCount) * - 100, - )} + ((instantExecutionCount - + utility.state.executionCount) / + instantExecutionCount) * + 100, + )} %
{utility.name === 'Rate Limiter' && ( diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 8d2d4abc..5cecdbe8 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -68,4 +68,4 @@ "devDependencies": { "vite-plugin-solid": "^2.11.8" } -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/context/context-provider.tsx index 7d23dc60..82b93779 100644 --- a/packages/pacer-devtools/src/context/context-provider.tsx +++ b/packages/pacer-devtools/src/context/context-provider.tsx @@ -4,8 +4,11 @@ import { pacerEventClient } from '@tanstack/pacer' import { PacerContext, initialStore } from './context' import type { PacerContextType } from './context' -const updateOrAddToArray = (oldArray: Array, newItem: T) => { - const index = oldArray.findIndex(item => item.uuid === newItem.uuid) +const updateOrAddToArray = ( + oldArray: Array, + newItem: T, +) => { + const index = oldArray.findIndex((item) => item.uuid === newItem.uuid) if (index !== -1) { // Update existing item return oldArray.map((item, i) => (i === index ? newItem : item)) @@ -19,68 +22,69 @@ export function PacerContextProvider(props: { children: any }) { createEffect(() => { const cleanup = pacerEventClient.onAllPluginEvents((e) => { - switch (e.type) { - case 'pacer:async-batcher-state': - { - const newItems = updateOrAddToArray(store.asyncBatcherState, e.payload) - setStore({ asyncBatcherState: newItems }) - break - } - case 'pacer:async-debouncer-state': - { - const newItems = updateOrAddToArray(store.asyncDebouncerState, e.payload) - setStore({ asyncDebouncerState: newItems }) - break - } - case 'pacer:async-queuer-state': - { - const newItems = updateOrAddToArray(store.asyncQueuerState, e.payload) - setStore({ asyncQueuerState: newItems }) - break - } - case 'pacer:async-rate-limiter-state': - { - const newItems = updateOrAddToArray(store.asyncRateLimiterState, e.payload) - setStore({ asyncRateLimiterState: newItems }) - break - } - case 'pacer:async-throttler-state': - { - const newItems = updateOrAddToArray(store.asyncThrottlerState, e.payload) - setStore({ asyncThrottlerState: newItems }) - break - } - case 'pacer:batcher-state': - { - const newItems = updateOrAddToArray(store.batcherState, e.payload) - setStore({ batcherState: newItems }) - break - } - case 'pacer:debouncer-state': - { - const newItems = updateOrAddToArray(store.debouncerState, e.payload) - setStore({ debouncerState: newItems }) - break - } - case 'pacer:queuer-state': - { - const newItems = updateOrAddToArray(store.queuerState, e.payload) - setStore({ queuerState: newItems }) - break - } - case 'pacer:rate-limiter-state': - { - const newItems = updateOrAddToArray(store.rateLimiterState, e.payload) - setStore({ rateLimiterState: newItems }) - break - } - case 'pacer:throttler-state': - { - const newItems = updateOrAddToArray(store.throttlerState, e.payload) - setStore({ throttlerState: newItems }) - break - } + case 'pacer:async-batcher-state': { + const newItems = updateOrAddToArray( + store.asyncBatcherState, + e.payload, + ) + setStore({ asyncBatcherState: newItems }) + break + } + case 'pacer:async-debouncer-state': { + const newItems = updateOrAddToArray( + store.asyncDebouncerState, + e.payload, + ) + setStore({ asyncDebouncerState: newItems }) + break + } + case 'pacer:async-queuer-state': { + const newItems = updateOrAddToArray(store.asyncQueuerState, e.payload) + setStore({ asyncQueuerState: newItems }) + break + } + case 'pacer:async-rate-limiter-state': { + const newItems = updateOrAddToArray( + store.asyncRateLimiterState, + e.payload, + ) + setStore({ asyncRateLimiterState: newItems }) + break + } + case 'pacer:async-throttler-state': { + const newItems = updateOrAddToArray( + store.asyncThrottlerState, + e.payload, + ) + setStore({ asyncThrottlerState: newItems }) + break + } + case 'pacer:batcher-state': { + const newItems = updateOrAddToArray(store.batcherState, e.payload) + setStore({ batcherState: newItems }) + break + } + case 'pacer:debouncer-state': { + const newItems = updateOrAddToArray(store.debouncerState, e.payload) + setStore({ debouncerState: newItems }) + break + } + case 'pacer:queuer-state': { + const newItems = updateOrAddToArray(store.queuerState, e.payload) + setStore({ queuerState: newItems }) + break + } + case 'pacer:rate-limiter-state': { + const newItems = updateOrAddToArray(store.rateLimiterState, e.payload) + setStore({ rateLimiterState: newItems }) + break + } + case 'pacer:throttler-state': { + const newItems = updateOrAddToArray(store.throttlerState, e.payload) + setStore({ throttlerState: newItems }) + break + } } }) onCleanup(cleanup) diff --git a/packages/pacer-devtools/src/context/context.ts b/packages/pacer-devtools/src/context/context.ts index c5c5e20f..ae2aa6bc 100644 --- a/packages/pacer-devtools/src/context/context.ts +++ b/packages/pacer-devtools/src/context/context.ts @@ -42,4 +42,4 @@ export const initialStore = { export const PacerContext = createContext< [PacerContextType, (newState: Partial) => void] ->([initialStore, () => { }]) +>([initialStore, () => {}]) diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx index fe61395c..5565c693 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/devtools.tsx @@ -1,10 +1,9 @@ - -import { For, } from 'solid-js'; -import clsx from 'clsx'; -import { usePacerState } from './context/use-context-hooks'; -import { PacerContextProvider } from './context/context-provider'; -import { useStyles } from './styles/use-styles'; -import { JsonTree } from './tree'; +import { For } from 'solid-js' +import clsx from 'clsx' +import { usePacerState } from './context/use-context-hooks' +import { PacerContextProvider } from './context/context-provider' +import { useStyles } from './styles/use-styles' +import { JsonTree } from './tree' type StateKey = | 'asyncBatcherState' @@ -16,7 +15,7 @@ type StateKey = | 'debouncerState' | 'queuerState' | 'rateLimiterState' - | 'throttlerState'; + | 'throttlerState' const CONTEXT_SECTIONS: Array<{ key: StateKey; label: string }> = [ { key: 'asyncBatcherState', label: 'Async Batcher State' }, @@ -29,12 +28,11 @@ const CONTEXT_SECTIONS: Array<{ key: StateKey; label: string }> = [ { key: 'queuerState', label: 'Queuer State' }, { key: 'rateLimiterState', label: 'Rate Limiter State' }, { key: 'throttlerState', label: 'Throttler State' }, -]; - +] function Section({ key, label }: { key: StateKey; label: string }) { - const state = usePacerState(); - const styles = useStyles(); + const state = usePacerState() + const styles = useStyles() return ( <> @@ -42,45 +40,42 @@ function Section({ key, label }: { key: StateKey; label: string }) {
{label}
- {(inst) => - - } + + {(inst) => } +
)} - ); + ) } function Shell() { - const styles = useStyles(); + const styles = useStyles() return (
TanStack Pacer
- {({ key, label }) => -
- } + + {({ key, label }) =>
} +
- ); + ) } -function AnimatedInstanceCard(props: { value: any; }) { - - const styles = useStyles(); - +function AnimatedInstanceCard(props: { value: any }) { + const styles = useStyles() return ( -
+
- ); + ) } - export default function Devtools() { return ( diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index ad983887..80bfb130 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -2,11 +2,10 @@ import * as goober from 'goober' import { createSignal } from 'solid-js' import { tokens } from './tokens' - const stylesFactory = () => { - const { colors, font, size, alpha, border } = tokens; - const { fontFamily, size: fontSize } = font; - const css = goober.css; + const { colors, font, size, alpha, border } = tokens + const { fontFamily, size: fontSize } = font + const css = goober.css return { devtoolsPanel: css` @@ -85,12 +84,17 @@ const stylesFactory = () => { color: ${colors.gray[100]}; font-family: ${fontFamily.mono}; overflow-x: auto; - transition: box-shadow 0.3s, background 0.3s; + transition: + box-shadow 0.3s, + background 0.3s; `, - flash: (isFlashing: boolean) => isFlashing ? css` - box-shadow: 0 0 0 2px ${colors.blue[400]}; - background: ${colors.blue[600]}; - ` : css``, + flash: (isFlashing: boolean) => + isFlashing + ? css` + box-shadow: 0 0 0 2px ${colors.blue[400]}; + background: ${colors.blue[600]}; + ` + : css``, valueString: css` color: ${colors.green[400]}; `, @@ -113,8 +117,8 @@ const stylesFactory = () => { valueContainer: css` display: block; margin-left: 1rem; - ` - }; + `, + } } export function useStyles() { diff --git a/packages/pacer-devtools/src/tree.tsx b/packages/pacer-devtools/src/tree.tsx index 5576258d..cedde29b 100644 --- a/packages/pacer-devtools/src/tree.tsx +++ b/packages/pacer-devtools/src/tree.tsx @@ -1,71 +1,117 @@ -import { For } from "solid-js"; -import { useStyles } from "./styles/use-styles"; +import { For } from 'solid-js' +import { useStyles } from './styles/use-styles' export function JsonTree(props: { value: any; keyName?: string }) { - const { value, keyName } = props; - const styles = useStyles(); + const { value, keyName } = props + const styles = useStyles() if (typeof value === 'string') { - return - {keyName && "{keyName}": } - "{value}" - , - ; + return ( + + + {keyName && ( + "{keyName}": + )} + "{value}" + + , + + ) } if (typeof value === 'number') { - return - {keyName && "{keyName}": } - {value} - , - ; + return ( + + + {keyName && ( + "{keyName}": + )} + {value} + + , + + ) } if (typeof value === 'boolean') { - return - - {keyName && "{keyName}": } - {String(value)} + return ( + + + {keyName && ( + "{keyName}": + )} + {String(value)} + + , - , - ; + ) } if (value === null) { - return - {keyName && "{keyName}": } - null - , - ; + return ( + + + {keyName && ( + "{keyName}": + )} + null + + , + + ) } if (value === undefined) { - return - {keyName && "{keyName}": } - undefined - , - ; + return ( + + + {keyName && ( + "{keyName}": + )} + undefined + + , + + ) } if (Array.isArray(value)) { - return - {keyName && "{keyName}": } - [ - {(item) => <> - - } - - ] - , - ; + return ( + + + {keyName && ( + "{keyName}": + )} + [ + + {(item) => ( + <> + + + )} + + ] + + , + + ) } if (typeof value === 'object') { - const keys = Object.keys(value); - return - {keyName && "{keyName}": } - {'{'} - {(k,) => <> - - } - - {'}'} - - ; + const keys = Object.keys(value) + return ( + + + {' '} + {keyName && ( + "{keyName}": + )} + {'{'} + + {(k) => ( + <> + + + )} + + {'}'} + + + ) } - return ; -} \ No newline at end of file + return +} diff --git a/packages/pacer-react-devtools/src/devtools.tsx b/packages/pacer-react-devtools/src/devtools.tsx index 5bdf7222..6654e5df 100644 --- a/packages/pacer-react-devtools/src/devtools.tsx +++ b/packages/pacer-react-devtools/src/devtools.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useRef, useState } from 'react' import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' -interface PacerDevtoolsReactInit { } +interface PacerDevtoolsReactInit {} export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { const devToolRef = useRef(null) @@ -15,5 +15,5 @@ export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { return () => devtools.unmount() }, [devtools]) - return
+ return
} diff --git a/packages/pacer-solid-devtools/src/devtools.tsx b/packages/pacer-solid-devtools/src/devtools.tsx index 657998c8..01266de1 100644 --- a/packages/pacer-solid-devtools/src/devtools.tsx +++ b/packages/pacer-solid-devtools/src/devtools.tsx @@ -1,7 +1,7 @@ import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' import { createSignal, onCleanup, onMount } from 'solid-js' -interface PacerDevtoolsSolidInit { } +interface PacerDevtoolsSolidInit {} export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { let devToolRef: HTMLDivElement | undefined @@ -16,5 +16,5 @@ export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { } }) - return
+ return
} diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index c890f3fa..5b11f882 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { emitChange, } from './event-client' +import { emitChange } from './event-client' import type { OptionalKeys } from './types' export interface AsyncBatcherState { diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 3b7cc9ce..5bc01bde 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { parseFunctionOrValue } from './utils' -import { emitChange, } from './event-client' +import { emitChange } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncDebouncerState { diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index dd59a642..a76a7319 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -375,19 +375,19 @@ export class AsyncQueuer { this.#setState({ activeItems, }) - ; (async () => { - const result = await this.execute() - this.#setState({ lastResult: result }) - - const wait = this.#getWait() - if (wait > 0) { - const timeoutId = setTimeout(() => this.#tick(), wait) - this.#timeoutIds.add(timeoutId) - return - } - - this.#tick() - })() + ;(async () => { + const result = await this.execute() + this.#setState({ lastResult: result }) + + const wait = this.#getWait() + if (wait > 0) { + const timeoutId = setTimeout(() => this.#tick(), wait) + this.#timeoutIds.add(timeoutId) + return + } + + this.#tick() + })() } this.#setState({ pendingTick: false }) diff --git a/packages/pacer/src/event-client.ts b/packages/pacer/src/event-client.ts index c3eaac87..b442dc55 100644 --- a/packages/pacer/src/event-client.ts +++ b/packages/pacer/src/event-client.ts @@ -34,9 +34,16 @@ class PacerEventClient extends EventClient { } } -export const emitChange = extends `${string}:${infer S}` ? S : never>( +export const emitChange = < + TSuffix extends Extract< + keyof PacerEventMap, + `${string}:${string}` + > extends `${string}:${infer S}` + ? S + : never, +>( event: TSuffix, - payload: PacerEventMap[`pacer:${TSuffix}`] & { uuid: string } + payload: PacerEventMap[`pacer:${TSuffix}`] & { uuid: string }, ) => { pacerEventClient.emit(event, payload) } diff --git a/packages/pacer/src/index.ts b/packages/pacer/src/index.ts index 97f55d9b..36721840 100644 --- a/packages/pacer/src/index.ts +++ b/packages/pacer/src/index.ts @@ -11,4 +11,4 @@ export * from './throttler' export * from './types' export * from './utils' export { pacerEventClient } from './event-client' -export type { PacerEventMap } from './event-client' \ No newline at end of file +export type { PacerEventMap } from './event-client' From b220c67e1ee0aaa9013e9ea1b737ff7d8e1d24e4 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Tue, 12 Aug 2025 13:04:02 +0200 Subject: [PATCH 15/44] chore: remove built-in tree in favor of devtools/ui --- package.json | 4 +- packages/pacer-devtools/package.json | 1 + packages/pacer-devtools/src/devtools.tsx | 13 +- .../pacer-devtools/src/styles/use-styles.ts | 32 +---- packages/pacer-devtools/src/tree.tsx | 117 ------------------ pnpm-lock.yaml | 16 +++ 6 files changed, 27 insertions(+), 156 deletions(-) delete mode 100644 packages/pacer-devtools/src/tree.tsx diff --git a/package.json b/package.json index b8ea335a..4e2b3c09 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "packageManager": "pnpm@10.2.1", "type": "module", "scripts": { - "build": "nx affected --targets=build --exclude=examples/** && size-limit", + "build": "nx affected --skip-nx-cache --targets=build --exclude=examples/** && size-limit", "build:all": "nx run-many --targets=build --exclude=examples/** && size-limit", "build:core": "nx run-many --targets=build --projects=packages/pacer,packages/persister && size-limit", "changeset": "changeset", @@ -84,4 +84,4 @@ "@tanstack/pacer-solid-devtools": "workspace:*", "@tanstack/pacer-react-devtools": "workspace:*" } -} +} \ No newline at end of file diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 5cecdbe8..fa178e43 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -61,6 +61,7 @@ "@tanstack/pacer": ">=0.14.0" }, "dependencies": { + "@tanstack/devtools-ui": "^0.3.0", "clsx": "^2.1.1", "goober": "^2.1.16", "solid-js": "^1.9.7" diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx index 5565c693..1e05c49b 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/devtools.tsx @@ -1,9 +1,10 @@ -import { For } from 'solid-js' -import clsx from 'clsx' -import { usePacerState } from './context/use-context-hooks' -import { PacerContextProvider } from './context/context-provider' -import { useStyles } from './styles/use-styles' -import { JsonTree } from './tree' + +import { For, } from 'solid-js'; +import clsx from 'clsx'; +import { JsonTree } from "@tanstack/devtools-ui" +import { usePacerState } from './context/use-context-hooks'; +import { PacerContextProvider } from './context/context-provider'; +import { useStyles } from './styles/use-styles'; type StateKey = | 'asyncBatcherState' diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index 80bfb130..b7566cf2 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -88,37 +88,7 @@ const stylesFactory = () => { box-shadow 0.3s, background 0.3s; `, - flash: (isFlashing: boolean) => - isFlashing - ? css` - box-shadow: 0 0 0 2px ${colors.blue[400]}; - background: ${colors.blue[600]}; - ` - : css``, - valueString: css` - color: ${colors.green[400]}; - `, - valueNumber: css` - color: ${colors.yellow[400]}; - `, - valueBoolean: css` - color: ${colors.pink[400]}; - `, - valueNull: css` - color: ${colors.gray[400]}; - font-style: italic; - `, - valueKey: css` - color: ${colors.blue[300]}; - `, - valueBraces: css` - color: ${colors.gray[500]}; - `, - valueContainer: css` - display: block; - margin-left: 1rem; - `, - } + }; } export function useStyles() { diff --git a/packages/pacer-devtools/src/tree.tsx b/packages/pacer-devtools/src/tree.tsx deleted file mode 100644 index cedde29b..00000000 --- a/packages/pacer-devtools/src/tree.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { For } from 'solid-js' -import { useStyles } from './styles/use-styles' - -export function JsonTree(props: { value: any; keyName?: string }) { - const { value, keyName } = props - const styles = useStyles() - - if (typeof value === 'string') { - return ( - - - {keyName && ( - "{keyName}": - )} - "{value}" - - , - - ) - } - if (typeof value === 'number') { - return ( - - - {keyName && ( - "{keyName}": - )} - {value} - - , - - ) - } - if (typeof value === 'boolean') { - return ( - - - {keyName && ( - "{keyName}": - )} - {String(value)} - - , - - ) - } - if (value === null) { - return ( - - - {keyName && ( - "{keyName}": - )} - null - - , - - ) - } - if (value === undefined) { - return ( - - - {keyName && ( - "{keyName}": - )} - undefined - - , - - ) - } - if (Array.isArray(value)) { - return ( - - - {keyName && ( - "{keyName}": - )} - [ - - {(item) => ( - <> - - - )} - - ] - - , - - ) - } - if (typeof value === 'object') { - const keys = Object.keys(value) - return ( - - - {' '} - {keyName && ( - "{keyName}": - )} - {'{'} - - {(k) => ( - <> - - - )} - - {'}'} - - - ) - } - return -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 054f4ec1..c43ed73e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1562,6 +1562,9 @@ importers: packages/pacer-devtools: dependencies: + '@tanstack/devtools-ui': + specifier: ^0.3.0 + version: 0.3.0(csstype@3.1.3)(solid-js@1.9.7) '@tanstack/pacer': specifier: '>=0.14.0' version: link:../pacer @@ -2670,6 +2673,12 @@ packages: peerDependencies: solid-js: '>=1.9.7' + '@tanstack/devtools-ui@0.3.0': + resolution: {integrity: sha512-lyP0eM6juIWn8zgI8xI32Lh86gCnjUyNePE9F7Bfgkv5taILmmJAHW5Mme4T2ufv7L8NLwOiBY/bZYnP4zev0w==} + engines: {node: '>=18'} + peerDependencies: + solid-js: '>=1.9.7' + '@tanstack/devtools@0.3.0': resolution: {integrity: sha512-uxj3MM2/ZlQDlhnBoUSlJC8oneJ+sPh6hK0kgiKZAEgrlUvZfUNgKGhrmMHZaAGl/WEglhZoxXwvvo9HAFT8yw==} engines: {node: '>=18'} @@ -6392,6 +6401,13 @@ snapshots: transitivePeerDependencies: - csstype + '@tanstack/devtools-ui@0.3.0(csstype@3.1.3)(solid-js@1.9.7)': + dependencies: + goober: 2.1.16(csstype@3.1.3) + solid-js: 1.9.7 + transitivePeerDependencies: + - csstype + '@tanstack/devtools@0.3.0(csstype@3.1.3)(solid-js@1.9.7)': dependencies: '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.7) From 99d052b8a266de166e51b97f9fa5197f710b4292 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 11:05:01 +0000 Subject: [PATCH 16/44] ci: apply automated fixes --- package.json | 2 +- packages/pacer-devtools/src/devtools.tsx | 13 ++++++------- packages/pacer-devtools/src/styles/use-styles.ts | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 4e2b3c09..9c8e98fc 100644 --- a/package.json +++ b/package.json @@ -84,4 +84,4 @@ "@tanstack/pacer-solid-devtools": "workspace:*", "@tanstack/pacer-react-devtools": "workspace:*" } -} \ No newline at end of file +} diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx index 1e05c49b..bf2091c4 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/devtools.tsx @@ -1,10 +1,9 @@ - -import { For, } from 'solid-js'; -import clsx from 'clsx'; -import { JsonTree } from "@tanstack/devtools-ui" -import { usePacerState } from './context/use-context-hooks'; -import { PacerContextProvider } from './context/context-provider'; -import { useStyles } from './styles/use-styles'; +import { For } from 'solid-js' +import clsx from 'clsx' +import { JsonTree } from '@tanstack/devtools-ui' +import { usePacerState } from './context/use-context-hooks' +import { PacerContextProvider } from './context/context-provider' +import { useStyles } from './styles/use-styles' type StateKey = | 'asyncBatcherState' diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index b7566cf2..6587a7b9 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -88,7 +88,7 @@ const stylesFactory = () => { box-shadow 0.3s, background 0.3s; `, - }; + } } export function useStyles() { From b1eb9e667c71c0a6545e2a6b9aa2192086c9b376 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Tue, 12 Aug 2025 13:19:22 -0500 Subject: [PATCH 17/44] refactor to key --- docs/reference/interfaces/pacereventmap.md | 20 ++++++++-------- .../src/context/context-provider.tsx | 4 ++-- .../pacer-devtools/src/context/context.ts | 22 ++++++++--------- packages/pacer/src/async-batcher.ts | 21 ++++++++++++---- packages/pacer/src/async-debouncer.ts | 16 +++++++++---- packages/pacer/src/async-queuer.ts | 15 ++++++++---- packages/pacer/src/async-rate-limiter.ts | 16 +++++++++---- packages/pacer/src/async-throttler.ts | 14 +++++++---- packages/pacer/src/batcher.ts | 16 +++++++++---- packages/pacer/src/debouncer.ts | 16 +++++++++---- packages/pacer/src/event-client.ts | 24 +++++++++---------- packages/pacer/src/queuer.ts | 15 ++++++++---- packages/pacer/src/rate-limiter.ts | 15 ++++++++---- packages/pacer/src/throttler.ts | 14 +++++++---- packages/pacer/src/utils.ts | 15 ++++++++++++ 15 files changed, 162 insertions(+), 81 deletions(-) diff --git a/docs/reference/interfaces/pacereventmap.md b/docs/reference/interfaces/pacereventmap.md index 9193e21c..5d5a7807 100644 --- a/docs/reference/interfaces/pacereventmap.md +++ b/docs/reference/interfaces/pacereventmap.md @@ -14,7 +14,7 @@ Defined in: [event-client.ts:15](https://github.com/TanStack/pacer/blob/main/pac ### pacer:async-batcher-state ```ts -pacer:async-batcher-state: WithUuid>; +pacer:async-batcher-state: WithKey>; ``` Defined in: [event-client.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L16) @@ -24,7 +24,7 @@ Defined in: [event-client.ts:16](https://github.com/TanStack/pacer/blob/main/pac ### pacer:async-debouncer-state ```ts -pacer:async-debouncer-state: WithUuid>; +pacer:async-debouncer-state: WithKey>; ``` Defined in: [event-client.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L17) @@ -34,7 +34,7 @@ Defined in: [event-client.ts:17](https://github.com/TanStack/pacer/blob/main/pac ### pacer:async-queuer-state ```ts -pacer:async-queuer-state: WithUuid>; +pacer:async-queuer-state: WithKey>; ``` Defined in: [event-client.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L18) @@ -44,7 +44,7 @@ Defined in: [event-client.ts:18](https://github.com/TanStack/pacer/blob/main/pac ### pacer:async-rate-limiter-state ```ts -pacer:async-rate-limiter-state: WithUuid>; +pacer:async-rate-limiter-state: WithKey>; ``` Defined in: [event-client.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L19) @@ -54,7 +54,7 @@ Defined in: [event-client.ts:19](https://github.com/TanStack/pacer/blob/main/pac ### pacer:async-throttler-state ```ts -pacer:async-throttler-state: WithUuid>; +pacer:async-throttler-state: WithKey>; ``` Defined in: [event-client.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L20) @@ -64,7 +64,7 @@ Defined in: [event-client.ts:20](https://github.com/TanStack/pacer/blob/main/pac ### pacer:batcher-state ```ts -pacer:batcher-state: WithUuid>; +pacer:batcher-state: WithKey>; ``` Defined in: [event-client.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L21) @@ -74,7 +74,7 @@ Defined in: [event-client.ts:21](https://github.com/TanStack/pacer/blob/main/pac ### pacer:debouncer-state ```ts -pacer:debouncer-state: WithUuid>; +pacer:debouncer-state: WithKey>; ``` Defined in: [event-client.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L22) @@ -84,7 +84,7 @@ Defined in: [event-client.ts:22](https://github.com/TanStack/pacer/blob/main/pac ### pacer:queuer-state ```ts -pacer:queuer-state: WithUuid>; +pacer:queuer-state: WithKey>; ``` Defined in: [event-client.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L23) @@ -94,7 +94,7 @@ Defined in: [event-client.ts:23](https://github.com/TanStack/pacer/blob/main/pac ### pacer:rate-limiter-state ```ts -pacer:rate-limiter-state: WithUuid; +pacer:rate-limiter-state: WithKey; ``` Defined in: [event-client.ts:24](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L24) @@ -104,7 +104,7 @@ Defined in: [event-client.ts:24](https://github.com/TanStack/pacer/blob/main/pac ### pacer:throttler-state ```ts -pacer:throttler-state: WithUuid>; +pacer:throttler-state: WithKey>; ``` Defined in: [event-client.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L25) diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/context/context-provider.tsx index 82b93779..08e07df8 100644 --- a/packages/pacer-devtools/src/context/context-provider.tsx +++ b/packages/pacer-devtools/src/context/context-provider.tsx @@ -4,11 +4,11 @@ import { pacerEventClient } from '@tanstack/pacer' import { PacerContext, initialStore } from './context' import type { PacerContextType } from './context' -const updateOrAddToArray = ( +const updateOrAddToArray = ( oldArray: Array, newItem: T, ) => { - const index = oldArray.findIndex((item) => item.uuid === newItem.uuid) + const index = oldArray.findIndex((item) => item.key === newItem.key) if (index !== -1) { // Update existing item return oldArray.map((item, i) => (i === index ? newItem : item)) diff --git a/packages/pacer-devtools/src/context/context.ts b/packages/pacer-devtools/src/context/context.ts index ae2aa6bc..4ed31433 100644 --- a/packages/pacer-devtools/src/context/context.ts +++ b/packages/pacer-devtools/src/context/context.ts @@ -12,19 +12,19 @@ import type { ThrottlerState, } from '@tanstack/pacer' -type WithUuid = T & { uuid: string } +type WithKey = T & { key: string } export interface PacerContextType { - asyncBatcherState: Array>> - asyncDebouncerState: Array>> - asyncQueuerState: Array>> - asyncRateLimiterState: Array>> - asyncThrottlerState: Array>> - batcherState: Array>> - debouncerState: Array>> - queuerState: Array>> - rateLimiterState: Array> - throttlerState: Array>> + asyncBatcherState: Array>> + asyncDebouncerState: Array>> + asyncQueuerState: Array>> + asyncRateLimiterState: Array>> + asyncThrottlerState: Array>> + batcherState: Array>> + debouncerState: Array>> + queuerState: Array>> + rateLimiterState: Array> + throttlerState: Array>> } export const initialStore = { diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index 5b11f882..b5d2647d 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { OptionalKeys } from './types' @@ -92,6 +92,11 @@ export interface AsyncBatcherOptions { * Initial state for the async batcher */ initialState?: Partial> + /** + * Optional key to identify this async batcher instance. + * If provided, the async batcher will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Maximum number of items in a batch * @default Infinity @@ -145,7 +150,12 @@ export interface AsyncBatcherOptions { type AsyncBatcherOptionsWithOptionalCallbacks = OptionalKeys< Required>, - 'initialState' | 'onError' | 'onItemsChange' | 'onSettled' | 'onSuccess' + | 'initialState' + | 'onError' + | 'onItemsChange' + | 'onSettled' + | 'onSuccess' + | 'key' > const defaultOptions: AsyncBatcherOptionsWithOptionalCallbacks = { @@ -221,14 +231,15 @@ export class AsyncBatcher { readonly store: Store>> = new Store( getDefaultAsyncBatcherState(), ) + key: string options: AsyncBatcherOptionsWithOptionalCallbacks #timeoutId: NodeJS.Timeout | null = null - #uuid: string + constructor( public fn: (items: Array) => Promise, initialOptions: AsyncBatcherOptions, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -267,7 +278,7 @@ export class AsyncBatcher { } as const emitChange('async-batcher-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 5bc01bde..6d6f92c8 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' @@ -72,6 +72,11 @@ export interface AsyncDebouncerOptions { * Initial state for the async debouncer */ initialState?: Partial> + /** + * Optional key to identify this async debouncer instance. + * If provided, the async debouncer will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Whether to execute on the leading edge of the timeout. * Defaults to false. @@ -120,7 +125,7 @@ export interface AsyncDebouncerOptions { type AsyncDebouncerOptionsWithOptionalCallbacks = OptionalKeys< AsyncDebouncerOptions, - 'initialState' | 'onError' | 'onSettled' | 'onSuccess' + 'initialState' | 'onError' | 'onSettled' | 'onSuccess' | 'key' > const defaultOptions: AsyncDebouncerOptionsWithOptionalCallbacks = { @@ -179,18 +184,19 @@ export class AsyncDebouncer { readonly store: Store>> = new Store< AsyncDebouncerState >(getDefaultAsyncDebouncerState()) + key: string options: AsyncDebouncerOptions #abortController: AbortController | null = null #timeoutId: NodeJS.Timeout | null = null #resolvePreviousPromise: | ((value?: ReturnType | undefined) => void) | null = null - #uuid: string + constructor( public fn: TFn, initialOptions: AsyncDebouncerOptions, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -232,7 +238,7 @@ export class AsyncDebouncer { } as const emitChange('async-debouncer-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index a76a7319..39cdb9d0 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { OptionalKeys } from './types' import type { QueuePosition } from './queuer' @@ -98,6 +98,11 @@ export interface AsyncQueuerOptions { * @default 'back' */ addItemsTo?: QueuePosition + /** + * Optional key to identify this async queuer instance. + * If provided, the async queuer will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Maximum number of concurrent tasks to process. * Can be a number or a function that returns a number. @@ -191,6 +196,7 @@ type AsyncQueuerOptionsWithOptionalCallbacks = OptionalKeys< | 'onItemsChange' | 'onExpire' | 'onError' + | 'key' > const defaultOptions: AsyncQueuerOptionsWithOptionalCallbacks = { @@ -261,14 +267,15 @@ export class AsyncQueuer { readonly store: Store>> = new Store< AsyncQueuerState >(getDefaultAsyncQueuerState()) + key: string options: AsyncQueuerOptions #timeoutIds: Set = new Set() - #uuid: string + constructor( public fn: (item: TValue) => Promise, initialOptions: AsyncQueuerOptions = {}, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -326,7 +333,7 @@ export class AsyncQueuer { } as const emitChange('async-queuer-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index c959d8ee..c01ffc0b 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { AnyAsyncFunction } from './types' @@ -72,6 +72,11 @@ export interface AsyncRateLimiterOptions { * Initial state for the rate limiter */ initialState?: Partial> + /** + * Optional key to identify this async rate limiter instance. + * If provided, the async rate limiter will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Maximum number of executions allowed within the time window. * Can be a number or a function that returns a number. @@ -128,7 +133,7 @@ export interface AsyncRateLimiterOptions { const defaultOptions: Omit< Required>, - 'initialState' | 'onError' | 'onReject' | 'onSettled' | 'onSuccess' + 'initialState' | 'onError' | 'onReject' | 'onSettled' | 'onSuccess' | 'key' > = { enabled: true, limit: 1, @@ -207,14 +212,15 @@ export class AsyncRateLimiter { readonly store: Store>> = new Store< AsyncRateLimiterState >(getDefaultAsyncRateLimiterState()) + key: string options: AsyncRateLimiterOptions #timeoutIds: Set = new Set() - #uuid: string + constructor( public fn: TFn, initialOptions: AsyncRateLimiterOptions, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -254,7 +260,7 @@ export class AsyncRateLimiter { } as const emitChange('async-rate-limiter-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index acb42072..a0d3c63b 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' @@ -77,6 +77,11 @@ export interface AsyncThrottlerOptions { * Initial state for the async throttler */ initialState?: Partial> + /** + * Optional key to identify this async throttler instance. + * If provided, the async throttler will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Whether to execute the function immediately when called * Defaults to true @@ -190,18 +195,19 @@ export class AsyncThrottler { readonly store: Store>> = new Store< AsyncThrottlerState >(getDefaultAsyncThrottlerState()) + key: string options: AsyncThrottlerOptions #abortController: AbortController | null = null #timeoutId: NodeJS.Timeout | null = null #resolvePreviousPromise: | ((value?: ReturnType | undefined) => void) | null = null - #uuid: string + constructor( public fn: TFn, initialOptions: AsyncThrottlerOptions, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -243,7 +249,7 @@ export class AsyncThrottler { } as const emitChange('async-throttler-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index dcd4709a..c68732cf 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { OptionalKeys } from './types' @@ -59,6 +59,11 @@ export interface BatcherOptions { * Initial state for the batcher */ initialState?: Partial> + /** + * Optional key to identify this batcher instance. + * If provided, the batcher will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Maximum number of items in a batch * @default Infinity @@ -88,7 +93,7 @@ export interface BatcherOptions { type BatcherOptionsWithOptionalCallbacks = OptionalKeys< Required>, - 'initialState' | 'onExecute' | 'onItemsChange' + 'initialState' | 'onExecute' | 'onItemsChange' | 'key' > const defaultOptions: BatcherOptionsWithOptionalCallbacks = { @@ -140,14 +145,15 @@ export class Batcher { readonly store: Store>> = new Store( getDefaultBatcherState(), ) + key: string options: BatcherOptionsWithOptionalCallbacks #timeoutId: NodeJS.Timeout | null = null - #uuid: string + constructor( public fn: (items: Array) => void, initialOptions: BatcherOptions, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -180,7 +186,7 @@ export class Batcher { emitChange('batcher-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index 37de3db6..6221e307 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { AnyFunction } from './types' @@ -48,6 +48,11 @@ export interface DebouncerOptions { * Defaults to true. */ enabled?: boolean | ((debouncer: Debouncer) => boolean) + /** + * A key to identify the debouncer. + * If provided, the debouncer will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Initial state for the debouncer */ @@ -77,7 +82,7 @@ export interface DebouncerOptions { const defaultOptions: Omit< Required>, - 'initialState' | 'onExecute' + 'initialState' | 'onExecute' | 'key' > = { enabled: true, leading: false, @@ -120,14 +125,15 @@ export class Debouncer { readonly store: Store>> = new Store( getDefaultDebouncerState(), ) + key: string options: DebouncerOptions #timeoutId: NodeJS.Timeout | undefined - #uuid: string + constructor( public fn: TFn, initialOptions: DebouncerOptions, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -164,7 +170,7 @@ export class Debouncer { } as const emitChange('debouncer-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/event-client.ts b/packages/pacer/src/event-client.ts index b442dc55..71e156e7 100644 --- a/packages/pacer/src/event-client.ts +++ b/packages/pacer/src/event-client.ts @@ -10,19 +10,19 @@ import type { QueuerState } from './queuer' import type { RateLimiterState } from './rate-limiter' import type { ThrottlerState } from './throttler' -type WithUuid = T & { uuid: string } +type WithKey = T & { key: string } export interface PacerEventMap { - 'pacer:async-batcher-state': WithUuid> - 'pacer:async-debouncer-state': WithUuid> - 'pacer:async-queuer-state': WithUuid> - 'pacer:async-rate-limiter-state': WithUuid> - 'pacer:async-throttler-state': WithUuid> - 'pacer:batcher-state': WithUuid> - 'pacer:debouncer-state': WithUuid> - 'pacer:queuer-state': WithUuid> - 'pacer:rate-limiter-state': WithUuid - 'pacer:throttler-state': WithUuid> + 'pacer:async-batcher-state': WithKey> + 'pacer:async-debouncer-state': WithKey> + 'pacer:async-queuer-state': WithKey> + 'pacer:async-rate-limiter-state': WithKey> + 'pacer:async-throttler-state': WithKey> + 'pacer:batcher-state': WithKey> + 'pacer:debouncer-state': WithKey> + 'pacer:queuer-state': WithKey> + 'pacer:rate-limiter-state': WithKey + 'pacer:throttler-state': WithKey> } class PacerEventClient extends EventClient { @@ -43,7 +43,7 @@ export const emitChange = < : never, >( event: TSuffix, - payload: PacerEventMap[`pacer:${TSuffix}`] & { uuid: string }, + payload: PacerEventMap[`pacer:${TSuffix}`] & { key: string }, ) => { pacerEventClient.emit(event, payload) } diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index 0ee341cf..0d095463 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' export interface QueuerState { @@ -81,6 +81,11 @@ export interface QueuerOptions { * @default 'back' */ addItemsTo?: QueuePosition + /** + * Optional key to identify this queuer instance. + * If provided, the queuer will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Maximum time in milliseconds that an item can stay in the queue * If not provided, items will never expire @@ -149,6 +154,7 @@ const defaultOptions: Omit< | 'onItemsChange' | 'onReject' | 'onExpire' + | 'key' > = { addItemsTo: 'back', getItemsFrom: 'front', @@ -245,14 +251,15 @@ export class Queuer { readonly store: Store>> = new Store( getDefaultQueuerState(), ) + key: string options: QueuerOptions #timeoutId: NodeJS.Timeout | null = null - #uuid: string + constructor( public fn: (item: TValue) => void, initialOptions: QueuerOptions = {}, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -309,7 +316,7 @@ export class Queuer { } as const emitChange('queuer-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index abf472a1..a894b0e2 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { AnyFunction } from './types' @@ -49,6 +49,11 @@ export interface RateLimiterOptions { * Initial state for the rate limiter */ initialState?: Partial + /** + * Optional key to identify this rate limiter instance. + * If provided, the rate limiter will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Maximum number of executions allowed within the time window. * Can be a number or a callback function that receives the rate limiter instance and returns a number. @@ -78,7 +83,7 @@ export interface RateLimiterOptions { const defaultOptions: Omit< Required>, - 'initialState' | 'onExecute' | 'onReject' + 'initialState' | 'onExecute' | 'onReject' | 'key' > = { enabled: true, limit: 1, @@ -133,15 +138,15 @@ const defaultOptions: Omit< export class RateLimiter { readonly store: Store> = new Store(getDefaultRateLimiterState()) + key: string options: RateLimiterOptions #timeoutIds: Set = new Set() - #uuid: string constructor( public fn: TFn, initialOptions: RateLimiterOptions, ) { - this.#uuid = crypto.randomUUID() + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -178,7 +183,7 @@ export class RateLimiter { } as const emitChange('rate-limiter-state', { ...finalState, - uuid: this.#uuid, + key: this.key, }) return finalState }) diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index 009f6933..d0fcc956 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -1,5 +1,5 @@ import { Store } from '@tanstack/store' -import { parseFunctionOrValue } from './utils' +import { createKey, parseFunctionOrValue } from './utils' import { emitChange } from './event-client' import type { AnyFunction } from './types' @@ -57,6 +57,11 @@ export interface ThrottlerOptions { * Initial state for the throttler */ initialState?: Partial> + /** + * A key to identify the throttler. + * If provided, the throttler will be identified by this key in the devtools and PacerProvider if applicable. + */ + key?: string /** * Whether to execute on the leading edge of the timeout. * Defaults to true. @@ -81,7 +86,7 @@ export interface ThrottlerOptions { const defaultOptions: Omit< Required>, - 'initialState' | 'onExecute' + 'initialState' | 'onExecute' | 'key' > = { enabled: true, leading: true, @@ -128,14 +133,15 @@ export class Throttler { readonly store: Store>> = new Store( getDefaultThrottlerState(), ) + key: string | undefined options: ThrottlerOptions #timeoutId: NodeJS.Timeout | undefined - #uuid = crypto.randomUUID() constructor( public fn: TFn, initialOptions: ThrottlerOptions, ) { + this.key = createKey(initialOptions.key) this.options = { ...defaultOptions, ...initialOptions, @@ -172,7 +178,7 @@ export class Throttler { } as const emitChange('throttler-state', { ...finalState, - uuid: this.#uuid, + key: this.key ?? '', }) return finalState }) diff --git a/packages/pacer/src/utils.ts b/packages/pacer/src/utils.ts index 3a510d8e..ceb8b605 100644 --- a/packages/pacer/src/utils.ts +++ b/packages/pacer/src/utils.ts @@ -10,3 +10,18 @@ export function parseFunctionOrValue>( ): T { return isFunction(value) ? value(...args) : value } + +export function createKey(key?: string): string { + if (key) { + return key + } + + if ( + typeof crypto !== 'undefined' && + typeof crypto.randomUUID === 'function' + ) { + return crypto.randomUUID() + } + + return '' +} From c7699df03da96fb43d55dbab459ad69018a2b275 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 18:20:34 +0000 Subject: [PATCH 18/44] ci: apply automated fixes --- docs/reference/classes/asyncbatcher.md | 34 ++++++++----- docs/reference/classes/asyncdebouncer.md | 30 ++++++++---- docs/reference/classes/asyncqueuer.md | 48 +++++++++++-------- docs/reference/classes/asyncratelimiter.md | 30 ++++++++---- docs/reference/classes/asyncthrottler.md | 30 ++++++++---- docs/reference/classes/batcher.md | 32 ++++++++----- docs/reference/classes/debouncer.md | 30 ++++++++---- docs/reference/classes/queuer.md | 44 ++++++++++------- docs/reference/classes/ratelimiter.md | 28 +++++++---- docs/reference/classes/throttler.md | 28 +++++++---- docs/reference/functions/asyncbatch.md | 2 +- docs/reference/functions/asyncdebounce.md | 2 +- docs/reference/functions/asyncqueue.md | 2 +- docs/reference/functions/asyncratelimit.md | 2 +- docs/reference/functions/asyncthrottle.md | 2 +- docs/reference/functions/batch.md | 2 +- docs/reference/functions/createkey.md | 24 ++++++++++ docs/reference/functions/debounce.md | 2 +- docs/reference/functions/queue.md | 2 +- docs/reference/functions/ratelimit.md | 2 +- docs/reference/functions/throttle.md | 2 +- docs/reference/index.md | 1 + .../interfaces/asyncbatcheroptions.md | 29 +++++++---- .../interfaces/asyncdebounceroptions.md | 27 ++++++++--- .../interfaces/asyncqueueroptions.md | 47 +++++++++++------- .../interfaces/asyncratelimiteroptions.md | 29 +++++++---- .../interfaces/asyncthrottleroptions.md | 27 ++++++++--- docs/reference/interfaces/batcheroptions.md | 23 +++++++-- docs/reference/interfaces/debounceroptions.md | 23 +++++++-- docs/reference/interfaces/queueroptions.md | 39 ++++++++++----- .../interfaces/ratelimiteroptions.md | 23 +++++++-- docs/reference/interfaces/throttleroptions.md | 21 ++++++-- docs/reference/type-aliases/queueposition.md | 2 +- 33 files changed, 462 insertions(+), 207 deletions(-) create mode 100644 docs/reference/functions/createkey.md diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index 43e39bab..4b48729f 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -7,7 +7,7 @@ title: AsyncBatcher # Class: AsyncBatcher\ -Defined in: [async-batcher.ts:220](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L220) +Defined in: [async-batcher.ts:230](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L230) A class that collects items and processes them in batches asynchronously. @@ -82,7 +82,7 @@ batcher.addItem(2); new AsyncBatcher(fn, initialOptions): AsyncBatcher ``` -Defined in: [async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L227) +Defined in: [async-batcher.ts:238](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L238) #### Parameters @@ -106,7 +106,7 @@ Defined in: [async-batcher.ts:227](https://github.com/TanStack/pacer/blob/main/p fn: (items) => Promise; ``` -Defined in: [async-batcher.ts:228](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L228) +Defined in: [async-batcher.ts:239](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L239) #### Parameters @@ -120,13 +120,23 @@ Defined in: [async-batcher.ts:228](https://github.com/TanStack/pacer/blob/main/p *** +### key + +```ts +key: string; +``` + +Defined in: [async-batcher.ts:234](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L234) + +*** + ### options ```ts options: AsyncBatcherOptionsWithOptionalCallbacks; ``` -Defined in: [async-batcher.ts:224](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L224) +Defined in: [async-batcher.ts:235](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L235) *** @@ -136,7 +146,7 @@ Defined in: [async-batcher.ts:224](https://github.com/TanStack/pacer/blob/main/p readonly store: Store>>; ``` -Defined in: [async-batcher.ts:221](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L221) +Defined in: [async-batcher.ts:231](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L231) ## Methods @@ -146,7 +156,7 @@ Defined in: [async-batcher.ts:221](https://github.com/TanStack/pacer/blob/main/p addItem(item): void ``` -Defined in: [async-batcher.ts:284](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L284) +Defined in: [async-batcher.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L295) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -169,7 +179,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [async-batcher.ts:385](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L385) +Defined in: [async-batcher.ts:396](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L396) Removes all items from the async batcher @@ -185,7 +195,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [async-batcher.ts:359](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L359) +Defined in: [async-batcher.ts:370](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L370) Processes the current batch of items immediately @@ -201,7 +211,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [async-batcher.ts:367](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L367) +Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L378) Returns a copy of all items in the async batcher @@ -217,7 +227,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [async-batcher.ts:371](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L371) +Defined in: [async-batcher.ts:382](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L382) #### Returns @@ -231,7 +241,7 @@ Defined in: [async-batcher.ts:371](https://github.com/TanStack/pacer/blob/main/p reset(): void ``` -Defined in: [async-batcher.ts:392](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L392) +Defined in: [async-batcher.ts:403](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L403) Resets the async batcher state to its default values @@ -247,7 +257,7 @@ Resets the async batcher state to its default values setOptions(newOptions): void ``` -Defined in: [async-batcher.ts:243](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L243) +Defined in: [async-batcher.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L254) Updates the async batcher options diff --git a/docs/reference/classes/asyncdebouncer.md b/docs/reference/classes/asyncdebouncer.md index 6f8666b4..8f02da69 100644 --- a/docs/reference/classes/asyncdebouncer.md +++ b/docs/reference/classes/asyncdebouncer.md @@ -7,7 +7,7 @@ title: AsyncDebouncer # Class: AsyncDebouncer\ -Defined in: [async-debouncer.ts:178](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L178) +Defined in: [async-debouncer.ts:183](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L183) A class that creates an async debounced function. @@ -66,7 +66,7 @@ const results = await asyncDebouncer.maybeExecute(inputElement.value); new AsyncDebouncer(fn, initialOptions): AsyncDebouncer ``` -Defined in: [async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L189) +Defined in: [async-debouncer.ts:195](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L195) #### Parameters @@ -90,7 +90,17 @@ Defined in: [async-debouncer.ts:189](https://github.com/TanStack/pacer/blob/main fn: TFn; ``` -Defined in: [async-debouncer.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L190) +Defined in: [async-debouncer.ts:196](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L196) + +*** + +### key + +```ts +key: string; +``` + +Defined in: [async-debouncer.ts:187](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L187) *** @@ -100,7 +110,7 @@ Defined in: [async-debouncer.ts:190](https://github.com/TanStack/pacer/blob/main options: AsyncDebouncerOptions; ``` -Defined in: [async-debouncer.ts:182](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L182) +Defined in: [async-debouncer.ts:188](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L188) *** @@ -110,7 +120,7 @@ Defined in: [async-debouncer.ts:182](https://github.com/TanStack/pacer/blob/main readonly store: Store>>; ``` -Defined in: [async-debouncer.ts:179](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L179) +Defined in: [async-debouncer.ts:184](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L184) ## Methods @@ -120,7 +130,7 @@ Defined in: [async-debouncer.ts:179](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-debouncer.ts:394](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L394) +Defined in: [async-debouncer.ts:400](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L400) Cancels any pending execution or aborts any execution in progress @@ -136,7 +146,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-debouncer.ts:346](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L346) +Defined in: [async-debouncer.ts:352](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L352) Processes the current pending execution immediately @@ -152,7 +162,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-debouncer.ts:269](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L269) +Defined in: [async-debouncer.ts:275](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L275) Attempts to execute the debounced function. If a call is already in progress, it will be queued. @@ -188,7 +198,7 @@ The error from the debounced function if no onError handler is configured reset(): void ``` -Defined in: [async-debouncer.ts:403](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L403) +Defined in: [async-debouncer.ts:409](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L409) Resets the debouncer state to its default values @@ -204,7 +214,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-debouncer.ts:205](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L205) +Defined in: [async-debouncer.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L211) Updates the async debouncer options diff --git a/docs/reference/classes/asyncqueuer.md b/docs/reference/classes/asyncqueuer.md index 8a95ac82..b09e92ac 100644 --- a/docs/reference/classes/asyncqueuer.md +++ b/docs/reference/classes/asyncqueuer.md @@ -7,7 +7,7 @@ title: AsyncQueuer # Class: AsyncQueuer\ -Defined in: [async-queuer.ts:260](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L260) +Defined in: [async-queuer.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L266) A flexible asynchronous queue for processing tasks with configurable concurrency, priority, and expiration. @@ -71,7 +71,7 @@ asyncQueuer.start(); new AsyncQueuer(fn, initialOptions): AsyncQueuer ``` -Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L267) +Defined in: [async-queuer.ts:274](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L274) #### Parameters @@ -95,7 +95,7 @@ Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/pa fn: (item) => Promise; ``` -Defined in: [async-queuer.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L268) +Defined in: [async-queuer.ts:275](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L275) #### Parameters @@ -109,13 +109,23 @@ Defined in: [async-queuer.ts:268](https://github.com/TanStack/pacer/blob/main/pa *** +### key + +```ts +key: string; +``` + +Defined in: [async-queuer.ts:270](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L270) + +*** + ### options ```ts options: AsyncQueuerOptions; ``` -Defined in: [async-queuer.ts:264](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L264) +Defined in: [async-queuer.ts:271](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L271) *** @@ -125,7 +135,7 @@ Defined in: [async-queuer.ts:264](https://github.com/TanStack/pacer/blob/main/pa readonly store: Store>>; ``` -Defined in: [async-queuer.ts:261](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L261) +Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L267) ## Methods @@ -138,7 +148,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [async-queuer.ts:406](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L406) +Defined in: [async-queuer.ts:413](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L413) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -176,7 +186,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [async-queuer.ts:710](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L710) +Defined in: [async-queuer.ts:717](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L717) Removes all pending items from the queue. Does not affect active tasks. @@ -192,7 +202,7 @@ Removes all pending items from the queue. Does not affect active tasks. execute(position?): Promise ``` -Defined in: [async-queuer.ts:532](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L532) +Defined in: [async-queuer.ts:539](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L539) Removes and returns the next item from the queue and executes the task function with it. @@ -222,7 +232,7 @@ queuer.execute('back'); flush(numberOfItems, position?): Promise ``` -Defined in: [async-queuer.ts:567](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L567) +Defined in: [async-queuer.ts:574](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L574) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -249,7 +259,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): Promise ``` -Defined in: [async-queuer.ts:581](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L581) +Defined in: [async-queuer.ts:588](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L588) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -272,7 +282,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:485](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L485) +Defined in: [async-queuer.ts:492](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L492) Removes and returns the next item from the queue without executing the task function. Use for manual queue management. Normally, use execute() to process items. @@ -304,7 +314,7 @@ queuer.getNextItem('back'); peekActiveItems(): TValue[] ``` -Defined in: [async-queuer.ts:673](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L673) +Defined in: [async-queuer.ts:680](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L680) Returns the items currently being processed (active tasks). @@ -320,7 +330,7 @@ Returns the items currently being processed (active tasks). peekAllItems(): TValue[] ``` -Defined in: [async-queuer.ts:666](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L666) +Defined in: [async-queuer.ts:673](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L673) Returns a copy of all items in the queue, including active and pending items. @@ -336,7 +346,7 @@ Returns a copy of all items in the queue, including active and pending items. peekNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:656](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L656) +Defined in: [async-queuer.ts:663](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L663) Returns the next item in the queue without removing it. @@ -365,7 +375,7 @@ queuer.peekNextItem('back'); // back peekPendingItems(): TValue[] ``` -Defined in: [async-queuer.ts:680](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L680) +Defined in: [async-queuer.ts:687](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L687) Returns the items waiting to be processed (pending tasks). @@ -381,7 +391,7 @@ Returns the items waiting to be processed (pending tasks). reset(): void ``` -Defined in: [async-queuer.ts:718](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L718) +Defined in: [async-queuer.ts:725](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L725) Resets the queuer state to its default values @@ -397,7 +407,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [async-queuer.ts:300](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L300) +Defined in: [async-queuer.ts:307](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L307) Updates the queuer options. New options are merged with existing options. @@ -419,7 +429,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [async-queuer.ts:687](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L687) +Defined in: [async-queuer.ts:694](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L694) Starts processing items in the queue. If already running, does nothing. @@ -435,7 +445,7 @@ Starts processing items in the queue. If already running, does nothing. stop(): void ``` -Defined in: [async-queuer.ts:697](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L697) +Defined in: [async-queuer.ts:704](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L704) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index 34cabbe1..25fb0833 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -7,7 +7,7 @@ title: AsyncRateLimiter # Class: AsyncRateLimiter\ -Defined in: [async-rate-limiter.ts:206](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L206) +Defined in: [async-rate-limiter.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L211) A class that creates an async rate-limited function. @@ -87,7 +87,7 @@ const data = await rateLimiter.maybeExecute('123'); new AsyncRateLimiter(fn, initialOptions): AsyncRateLimiter ``` -Defined in: [async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L213) +Defined in: [async-rate-limiter.ts:219](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L219) #### Parameters @@ -111,7 +111,17 @@ Defined in: [async-rate-limiter.ts:213](https://github.com/TanStack/pacer/blob/m fn: TFn; ``` -Defined in: [async-rate-limiter.ts:214](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L214) +Defined in: [async-rate-limiter.ts:220](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L220) + +*** + +### key + +```ts +key: string; +``` + +Defined in: [async-rate-limiter.ts:215](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L215) *** @@ -121,7 +131,7 @@ Defined in: [async-rate-limiter.ts:214](https://github.com/TanStack/pacer/blob/m options: AsyncRateLimiterOptions; ``` -Defined in: [async-rate-limiter.ts:210](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L210) +Defined in: [async-rate-limiter.ts:216](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L216) *** @@ -131,7 +141,7 @@ Defined in: [async-rate-limiter.ts:210](https://github.com/TanStack/pacer/blob/m readonly store: Store>>; ``` -Defined in: [async-rate-limiter.ts:207](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L207) +Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L212) ## Methods @@ -141,7 +151,7 @@ Defined in: [async-rate-limiter.ts:207](https://github.com/TanStack/pacer/blob/m getMsUntilNextWindow(): number ``` -Defined in: [async-rate-limiter.ts:440](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L440) +Defined in: [async-rate-limiter.ts:446](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L446) Returns the number of milliseconds until the next execution will be possible For fixed windows, this is the time until the current window resets @@ -159,7 +169,7 @@ For sliding windows, this is the time until the oldest execution expires getRemainingInWindow(): number ``` -Defined in: [async-rate-limiter.ts:430](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L430) +Defined in: [async-rate-limiter.ts:436](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L436) Returns the number of remaining executions allowed in the current window @@ -175,7 +185,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [async-rate-limiter.ts:309](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L309) +Defined in: [async-rate-limiter.ts:315](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L315) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -223,7 +233,7 @@ const result2 = await rateLimiter.maybeExecute('arg1', 'arg2'); // undefined reset(): void ``` -Defined in: [async-rate-limiter.ts:451](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L451) +Defined in: [async-rate-limiter.ts:457](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L457) Resets the rate limiter state @@ -239,7 +249,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [async-rate-limiter.ts:232](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L232) +Defined in: [async-rate-limiter.ts:238](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L238) Updates the async rate limiter options diff --git a/docs/reference/classes/asyncthrottler.md b/docs/reference/classes/asyncthrottler.md index 1a17ad2f..bde56b7a 100644 --- a/docs/reference/classes/asyncthrottler.md +++ b/docs/reference/classes/asyncthrottler.md @@ -7,7 +7,7 @@ title: AsyncThrottler # Class: AsyncThrottler\ -Defined in: [async-throttler.ts:189](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L189) +Defined in: [async-throttler.ts:194](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L194) A class that creates an async throttled function. @@ -69,7 +69,7 @@ const result = await throttler.maybeExecute(inputElement.value); new AsyncThrottler(fn, initialOptions): AsyncThrottler ``` -Defined in: [async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L200) +Defined in: [async-throttler.ts:206](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L206) #### Parameters @@ -93,7 +93,17 @@ Defined in: [async-throttler.ts:200](https://github.com/TanStack/pacer/blob/main fn: TFn; ``` -Defined in: [async-throttler.ts:201](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L201) +Defined in: [async-throttler.ts:207](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L207) + +*** + +### key + +```ts +key: string; +``` + +Defined in: [async-throttler.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L198) *** @@ -103,7 +113,7 @@ Defined in: [async-throttler.ts:201](https://github.com/TanStack/pacer/blob/main options: AsyncThrottlerOptions; ``` -Defined in: [async-throttler.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L193) +Defined in: [async-throttler.ts:199](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L199) *** @@ -113,7 +123,7 @@ Defined in: [async-throttler.ts:193](https://github.com/TanStack/pacer/blob/main readonly store: Store>>; ``` -Defined in: [async-throttler.ts:190](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L190) +Defined in: [async-throttler.ts:195](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L195) ## Methods @@ -123,7 +133,7 @@ Defined in: [async-throttler.ts:190](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-throttler.ts:429](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L429) +Defined in: [async-throttler.ts:435](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L435) Cancels any pending execution or aborts any execution in progress @@ -139,7 +149,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-throttler.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L378) +Defined in: [async-throttler.ts:384](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L384) Processes the current pending execution immediately @@ -155,7 +165,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-throttler.ts:288](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L288) +Defined in: [async-throttler.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L294) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -197,7 +207,7 @@ await throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [async-throttler.ts:437](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L437) +Defined in: [async-throttler.ts:443](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L443) Resets the debouncer state to its default values @@ -213,7 +223,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-throttler.ts:216](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L216) +Defined in: [async-throttler.ts:222](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L222) Updates the async throttler options diff --git a/docs/reference/classes/batcher.md b/docs/reference/classes/batcher.md index aca76a53..eb2d2192 100644 --- a/docs/reference/classes/batcher.md +++ b/docs/reference/classes/batcher.md @@ -7,7 +7,7 @@ title: Batcher # Class: Batcher\ -Defined in: [batcher.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L139) +Defined in: [batcher.ts:144](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L144) A class that collects items and processes them in batches. @@ -59,7 +59,7 @@ batcher.addItem(2); new Batcher(fn, initialOptions): Batcher ``` -Defined in: [batcher.ts:146](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L146) +Defined in: [batcher.ts:152](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L152) #### Parameters @@ -83,7 +83,7 @@ Defined in: [batcher.ts:146](https://github.com/TanStack/pacer/blob/main/package fn: (items) => void; ``` -Defined in: [batcher.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L147) +Defined in: [batcher.ts:153](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L153) #### Parameters @@ -97,13 +97,23 @@ Defined in: [batcher.ts:147](https://github.com/TanStack/pacer/blob/main/package *** +### key + +```ts +key: string; +``` + +Defined in: [batcher.ts:148](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L148) + +*** + ### options ```ts options: BatcherOptionsWithOptionalCallbacks; ``` -Defined in: [batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L143) +Defined in: [batcher.ts:149](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L149) *** @@ -113,7 +123,7 @@ Defined in: [batcher.ts:143](https://github.com/TanStack/pacer/blob/main/package readonly store: Store>>; ``` -Defined in: [batcher.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L140) +Defined in: [batcher.ts:145](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L145) ## Methods @@ -123,7 +133,7 @@ Defined in: [batcher.ts:140](https://github.com/TanStack/pacer/blob/main/package addItem(item): void ``` -Defined in: [batcher.ts:197](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L197) +Defined in: [batcher.ts:203](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L203) Adds an item to the batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -146,7 +156,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [batcher.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L267) +Defined in: [batcher.ts:273](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L273) Removes all items from the batcher @@ -162,7 +172,7 @@ Removes all items from the batcher flush(): void ``` -Defined in: [batcher.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L245) +Defined in: [batcher.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L251) Processes the current batch of items immediately @@ -178,7 +188,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [batcher.ts:253](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L253) +Defined in: [batcher.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L259) Returns a copy of all items in the batcher @@ -194,7 +204,7 @@ Returns a copy of all items in the batcher reset(): void ``` -Defined in: [batcher.ts:274](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L274) +Defined in: [batcher.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L280) Resets the batcher state to its default values @@ -210,7 +220,7 @@ Resets the batcher state to its default values setOptions(newOptions): void ``` -Defined in: [batcher.ts:161](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L161) +Defined in: [batcher.ts:167](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L167) Updates the batcher options diff --git a/docs/reference/classes/debouncer.md b/docs/reference/classes/debouncer.md index 18bbec02..c9e72648 100644 --- a/docs/reference/classes/debouncer.md +++ b/docs/reference/classes/debouncer.md @@ -7,7 +7,7 @@ title: Debouncer # Class: Debouncer\ -Defined in: [debouncer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L119) +Defined in: [debouncer.ts:124](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L124) A class that creates a debounced function. @@ -52,7 +52,7 @@ inputElement.addEventListener('input', () => { new Debouncer(fn, initialOptions): Debouncer ``` -Defined in: [debouncer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L126) +Defined in: [debouncer.ts:132](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L132) #### Parameters @@ -76,7 +76,17 @@ Defined in: [debouncer.ts:126](https://github.com/TanStack/pacer/blob/main/packa fn: TFn; ``` -Defined in: [debouncer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L127) +Defined in: [debouncer.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L133) + +*** + +### key + +```ts +key: string; +``` + +Defined in: [debouncer.ts:128](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L128) *** @@ -86,7 +96,7 @@ Defined in: [debouncer.ts:127](https://github.com/TanStack/pacer/blob/main/packa options: DebouncerOptions; ``` -Defined in: [debouncer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L123) +Defined in: [debouncer.ts:129](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L129) *** @@ -96,7 +106,7 @@ Defined in: [debouncer.ts:123](https://github.com/TanStack/pacer/blob/main/packa readonly store: Store>>; ``` -Defined in: [debouncer.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L120) +Defined in: [debouncer.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L125) ## Methods @@ -106,7 +116,7 @@ Defined in: [debouncer.ts:120](https://github.com/TanStack/pacer/blob/main/packa cancel(): void ``` -Defined in: [debouncer.ts:250](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L250) +Defined in: [debouncer.ts:256](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L256) Cancels any pending execution @@ -122,7 +132,7 @@ Cancels any pending execution flush(): void ``` -Defined in: [debouncer.ts:233](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L233) +Defined in: [debouncer.ts:239](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L239) Processes the current pending execution immediately @@ -138,7 +148,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [debouncer.ts:191](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L191) +Defined in: [debouncer.ts:197](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L197) Attempts to execute the debounced function If a call is already in progress, it will be queued @@ -161,7 +171,7 @@ If a call is already in progress, it will be queued reset(): void ``` -Defined in: [debouncer.ts:261](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L261) +Defined in: [debouncer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L267) Resets the debouncer state to its default values @@ -177,7 +187,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [debouncer.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L141) +Defined in: [debouncer.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L147) Updates the debouncer options diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index 0bfa3727..d91917fa 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -7,7 +7,7 @@ title: Queuer # Class: Queuer\ -Defined in: [queuer.ts:244](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L244) +Defined in: [queuer.ts:250](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L250) A flexible queue that processes items with configurable wait times, expiration, and priority. @@ -92,7 +92,7 @@ manualQueue.getNextItem(); // returns 2, queue is empty new Queuer(fn, initialOptions): Queuer ``` -Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L251) +Defined in: [queuer.ts:258](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L258) #### Parameters @@ -116,7 +116,7 @@ Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages fn: (item) => void; ``` -Defined in: [queuer.ts:252](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L252) +Defined in: [queuer.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L259) #### Parameters @@ -130,13 +130,23 @@ Defined in: [queuer.ts:252](https://github.com/TanStack/pacer/blob/main/packages *** +### key + +```ts +key: string; +``` + +Defined in: [queuer.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L254) + +*** + ### options ```ts options: QueuerOptions; ``` -Defined in: [queuer.ts:248](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L248) +Defined in: [queuer.ts:255](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L255) *** @@ -146,7 +156,7 @@ Defined in: [queuer.ts:248](https://github.com/TanStack/pacer/blob/main/packages readonly store: Store>>; ``` -Defined in: [queuer.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L245) +Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L251) ## Methods @@ -159,7 +169,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [queuer.ts:370](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L370) +Defined in: [queuer.ts:377](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L377) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -198,7 +208,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [queuer.ts:643](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L643) +Defined in: [queuer.ts:650](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L650) Removes all pending items from the queue. Does not affect items being processed. @@ -214,7 +224,7 @@ Removes all pending items from the queue. Does not affect items being processed. execute(position?): undefined | TValue ``` -Defined in: [queuer.ts:497](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L497) +Defined in: [queuer.ts:504](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L504) Removes and returns the next item from the queue and processes it using the provided function. @@ -243,7 +253,7 @@ queuer.execute('back'); flush(numberOfItems, position?): void ``` -Defined in: [queuer.ts:513](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L513) +Defined in: [queuer.ts:520](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L520) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -270,7 +280,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [queuer.ts:528](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L528) +Defined in: [queuer.ts:535](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L535) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -293,7 +303,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:450](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L450) +Defined in: [queuer.ts:457](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L457) Removes and returns the next item from the queue without executing the function. Use for manual queue management. Normally, use execute() to process items. @@ -324,7 +334,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [queuer.ts:611](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L611) +Defined in: [queuer.ts:618](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L618) Returns a copy of all items in the queue. @@ -340,7 +350,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:601](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L601) +Defined in: [queuer.ts:608](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L608) Returns the next item in the queue without removing it. @@ -368,7 +378,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [queuer.ts:651](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L651) +Defined in: [queuer.ts:658](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L658) Resets the queuer state to its default values @@ -384,7 +394,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [queuer.ts:283](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L283) +Defined in: [queuer.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L290) Updates the queuer options. New options are merged with existing options. @@ -406,7 +416,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [queuer.ts:618](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L618) +Defined in: [queuer.ts:625](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L625) Starts processing items in the queue. If already isRunning, does nothing. @@ -422,7 +432,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [queuer.ts:628](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L628) +Defined in: [queuer.ts:635](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L635) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/ratelimiter.md b/docs/reference/classes/ratelimiter.md index 5ef754c7..7978bff2 100644 --- a/docs/reference/classes/ratelimiter.md +++ b/docs/reference/classes/ratelimiter.md @@ -7,7 +7,7 @@ title: RateLimiter # Class: RateLimiter\ -Defined in: [rate-limiter.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L133) +Defined in: [rate-limiter.ts:138](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L138) A class that creates a rate-limited function. @@ -65,7 +65,7 @@ rateLimiter.maybeExecute('123'); new RateLimiter(fn, initialOptions): RateLimiter ``` -Defined in: [rate-limiter.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L140) +Defined in: [rate-limiter.ts:145](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L145) #### Parameters @@ -89,6 +89,16 @@ Defined in: [rate-limiter.ts:140](https://github.com/TanStack/pacer/blob/main/pa fn: TFn; ``` +Defined in: [rate-limiter.ts:146](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L146) + +*** + +### key + +```ts +key: string; +``` + Defined in: [rate-limiter.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L141) *** @@ -99,7 +109,7 @@ Defined in: [rate-limiter.ts:141](https://github.com/TanStack/pacer/blob/main/pa options: RateLimiterOptions; ``` -Defined in: [rate-limiter.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L136) +Defined in: [rate-limiter.ts:142](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L142) *** @@ -109,7 +119,7 @@ Defined in: [rate-limiter.ts:136](https://github.com/TanStack/pacer/blob/main/pa readonly store: Store>; ``` -Defined in: [rate-limiter.ts:134](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L134) +Defined in: [rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L139) ## Methods @@ -119,7 +129,7 @@ Defined in: [rate-limiter.ts:134](https://github.com/TanStack/pacer/blob/main/pa getMsUntilNextWindow(): number ``` -Defined in: [rate-limiter.ts:325](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L325) +Defined in: [rate-limiter.ts:330](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L330) Returns the number of milliseconds until the next execution will be possible @@ -135,7 +145,7 @@ Returns the number of milliseconds until the next execution will be possible getRemainingInWindow(): number ``` -Defined in: [rate-limiter.ts:317](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L317) +Defined in: [rate-limiter.ts:322](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L322) Returns the number of remaining executions allowed in the current window @@ -151,7 +161,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): boolean ``` -Defined in: [rate-limiter.ts:223](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L223) +Defined in: [rate-limiter.ts:228](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L228) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -186,7 +196,7 @@ rateLimiter.maybeExecute('arg1', 'arg2'); // false reset(): void ``` -Defined in: [rate-limiter.ts:336](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L336) +Defined in: [rate-limiter.ts:341](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L341) Resets the rate limiter state @@ -202,7 +212,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [rate-limiter.ts:158](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L158) +Defined in: [rate-limiter.ts:163](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L163) Updates the rate limiter options diff --git a/docs/reference/classes/throttler.md b/docs/reference/classes/throttler.md index 819a0872..c14faaab 100644 --- a/docs/reference/classes/throttler.md +++ b/docs/reference/classes/throttler.md @@ -7,7 +7,7 @@ title: Throttler # Class: Throttler\ -Defined in: [throttler.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L127) +Defined in: [throttler.ts:132](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L132) A class that creates a throttled function. @@ -56,7 +56,7 @@ throttler.maybeExecute('123'); // Throttled new Throttler(fn, initialOptions): Throttler ``` -Defined in: [throttler.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L135) +Defined in: [throttler.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L140) #### Parameters @@ -80,6 +80,16 @@ Defined in: [throttler.ts:135](https://github.com/TanStack/pacer/blob/main/packa fn: TFn; ``` +Defined in: [throttler.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L141) + +*** + +### key + +```ts +key: undefined | string; +``` + Defined in: [throttler.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L136) *** @@ -90,7 +100,7 @@ Defined in: [throttler.ts:136](https://github.com/TanStack/pacer/blob/main/packa options: ThrottlerOptions; ``` -Defined in: [throttler.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L131) +Defined in: [throttler.ts:137](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L137) *** @@ -100,7 +110,7 @@ Defined in: [throttler.ts:131](https://github.com/TanStack/pacer/blob/main/packa readonly store: Store>>; ``` -Defined in: [throttler.ts:128](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L128) +Defined in: [throttler.ts:133](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L133) ## Methods @@ -110,7 +120,7 @@ Defined in: [throttler.ts:128](https://github.com/TanStack/pacer/blob/main/packa cancel(): void ``` -Defined in: [throttler.ts:288](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L288) +Defined in: [throttler.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L294) Cancels any pending trailing execution and clears internal state. @@ -132,7 +142,7 @@ Has no effect if there is no pending execution. flush(): void ``` -Defined in: [throttler.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L266) +Defined in: [throttler.ts:272](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L272) Processes the current pending execution immediately @@ -148,7 +158,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [throttler.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L211) +Defined in: [throttler.ts:217](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L217) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -190,7 +200,7 @@ throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [throttler.ts:299](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L299) +Defined in: [throttler.ts:305](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L305) Resets the throttler state to its default values @@ -206,7 +216,7 @@ Resets the throttler state to its default values setOptions(newOptions): void ``` -Defined in: [throttler.ts:149](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L149) +Defined in: [throttler.ts:155](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L155) Updates the throttler options diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index 058fa991..2652703f 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -11,7 +11,7 @@ title: asyncBatch function asyncBatch(fn, options): (item) => void ``` -Defined in: [async-batcher.ts:447](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L447) +Defined in: [async-batcher.ts:458](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L458) Creates an async batcher that processes items in batches diff --git a/docs/reference/functions/asyncdebounce.md b/docs/reference/functions/asyncdebounce.md index b7ad9237..b77db41f 100644 --- a/docs/reference/functions/asyncdebounce.md +++ b/docs/reference/functions/asyncdebounce.md @@ -11,7 +11,7 @@ title: asyncDebounce function asyncDebounce(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-debouncer.ts:452](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L452) +Defined in: [async-debouncer.ts:458](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L458) Creates an async debounced function that delays execution until after a specified wait time. The debounced function will only execute once the wait period has elapsed without any new calls. diff --git a/docs/reference/functions/asyncqueue.md b/docs/reference/functions/asyncqueue.md index 2e3da553..ed0e47d2 100644 --- a/docs/reference/functions/asyncqueue.md +++ b/docs/reference/functions/asyncqueue.md @@ -11,7 +11,7 @@ title: asyncQueue function asyncQueue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [async-queuer.ts:757](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L757) +Defined in: [async-queuer.ts:764](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L764) Creates a new AsyncQueuer instance and returns a bound addItem function for adding tasks. The queuer is started automatically and ready to process items. diff --git a/docs/reference/functions/asyncratelimit.md b/docs/reference/functions/asyncratelimit.md index d0db7b3b..752c47c4 100644 --- a/docs/reference/functions/asyncratelimit.md +++ b/docs/reference/functions/asyncratelimit.md @@ -11,7 +11,7 @@ title: asyncRateLimit function asyncRateLimit(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-rate-limiter.ts:522](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L522) +Defined in: [async-rate-limiter.ts:528](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L528) Creates an async rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/asyncthrottle.md b/docs/reference/functions/asyncthrottle.md index 97f76c2b..e228b36f 100644 --- a/docs/reference/functions/asyncthrottle.md +++ b/docs/reference/functions/asyncthrottle.md @@ -11,7 +11,7 @@ title: asyncThrottle function asyncThrottle(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-throttler.ts:485](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L485) +Defined in: [async-throttler.ts:491](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L491) Creates an async throttled function that limits how often the function can execute. The throttled function will execute at most once per wait period, even if called multiple times. diff --git a/docs/reference/functions/batch.md b/docs/reference/functions/batch.md index 9342bf72..26b75d6d 100644 --- a/docs/reference/functions/batch.md +++ b/docs/reference/functions/batch.md @@ -11,7 +11,7 @@ title: batch function batch(fn, options): (item) => void ``` -Defined in: [batcher.ts:298](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L298) +Defined in: [batcher.ts:304](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L304) Creates a batcher that processes items in batches diff --git a/docs/reference/functions/createkey.md b/docs/reference/functions/createkey.md new file mode 100644 index 00000000..820b3709 --- /dev/null +++ b/docs/reference/functions/createkey.md @@ -0,0 +1,24 @@ +--- +id: createKey +title: createKey +--- + + + +# Function: createKey() + +```ts +function createKey(key?): string +``` + +Defined in: [utils.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/utils.ts#L14) + +## Parameters + +### key? + +`string` + +## Returns + +`string` diff --git a/docs/reference/functions/debounce.md b/docs/reference/functions/debounce.md index da4e2ecf..e1c8a667 100644 --- a/docs/reference/functions/debounce.md +++ b/docs/reference/functions/debounce.md @@ -11,7 +11,7 @@ title: debounce function debounce(fn, initialOptions): (...args) => void ``` -Defined in: [debouncer.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L294) +Defined in: [debouncer.ts:300](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L300) Creates a debounced function that delays invoking the provided function until after a specified wait time. Multiple calls during the wait period will cancel previous pending invocations and reset the timer. diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 61dbc854..39c142a2 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [queuer.ts:694](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L694) +Defined in: [queuer.ts:701](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L701) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. diff --git a/docs/reference/functions/ratelimit.md b/docs/reference/functions/ratelimit.md index 778862a2..fa1b658e 100644 --- a/docs/reference/functions/ratelimit.md +++ b/docs/reference/functions/ratelimit.md @@ -11,7 +11,7 @@ title: rateLimit function rateLimit(fn, initialOptions): (...args) => boolean ``` -Defined in: [rate-limiter.ts:388](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L388) +Defined in: [rate-limiter.ts:393](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L393) Creates a rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/throttle.md b/docs/reference/functions/throttle.md index 739ae5c2..bad5a296 100644 --- a/docs/reference/functions/throttle.md +++ b/docs/reference/functions/throttle.md @@ -11,7 +11,7 @@ title: throttle function throttle(fn, initialOptions): (...args) => void ``` -Defined in: [throttler.ts:338](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L338) +Defined in: [throttler.ts:344](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L344) Creates a throttled function that limits how often the provided function can execute. diff --git a/docs/reference/index.md b/docs/reference/index.md index a27297a2..a4f594d0 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -63,6 +63,7 @@ title: "@tanstack/pacer" - [asyncRateLimit](../functions/asyncratelimit.md) - [asyncThrottle](../functions/asyncthrottle.md) - [batch](../functions/batch.md) +- [createKey](../functions/createkey.md) - [debounce](../functions/debounce.md) - [isFunction](../functions/isfunction.md) - [parseFunctionOrValue](../functions/parsefunctionorvalue.md) diff --git a/docs/reference/interfaces/asyncbatcheroptions.md b/docs/reference/interfaces/asyncbatcheroptions.md index e2d5495e..d8e06dae 100644 --- a/docs/reference/interfaces/asyncbatcheroptions.md +++ b/docs/reference/interfaces/asyncbatcheroptions.md @@ -56,13 +56,26 @@ Initial state for the async batcher *** +### key? + +```ts +optional key: string; +``` + +Defined in: [async-batcher.ts:99](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L99) + +Optional key to identify this async batcher instance. +If provided, the async batcher will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### maxSize? ```ts optional maxSize: number; ``` -Defined in: [async-batcher.ts:99](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L99) +Defined in: [async-batcher.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L104) Maximum number of items in a batch @@ -80,7 +93,7 @@ Infinity optional onError: (error, batch, batcher) => void; ``` -Defined in: [async-batcher.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L105) +Defined in: [async-batcher.ts:110](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L110) Optional error handler for when the batch function throws. If provided, the handler will be called with the error, the batch of items that failed, and batcher instance. @@ -112,7 +125,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onItemsChange: (batcher) => void; ``` -Defined in: [async-batcher.ts:113](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L113) +Defined in: [async-batcher.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L118) Callback fired after items are added to the batcher @@ -134,7 +147,7 @@ Callback fired after items are added to the batcher optional onSettled: (batch, batcher) => void; ``` -Defined in: [async-batcher.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L117) +Defined in: [async-batcher.ts:122](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L122) Optional callback to call when a batch is settled (completed or failed) @@ -160,7 +173,7 @@ Optional callback to call when a batch is settled (completed or failed) optional onSuccess: (result, batch, batcher) => void; ``` -Defined in: [async-batcher.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L121) +Defined in: [async-batcher.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L126) Optional callback to call when a batch succeeds @@ -190,7 +203,7 @@ Optional callback to call when a batch succeeds optional started: boolean; ``` -Defined in: [async-batcher.ts:130](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L130) +Defined in: [async-batcher.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L135) Whether the batcher should start processing immediately @@ -208,7 +221,7 @@ true optional throwOnError: boolean; ``` -Defined in: [async-batcher.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L136) +Defined in: [async-batcher.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L141) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -222,7 +235,7 @@ Can be explicitly set to override these defaults. optional wait: number | (asyncBatcher) => number; ``` -Defined in: [async-batcher.ts:143](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L143) +Defined in: [async-batcher.ts:148](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L148) Maximum time in milliseconds to wait before processing a batch. If the wait duration has elapsed, the batch will be processed. diff --git a/docs/reference/interfaces/asyncdebounceroptions.md b/docs/reference/interfaces/asyncdebounceroptions.md index 53b27b99..35292154 100644 --- a/docs/reference/interfaces/asyncdebounceroptions.md +++ b/docs/reference/interfaces/asyncdebounceroptions.md @@ -43,13 +43,26 @@ Initial state for the async debouncer *** +### key? + +```ts +optional key: string; +``` + +Defined in: [async-debouncer.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L79) + +Optional key to identify this async debouncer instance. +If provided, the async debouncer will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### leading? ```ts optional leading: boolean; ``` -Defined in: [async-debouncer.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L79) +Defined in: [async-debouncer.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L84) Whether to execute on the leading edge of the timeout. Defaults to false. @@ -62,7 +75,7 @@ Defaults to false. optional onError: (error, args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L85) +Defined in: [async-debouncer.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L90) Optional error handler for when the debounced function throws. If provided, the handler will be called with the error and debouncer instance. @@ -94,7 +107,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L93) +Defined in: [async-debouncer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L98) Optional callback to call when the debounced function is executed @@ -120,7 +133,7 @@ Optional callback to call when the debounced function is executed optional onSuccess: (result, args, debouncer) => void; ``` -Defined in: [async-debouncer.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L97) +Defined in: [async-debouncer.ts:102](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L102) Optional callback to call when the debounced function is executed @@ -150,7 +163,7 @@ Optional callback to call when the debounced function is executed optional throwOnError: boolean; ``` -Defined in: [async-debouncer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L107) +Defined in: [async-debouncer.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L112) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +177,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [async-debouncer.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L112) +Defined in: [async-debouncer.ts:117](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L117) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -177,7 +190,7 @@ Defaults to true. wait: number | (debouncer) => number; ``` -Defined in: [async-debouncer.ts:118](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L118) +Defined in: [async-debouncer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L123) Delay in milliseconds to wait after the last call before executing. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncqueueroptions.md b/docs/reference/interfaces/asyncqueueroptions.md index 7685fe32..914247da 100644 --- a/docs/reference/interfaces/asyncqueueroptions.md +++ b/docs/reference/interfaces/asyncqueueroptions.md @@ -39,7 +39,7 @@ Default position to add items to the queuer optional concurrency: number | (queuer) => number; ``` -Defined in: [async-queuer.ts:106](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L106) +Defined in: [async-queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L111) Maximum number of concurrent tasks to process. Can be a number or a function that returns a number. @@ -58,7 +58,7 @@ Can be a number or a function that returns a number. optional expirationDuration: number; ``` -Defined in: [async-queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L111) +Defined in: [async-queuer.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L116) Maximum time in milliseconds that an item can stay in the queue If not provided, items will never expire @@ -71,7 +71,7 @@ If not provided, items will never expire optional getIsExpired: (item, addedAt) => boolean; ``` -Defined in: [async-queuer.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L116) +Defined in: [async-queuer.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L121) Function to determine if an item has expired If provided, this overrides the expirationDuration behavior @@ -98,7 +98,7 @@ If provided, this overrides the expirationDuration behavior optional getItemsFrom: QueuePosition; ``` -Defined in: [async-queuer.ts:121](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L121) +Defined in: [async-queuer.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L126) Default position to get items from during processing @@ -116,7 +116,7 @@ Default position to get items from during processing optional getPriority: (item) => number; ``` -Defined in: [async-queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L127) +Defined in: [async-queuer.ts:132](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L132) Function to determine priority of items in the queuer Higher priority items will be processed first @@ -140,7 +140,7 @@ If not provided, will use static priority values attached to tasks optional initialItems: TValue[]; ``` -Defined in: [async-queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L131) +Defined in: [async-queuer.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L136) Initial items to populate the queuer with @@ -152,19 +152,32 @@ Initial items to populate the queuer with optional initialState: Partial>; ``` -Defined in: [async-queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L135) +Defined in: [async-queuer.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L140) Initial state for the async queuer *** +### key? + +```ts +optional key: string; +``` + +Defined in: [async-queuer.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L105) + +Optional key to identify this async queuer instance. +If provided, the async queuer will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### maxSize? ```ts optional maxSize: number; ``` -Defined in: [async-queuer.ts:139](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L139) +Defined in: [async-queuer.ts:144](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L144) Maximum number of items allowed in the queuer @@ -176,7 +189,7 @@ Maximum number of items allowed in the queuer optional onError: (error, item, queuer) => void; ``` -Defined in: [async-queuer.ts:145](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L145) +Defined in: [async-queuer.ts:150](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L150) Optional error handler for when a task throws. If provided, the handler will be called with the error and queuer instance. @@ -208,7 +221,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onExpire: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:149](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L149) +Defined in: [async-queuer.ts:154](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L154) Callback fired whenever an item expires in the queuer @@ -234,7 +247,7 @@ Callback fired whenever an item expires in the queuer optional onItemsChange: (queuer) => void; ``` -Defined in: [async-queuer.ts:153](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L153) +Defined in: [async-queuer.ts:158](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L158) Callback fired whenever an item is added or removed from the queuer @@ -256,7 +269,7 @@ Callback fired whenever an item is added or removed from the queuer optional onReject: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:157](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L157) +Defined in: [async-queuer.ts:162](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L162) Callback fired whenever an item is rejected from being added to the queuer @@ -282,7 +295,7 @@ Callback fired whenever an item is rejected from being added to the queuer optional onSettled: (item, queuer) => void; ``` -Defined in: [async-queuer.ts:161](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L161) +Defined in: [async-queuer.ts:166](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L166) Optional callback to call when a task is settled @@ -308,7 +321,7 @@ Optional callback to call when a task is settled optional onSuccess: (result, item, queuer) => void; ``` -Defined in: [async-queuer.ts:165](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L165) +Defined in: [async-queuer.ts:170](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L170) Optional callback to call when a task succeeds @@ -338,7 +351,7 @@ Optional callback to call when a task succeeds optional started: boolean; ``` -Defined in: [async-queuer.ts:169](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L169) +Defined in: [async-queuer.ts:174](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L174) Whether the queuer should start processing tasks immediately or not. @@ -350,7 +363,7 @@ Whether the queuer should start processing tasks immediately or not. optional throwOnError: boolean; ``` -Defined in: [async-queuer.ts:175](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L175) +Defined in: [async-queuer.ts:180](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L180) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -364,7 +377,7 @@ Can be explicitly set to override these defaults. optional wait: number | (queuer) => number; ``` -Defined in: [async-queuer.ts:181](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L181) +Defined in: [async-queuer.ts:186](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L186) Time in milliseconds to wait between processing items. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/asyncratelimiteroptions.md b/docs/reference/interfaces/asyncratelimiteroptions.md index 40f9ac9d..f230a751 100644 --- a/docs/reference/interfaces/asyncratelimiteroptions.md +++ b/docs/reference/interfaces/asyncratelimiteroptions.md @@ -43,13 +43,26 @@ Initial state for the rate limiter *** +### key? + +```ts +optional key: string; +``` + +Defined in: [async-rate-limiter.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L79) + +Optional key to identify this async rate limiter instance. +If provided, the async rate limiter will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### limit ```ts limit: number | (rateLimiter) => number; ``` -Defined in: [async-rate-limiter.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L79) +Defined in: [async-rate-limiter.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L84) Maximum number of executions allowed within the time window. Can be a number or a function that returns a number. @@ -62,7 +75,7 @@ Can be a number or a function that returns a number. optional onError: (error, args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:85](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L85) +Defined in: [async-rate-limiter.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L90) Optional error handler for when the rate-limited function throws. If provided, the handler will be called with the error and rate limiter instance. @@ -94,7 +107,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onReject: (args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L93) +Defined in: [async-rate-limiter.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L98) Optional callback function that is called when an execution is rejected due to rate limiting @@ -120,7 +133,7 @@ Optional callback function that is called when an execution is rejected due to r optional onSettled: (args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:97](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L97) +Defined in: [async-rate-limiter.ts:102](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L102) Optional function to call when the rate-limited function is executed @@ -146,7 +159,7 @@ Optional function to call when the rate-limited function is executed optional onSuccess: (result, args, rateLimiter) => void; ``` -Defined in: [async-rate-limiter.ts:104](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L104) +Defined in: [async-rate-limiter.ts:109](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L109) Optional function to call when the rate-limited function is executed @@ -176,7 +189,7 @@ Optional function to call when the rate-limited function is executed optional throwOnError: boolean; ``` -Defined in: [async-rate-limiter.ts:114](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L114) +Defined in: [async-rate-limiter.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L119) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -190,7 +203,7 @@ Can be explicitly set to override these defaults. window: number | (rateLimiter) => number; ``` -Defined in: [async-rate-limiter.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L119) +Defined in: [async-rate-limiter.ts:124](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L124) Time window in milliseconds within which the limit applies. Can be a number or a function that returns a number. @@ -203,7 +216,7 @@ Can be a number or a function that returns a number. optional windowType: "fixed" | "sliding"; ``` -Defined in: [async-rate-limiter.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L126) +Defined in: [async-rate-limiter.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L131) Type of window to use for rate limiting - 'fixed': Uses a fixed window that resets after the window period diff --git a/docs/reference/interfaces/asyncthrottleroptions.md b/docs/reference/interfaces/asyncthrottleroptions.md index 277be425..521c010e 100644 --- a/docs/reference/interfaces/asyncthrottleroptions.md +++ b/docs/reference/interfaces/asyncthrottleroptions.md @@ -43,13 +43,26 @@ Initial state for the async throttler *** +### key? + +```ts +optional key: string; +``` + +Defined in: [async-throttler.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L84) + +Optional key to identify this async throttler instance. +If provided, the async throttler will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### leading? ```ts optional leading: boolean; ``` -Defined in: [async-throttler.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L84) +Defined in: [async-throttler.ts:89](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L89) Whether to execute the function immediately when called Defaults to true @@ -62,7 +75,7 @@ Defaults to true optional onError: (error, args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:90](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L90) +Defined in: [async-throttler.ts:95](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L95) Optional error handler for when the throttled function throws. If provided, the handler will be called with the error and throttler instance. @@ -94,7 +107,7 @@ This can be used alongside throwOnError - the handler will be called before any optional onSettled: (args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L98) +Defined in: [async-throttler.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L103) Optional function to call when the throttled function is executed @@ -120,7 +133,7 @@ Optional function to call when the throttled function is executed optional onSuccess: (result, args, asyncThrottler) => void; ``` -Defined in: [async-throttler.ts:105](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L105) +Defined in: [async-throttler.ts:110](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L110) Optional function to call when the throttled function is executed @@ -150,7 +163,7 @@ Optional function to call when the throttled function is executed optional throwOnError: boolean; ``` -Defined in: [async-throttler.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L115) +Defined in: [async-throttler.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L120) Whether to throw errors when they occur. Defaults to true if no onError handler is provided, false if an onError handler is provided. @@ -164,7 +177,7 @@ Can be explicitly set to override these defaults. optional trailing: boolean; ``` -Defined in: [async-throttler.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L120) +Defined in: [async-throttler.ts:125](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L125) Whether to execute the function on the trailing edge of the wait period Defaults to true @@ -177,7 +190,7 @@ Defaults to true wait: number | (throttler) => number; ``` -Defined in: [async-throttler.ts:126](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L126) +Defined in: [async-throttler.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L131) Time window in milliseconds during which the function can only be executed once. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/batcheroptions.md b/docs/reference/interfaces/batcheroptions.md index 2c44ec3d..d5bbec1e 100644 --- a/docs/reference/interfaces/batcheroptions.md +++ b/docs/reference/interfaces/batcheroptions.md @@ -56,13 +56,26 @@ Initial state for the batcher *** +### key? + +```ts +optional key: string; +``` + +Defined in: [batcher.ts:66](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L66) + +Optional key to identify this batcher instance. +If provided, the batcher will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### maxSize? ```ts optional maxSize: number; ``` -Defined in: [batcher.ts:66](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L66) +Defined in: [batcher.ts:71](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L71) Maximum number of items in a batch @@ -80,7 +93,7 @@ Infinity optional onExecute: (batch, batcher) => void; ``` -Defined in: [batcher.ts:70](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L70) +Defined in: [batcher.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L75) Callback fired after a batch is processed @@ -106,7 +119,7 @@ Callback fired after a batch is processed optional onItemsChange: (batcher) => void; ``` -Defined in: [batcher.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L74) +Defined in: [batcher.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L79) Callback fired after items are added to the batcher @@ -128,7 +141,7 @@ Callback fired after items are added to the batcher optional started: boolean; ``` -Defined in: [batcher.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L79) +Defined in: [batcher.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L84) Whether the batcher should start processing immediately @@ -146,7 +159,7 @@ true optional wait: number | (batcher) => number; ``` -Defined in: [batcher.ts:86](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L86) +Defined in: [batcher.ts:91](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L91) Maximum time in milliseconds to wait before processing a batch. If the wait duration has elapsed, the batch will be processed. diff --git a/docs/reference/interfaces/debounceroptions.md b/docs/reference/interfaces/debounceroptions.md index 9910cddd..95b8219b 100644 --- a/docs/reference/interfaces/debounceroptions.md +++ b/docs/reference/interfaces/debounceroptions.md @@ -37,19 +37,32 @@ Defaults to true. optional initialState: Partial>; ``` -Defined in: [debouncer.ts:54](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L54) +Defined in: [debouncer.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L59) Initial state for the debouncer *** +### key? + +```ts +optional key: string; +``` + +Defined in: [debouncer.ts:55](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L55) + +A key to identify the debouncer. +If provided, the debouncer will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### leading? ```ts optional leading: boolean; ``` -Defined in: [debouncer.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L60) +Defined in: [debouncer.ts:65](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L65) Whether to execute on the leading edge of the timeout. The first call will execute immediately and the rest will wait the delay. @@ -63,7 +76,7 @@ Defaults to false. optional onExecute: (args, debouncer) => void; ``` -Defined in: [debouncer.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L64) +Defined in: [debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L69) Callback function that is called after the function is executed @@ -89,7 +102,7 @@ Callback function that is called after the function is executed optional trailing: boolean; ``` -Defined in: [debouncer.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L69) +Defined in: [debouncer.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L74) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -102,7 +115,7 @@ Defaults to true. wait: number | (debouncer) => number; ``` -Defined in: [debouncer.ts:75](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L75) +Defined in: [debouncer.ts:80](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L80) Delay in milliseconds before executing the function. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/queueroptions.md b/docs/reference/interfaces/queueroptions.md index 70d3cbee..5425f916 100644 --- a/docs/reference/interfaces/queueroptions.md +++ b/docs/reference/interfaces/queueroptions.md @@ -43,7 +43,7 @@ Default position to add items to the queuer optional expirationDuration: number; ``` -Defined in: [queuer.ts:88](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L88) +Defined in: [queuer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L93) Maximum time in milliseconds that an item can stay in the queue If not provided, items will never expire @@ -56,7 +56,7 @@ If not provided, items will never expire optional getIsExpired: (item, addedAt) => boolean; ``` -Defined in: [queuer.ts:93](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L93) +Defined in: [queuer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L98) Function to determine if an item has expired If provided, this overrides the expirationDuration behavior @@ -83,7 +83,7 @@ If provided, this overrides the expirationDuration behavior optional getItemsFrom: QueuePosition; ``` -Defined in: [queuer.ts:98](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L98) +Defined in: [queuer.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L103) Default position to get items from during processing @@ -101,7 +101,7 @@ Default position to get items from during processing optional getPriority: (item) => number; ``` -Defined in: [queuer.ts:103](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L103) +Defined in: [queuer.ts:108](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L108) Function to determine priority of items in the queuer Higher priority items will be processed first @@ -124,7 +124,7 @@ Higher priority items will be processed first optional initialItems: TValue[]; ``` -Defined in: [queuer.ts:107](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L107) +Defined in: [queuer.ts:112](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L112) Initial items to populate the queuer with @@ -136,19 +136,32 @@ Initial items to populate the queuer with optional initialState: Partial>; ``` -Defined in: [queuer.ts:111](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L111) +Defined in: [queuer.ts:116](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L116) Initial state for the queuer *** +### key? + +```ts +optional key: string; +``` + +Defined in: [queuer.ts:88](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L88) + +Optional key to identify this queuer instance. +If provided, the queuer will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### maxSize? ```ts optional maxSize: number; ``` -Defined in: [queuer.ts:115](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L115) +Defined in: [queuer.ts:120](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L120) Maximum number of items allowed in the queuer @@ -160,7 +173,7 @@ Maximum number of items allowed in the queuer optional onExecute: (item, queuer) => void; ``` -Defined in: [queuer.ts:119](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L119) +Defined in: [queuer.ts:124](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L124) Callback fired whenever an item is removed from the queuer @@ -186,7 +199,7 @@ Callback fired whenever an item is removed from the queuer optional onExpire: (item, queuer) => void; ``` -Defined in: [queuer.ts:123](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L123) +Defined in: [queuer.ts:128](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L128) Callback fired whenever an item expires in the queuer @@ -212,7 +225,7 @@ Callback fired whenever an item expires in the queuer optional onItemsChange: (queuer) => void; ``` -Defined in: [queuer.ts:127](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L127) +Defined in: [queuer.ts:132](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L132) Callback fired whenever an item is added or removed from the queuer @@ -234,7 +247,7 @@ Callback fired whenever an item is added or removed from the queuer optional onReject: (item, queuer) => void; ``` -Defined in: [queuer.ts:131](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L131) +Defined in: [queuer.ts:136](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L136) Callback fired whenever an item is rejected from being added to the queuer @@ -260,7 +273,7 @@ Callback fired whenever an item is rejected from being added to the queuer optional started: boolean; ``` -Defined in: [queuer.ts:135](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L135) +Defined in: [queuer.ts:140](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L140) Whether the queuer should start processing tasks immediately @@ -272,7 +285,7 @@ Whether the queuer should start processing tasks immediately optional wait: number | (queuer) => number; ``` -Defined in: [queuer.ts:141](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L141) +Defined in: [queuer.ts:146](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L146) Time in milliseconds to wait between processing items. Can be a number or a function that returns a number. diff --git a/docs/reference/interfaces/ratelimiteroptions.md b/docs/reference/interfaces/ratelimiteroptions.md index 9800f487..ffdc79c3 100644 --- a/docs/reference/interfaces/ratelimiteroptions.md +++ b/docs/reference/interfaces/ratelimiteroptions.md @@ -42,13 +42,26 @@ Initial state for the rate limiter *** +### key? + +```ts +optional key: string; +``` + +Defined in: [rate-limiter.ts:56](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L56) + +Optional key to identify this rate limiter instance. +If provided, the rate limiter will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### limit ```ts limit: number | (rateLimiter) => number; ``` -Defined in: [rate-limiter.ts:56](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L56) +Defined in: [rate-limiter.ts:61](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L61) Maximum number of executions allowed within the time window. Can be a number or a callback function that receives the rate limiter instance and returns a number. @@ -61,7 +74,7 @@ Can be a number or a callback function that receives the rate limiter instance a optional onExecute: (args, rateLimiter) => void; ``` -Defined in: [rate-limiter.ts:60](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L60) +Defined in: [rate-limiter.ts:65](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L65) Callback function that is called after the function is executed @@ -87,7 +100,7 @@ Callback function that is called after the function is executed optional onReject: (rateLimiter) => void; ``` -Defined in: [rate-limiter.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L64) +Defined in: [rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L69) Optional callback function that is called when an execution is rejected due to rate limiting @@ -109,7 +122,7 @@ Optional callback function that is called when an execution is rejected due to r window: number | (rateLimiter) => number; ``` -Defined in: [rate-limiter.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L69) +Defined in: [rate-limiter.ts:74](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L74) Time window in milliseconds within which the limit applies. Can be a number or a callback function that receives the rate limiter instance and returns a number. @@ -122,7 +135,7 @@ Can be a number or a callback function that receives the rate limiter instance a optional windowType: "fixed" | "sliding"; ``` -Defined in: [rate-limiter.ts:76](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L76) +Defined in: [rate-limiter.ts:81](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L81) Type of window to use for rate limiting - 'fixed': Uses a fixed window that resets after the window period diff --git a/docs/reference/interfaces/throttleroptions.md b/docs/reference/interfaces/throttleroptions.md index c4d9c518..6316dd58 100644 --- a/docs/reference/interfaces/throttleroptions.md +++ b/docs/reference/interfaces/throttleroptions.md @@ -43,13 +43,26 @@ Initial state for the throttler *** +### key? + +```ts +optional key: string; +``` + +Defined in: [throttler.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L64) + +A key to identify the throttler. +If provided, the throttler will be identified by this key in the devtools and PacerProvider if applicable. + +*** + ### leading? ```ts optional leading: boolean; ``` -Defined in: [throttler.ts:64](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L64) +Defined in: [throttler.ts:69](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L69) Whether to execute on the leading edge of the timeout. Defaults to true. @@ -62,7 +75,7 @@ Defaults to true. optional onExecute: (args, throttler) => void; ``` -Defined in: [throttler.ts:68](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L68) +Defined in: [throttler.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L73) Callback function that is called after the function is executed @@ -88,7 +101,7 @@ Callback function that is called after the function is executed optional trailing: boolean; ``` -Defined in: [throttler.ts:73](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L73) +Defined in: [throttler.ts:78](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L78) Whether to execute on the trailing edge of the timeout. Defaults to true. @@ -101,7 +114,7 @@ Defaults to true. wait: number | (throttler) => number; ``` -Defined in: [throttler.ts:79](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L79) +Defined in: [throttler.ts:84](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L84) Time window in milliseconds during which the function can only be executed once. Can be a number or a function that returns a number. diff --git a/docs/reference/type-aliases/queueposition.md b/docs/reference/type-aliases/queueposition.md index 4ab6460c..9f3a30bc 100644 --- a/docs/reference/type-aliases/queueposition.md +++ b/docs/reference/type-aliases/queueposition.md @@ -11,7 +11,7 @@ title: QueuePosition type QueuePosition = "front" | "back"; ``` -Defined in: [queuer.ts:170](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L170) +Defined in: [queuer.ts:176](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L176) Position type for addItem and getNextItem operations. From 5df992fa6e78abdfab33bbfd3cd692eb7cbdaaea Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Tue, 12 Aug 2025 20:59:33 -0500 Subject: [PATCH 19/44] rename devtool packages to be consistent with query devtool package names --- examples/react/queue/package.json | 2 +- examples/react/queue/src/index.tsx | 2 +- examples/react/util-comparison/package.json | 2 +- examples/react/util-comparison/src/index.tsx | 2 +- package.json | 4 ++-- .../eslint.config.js | 0 .../package.json | 2 +- .../src/devtools.tsx | 0 .../src/index.ts | 0 .../tests/index.test.ts | 0 .../tests/test-setup.ts | 0 .../tsconfig.docs.json | 0 .../tsconfig.json | 0 .../vite.config.ts | 0 .../eslint.config.js | 0 .../package.json | 2 +- .../src/devtools.tsx | 0 .../src/index.ts | 0 .../tests/index.test.ts | 0 .../tests/test-setup.ts | 0 .../tsconfig.docs.json | 0 .../tsconfig.json | 0 .../vite.config.ts | 0 pnpm-lock.yaml | 12 ++++++------ 24 files changed, 14 insertions(+), 14 deletions(-) rename packages/{pacer-react-devtools => react-pacer-devtools}/eslint.config.js (100%) rename packages/{pacer-react-devtools => react-pacer-devtools}/package.json (97%) rename packages/{pacer-react-devtools => react-pacer-devtools}/src/devtools.tsx (100%) rename packages/{pacer-react-devtools => react-pacer-devtools}/src/index.ts (100%) rename packages/{pacer-react-devtools => react-pacer-devtools}/tests/index.test.ts (100%) rename packages/{pacer-react-devtools => react-pacer-devtools}/tests/test-setup.ts (100%) rename packages/{pacer-react-devtools => react-pacer-devtools}/tsconfig.docs.json (100%) rename packages/{pacer-react-devtools => react-pacer-devtools}/tsconfig.json (100%) rename packages/{pacer-react-devtools => react-pacer-devtools}/vite.config.ts (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/eslint.config.js (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/package.json (97%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/src/devtools.tsx (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/src/index.ts (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/tests/index.test.ts (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/tests/test-setup.ts (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/tsconfig.docs.json (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/tsconfig.json (100%) rename packages/{pacer-solid-devtools => solid-pacer-devtools}/vite.config.ts (100%) diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index 7206e62d..8a45b163 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/pacer-react-devtools": "0.14.0", + "@tanstack/react-pacer-devtools": "0.14.0", "@tanstack/react-devtools": "0.2.2", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", diff --git a/examples/react/queue/src/index.tsx b/examples/react/queue/src/index.tsx index d1aace63..419bee91 100644 --- a/examples/react/queue/src/index.tsx +++ b/examples/react/queue/src/index.tsx @@ -1,6 +1,6 @@ import { useCallback, useState } from 'react' import ReactDOM from 'react-dom/client' -import { PacerDevtoolsPanel } from '@tanstack/pacer-react-devtools' +import { PacerDevtoolsPanel } from '@tanstack/react-pacer-devtools' import { TanstackDevtools } from '@tanstack/react-devtools' import { queue } from '@tanstack/react-pacer/queuer' diff --git a/examples/react/util-comparison/package.json b/examples/react/util-comparison/package.json index 480673df..c77f4da8 100644 --- a/examples/react/util-comparison/package.json +++ b/examples/react/util-comparison/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/pacer-react-devtools": "0.14.0", + "@tanstack/react-pacer-devtools": "0.14.0", "@tanstack/react-devtools": "0.2.2", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", diff --git a/examples/react/util-comparison/src/index.tsx b/examples/react/util-comparison/src/index.tsx index ba95270e..a47ef7f0 100644 --- a/examples/react/util-comparison/src/index.tsx +++ b/examples/react/util-comparison/src/index.tsx @@ -5,7 +5,7 @@ import { useThrottler } from '@tanstack/react-pacer/throttler' import { useRateLimiter } from '@tanstack/react-pacer/rate-limiter' import { useQueuer } from '@tanstack/react-pacer/queuer' import { useBatcher } from '@tanstack/react-pacer/batcher' -import { PacerDevtoolsPanel } from '@tanstack/pacer-react-devtools' +import { PacerDevtoolsPanel } from '@tanstack/react-pacer-devtools' import { TanstackDevtools } from '@tanstack/react-devtools' function ComparisonApp() { diff --git a/package.json b/package.json index 9c8e98fc..fd0fa7d4 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "@tanstack/react-pacer": "workspace:*", "@tanstack/solid-pacer": "workspace:*", "@tanstack/pacer-devtools": "workspace:*", - "@tanstack/pacer-solid-devtools": "workspace:*", - "@tanstack/pacer-react-devtools": "workspace:*" + "@tanstack/solid-pacer-devtools": "workspace:*", + "@tanstack/react-pacer-devtools": "workspace:*" } } diff --git a/packages/pacer-react-devtools/eslint.config.js b/packages/react-pacer-devtools/eslint.config.js similarity index 100% rename from packages/pacer-react-devtools/eslint.config.js rename to packages/react-pacer-devtools/eslint.config.js diff --git a/packages/pacer-react-devtools/package.json b/packages/react-pacer-devtools/package.json similarity index 97% rename from packages/pacer-react-devtools/package.json rename to packages/react-pacer-devtools/package.json index 5d3e2f62..84bdf953 100644 --- a/packages/pacer-react-devtools/package.json +++ b/packages/react-pacer-devtools/package.json @@ -1,5 +1,5 @@ { - "name": "@tanstack/pacer-react-devtools", + "name": "@tanstack/react-pacer-devtools", "version": "0.14.0", "description": "React adapter for devtools for Pacer.", "author": "Tanner Linsley", diff --git a/packages/pacer-react-devtools/src/devtools.tsx b/packages/react-pacer-devtools/src/devtools.tsx similarity index 100% rename from packages/pacer-react-devtools/src/devtools.tsx rename to packages/react-pacer-devtools/src/devtools.tsx diff --git a/packages/pacer-react-devtools/src/index.ts b/packages/react-pacer-devtools/src/index.ts similarity index 100% rename from packages/pacer-react-devtools/src/index.ts rename to packages/react-pacer-devtools/src/index.ts diff --git a/packages/pacer-react-devtools/tests/index.test.ts b/packages/react-pacer-devtools/tests/index.test.ts similarity index 100% rename from packages/pacer-react-devtools/tests/index.test.ts rename to packages/react-pacer-devtools/tests/index.test.ts diff --git a/packages/pacer-react-devtools/tests/test-setup.ts b/packages/react-pacer-devtools/tests/test-setup.ts similarity index 100% rename from packages/pacer-react-devtools/tests/test-setup.ts rename to packages/react-pacer-devtools/tests/test-setup.ts diff --git a/packages/pacer-react-devtools/tsconfig.docs.json b/packages/react-pacer-devtools/tsconfig.docs.json similarity index 100% rename from packages/pacer-react-devtools/tsconfig.docs.json rename to packages/react-pacer-devtools/tsconfig.docs.json diff --git a/packages/pacer-react-devtools/tsconfig.json b/packages/react-pacer-devtools/tsconfig.json similarity index 100% rename from packages/pacer-react-devtools/tsconfig.json rename to packages/react-pacer-devtools/tsconfig.json diff --git a/packages/pacer-react-devtools/vite.config.ts b/packages/react-pacer-devtools/vite.config.ts similarity index 100% rename from packages/pacer-react-devtools/vite.config.ts rename to packages/react-pacer-devtools/vite.config.ts diff --git a/packages/pacer-solid-devtools/eslint.config.js b/packages/solid-pacer-devtools/eslint.config.js similarity index 100% rename from packages/pacer-solid-devtools/eslint.config.js rename to packages/solid-pacer-devtools/eslint.config.js diff --git a/packages/pacer-solid-devtools/package.json b/packages/solid-pacer-devtools/package.json similarity index 97% rename from packages/pacer-solid-devtools/package.json rename to packages/solid-pacer-devtools/package.json index d36b4058..0e2e1bea 100644 --- a/packages/pacer-solid-devtools/package.json +++ b/packages/solid-pacer-devtools/package.json @@ -1,5 +1,5 @@ { - "name": "@tanstack/pacer-solid-devtools", + "name": "@tanstack/solid-pacer-devtools", "version": "0.14.0", "description": "Solid adapter for devtools for Pacer.", "author": "Tanner Linsley", diff --git a/packages/pacer-solid-devtools/src/devtools.tsx b/packages/solid-pacer-devtools/src/devtools.tsx similarity index 100% rename from packages/pacer-solid-devtools/src/devtools.tsx rename to packages/solid-pacer-devtools/src/devtools.tsx diff --git a/packages/pacer-solid-devtools/src/index.ts b/packages/solid-pacer-devtools/src/index.ts similarity index 100% rename from packages/pacer-solid-devtools/src/index.ts rename to packages/solid-pacer-devtools/src/index.ts diff --git a/packages/pacer-solid-devtools/tests/index.test.ts b/packages/solid-pacer-devtools/tests/index.test.ts similarity index 100% rename from packages/pacer-solid-devtools/tests/index.test.ts rename to packages/solid-pacer-devtools/tests/index.test.ts diff --git a/packages/pacer-solid-devtools/tests/test-setup.ts b/packages/solid-pacer-devtools/tests/test-setup.ts similarity index 100% rename from packages/pacer-solid-devtools/tests/test-setup.ts rename to packages/solid-pacer-devtools/tests/test-setup.ts diff --git a/packages/pacer-solid-devtools/tsconfig.docs.json b/packages/solid-pacer-devtools/tsconfig.docs.json similarity index 100% rename from packages/pacer-solid-devtools/tsconfig.docs.json rename to packages/solid-pacer-devtools/tsconfig.docs.json diff --git a/packages/pacer-solid-devtools/tsconfig.json b/packages/solid-pacer-devtools/tsconfig.json similarity index 100% rename from packages/pacer-solid-devtools/tsconfig.json rename to packages/solid-pacer-devtools/tsconfig.json diff --git a/packages/pacer-solid-devtools/vite.config.ts b/packages/solid-pacer-devtools/vite.config.ts similarity index 100% rename from packages/pacer-solid-devtools/vite.config.ts rename to packages/solid-pacer-devtools/vite.config.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c43ed73e..1a6b6d82 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,9 +240,9 @@ importers: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) devDependencies: - '@tanstack/pacer-react-devtools': + '@tanstack/react-pacer-devtools': specifier: 0.14.0 - version: link:../../../packages/pacer-react-devtools + version: link:../../../packages/react-pacer-devtools '@tanstack/react-devtools': specifier: 0.2.2 version: 0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7) @@ -1132,9 +1132,9 @@ importers: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) devDependencies: - '@tanstack/pacer-react-devtools': + '@tanstack/react-pacer-devtools': specifier: 0.14.0 - version: link:../../../packages/pacer-react-devtools + version: link:../../../packages/react-pacer-devtools '@tanstack/react-devtools': specifier: 0.2.2 version: 0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7) @@ -1582,7 +1582,7 @@ importers: specifier: ^2.11.8 version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) - packages/pacer-react-devtools: + packages/react-pacer-devtools: dependencies: '@tanstack/pacer-devtools': specifier: workspace:* @@ -1613,7 +1613,7 @@ importers: specifier: ^5.2.0 version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) - packages/pacer-solid-devtools: + packages/solid-pacer-devtools: dependencies: '@tanstack/pacer-devtools': specifier: workspace:* From c145ad1a4926e7d282d68e3919d1669cdea4528b Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Tue, 12 Aug 2025 21:24:14 -0500 Subject: [PATCH 20/44] fix sherif --- examples/react/queue/package.json | 2 +- examples/react/util-comparison/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index 8a45b163..44fc3f25 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -14,8 +14,8 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-pacer-devtools": "0.14.0", "@tanstack/react-devtools": "0.2.2", + "@tanstack/react-pacer-devtools": "0.14.0", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^4.7.0", diff --git a/examples/react/util-comparison/package.json b/examples/react/util-comparison/package.json index c77f4da8..effb0af3 100644 --- a/examples/react/util-comparison/package.json +++ b/examples/react/util-comparison/package.json @@ -14,8 +14,8 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-pacer-devtools": "0.14.0", "@tanstack/react-devtools": "0.2.2", + "@tanstack/react-pacer-devtools": "0.14.0", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^4.7.0", From 548caf54052752cfae0e2704cf2d14e7c0d7f472 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 13 Aug 2025 00:17:38 -0500 Subject: [PATCH 21/44] separate left and right panels of devtools --- packages/pacer-devtools/src/devtools.tsx | 161 +++++++++++++----- .../pacer-devtools/src/styles/use-styles.ts | 143 +++++++++++++++- 2 files changed, 255 insertions(+), 49 deletions(-) diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx index bf2091c4..1eb594f8 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/devtools.tsx @@ -1,4 +1,4 @@ -import { For } from 'solid-js' +import { For, createSignal } from 'solid-js' import clsx from 'clsx' import { JsonTree } from '@tanstack/devtools-ui' import { usePacerState } from './context/use-context-hooks' @@ -17,61 +17,132 @@ type StateKey = | 'rateLimiterState' | 'throttlerState' -const CONTEXT_SECTIONS: Array<{ key: StateKey; label: string }> = [ - { key: 'asyncBatcherState', label: 'Async Batcher State' }, - { key: 'asyncDebouncerState', label: 'Async Debouncer State' }, - { key: 'asyncQueuerState', label: 'Async Queuer State' }, - { key: 'asyncRateLimiterState', label: 'Async Rate Limiter State' }, - { key: 'asyncThrottlerState', label: 'Async Throttler State' }, - { key: 'batcherState', label: 'Batcher State' }, - { key: 'debouncerState', label: 'Debouncer State' }, - { key: 'queuerState', label: 'Queuer State' }, - { key: 'rateLimiterState', label: 'Rate Limiter State' }, - { key: 'throttlerState', label: 'Throttler State' }, +type UtilGroup = { + key: StateKey + label: string + displayName: string +} + +const UTIL_GROUPS: Array = [ + { key: 'debouncerState', label: 'Debouncers', displayName: 'Debouncer' }, + { key: 'throttlerState', label: 'Throttlers', displayName: 'Throttler' }, + { key: 'batcherState', label: 'Batchers', displayName: 'Batcher' }, + { key: 'queuerState', label: 'Queuers', displayName: 'Queuer' }, + { + key: 'rateLimiterState', + label: 'Rate Limiters', + displayName: 'Rate Limiter', + }, + { + key: 'asyncDebouncerState', + label: 'Async Debouncers', + displayName: 'Async Debouncer', + }, + { + key: 'asyncThrottlerState', + label: 'Async Throttlers', + displayName: 'Async Throttler', + }, + { + key: 'asyncBatcherState', + label: 'Async Batchers', + displayName: 'Async Batcher', + }, + { + key: 'asyncQueuerState', + label: 'Async Queuers', + displayName: 'Async Queuer', + }, + { + key: 'asyncRateLimiterState', + label: 'Async Rate Limiters', + displayName: 'Async Rate Limiter', + }, ] -function Section({ key, label }: { key: StateKey; label: string }) { - const state = usePacerState() +function Shell() { const styles = useStyles() + const state = usePacerState() + const [selectedKey, setSelectedKey] = createSignal(null) - return ( - <> - {state[key].length === 0 ? null : ( -
-
{label}
-
- - {(inst) => } - -
-
- )} - - ) -} + // Find the selected instance + const selectedInstance = () => { + if (!selectedKey()) return null -function Shell() { - const styles = useStyles() + for (const group of UTIL_GROUPS) { + const instance = state[group.key].find( + (inst) => inst.key === selectedKey(), + ) + if (instance) return { ...instance, type: group.displayName } + } + return null + } return (
TanStack Pacer
-
- - {({ key, label }) =>
} - -
-
- ) -} - -function AnimatedInstanceCard(props: { value: any }) { - const styles = useStyles() +
+ {/* Left Panel - Util List */} +
+
Utils
+
+ + {(group) => ( + <> + {state[group.key].length > 0 && ( +
+
{group.label}
+ + {(instance) => ( +
setSelectedKey(instance.key)} + > +
{instance.key}
+
+ {instance.status} +
+
+ )} +
+
+ )} + + )} +
+
+
- return ( -
- + {/* Right Panel - State Details */} +
+
State Details
+
+ {(() => { + const instance = selectedInstance() + return instance !== null ? ( + <> +
+
{instance.type}
+
{instance.key}
+
+
+ +
+ + ) : ( +
+ Select a util from the left panel to view its state +
+ ) + })()} +
+
+
) } diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index 6587a7b9..1e74b5a5 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -13,15 +13,15 @@ const stylesFactory = () => { color: ${colors.gray[100]}; font-family: ${fontFamily.sans}; font-size: ${fontSize.md}; - min-height: 100%; + min-height: 100vh; padding: ${size[4]}; box-sizing: border-box; display: flex; flex-direction: column; gap: ${size[6]}; width: 100%; - height: 100%; - overflow-x: auto; + height: 100vh; + overflow: hidden; `, stickyHeader: css` position: sticky; @@ -32,12 +32,147 @@ const stylesFactory = () => { margin-bottom: ${size[2]}; font-size: ${fontSize.xl}; font-weight: ${font.weight.bold}; - color: ${colors.blue[400]}; + color: #84cc16; letter-spacing: 0.04em; text-transform: uppercase; border-bottom: 1px solid ${colors.darkGray[700]}; box-shadow: 0 2px 8px 0 ${colors.black + alpha[40]}; `, + mainContainer: css` + display: grid; + grid-template-columns: 1fr 1fr; + gap: ${size[4]}; + flex: 1; + min-height: 0; + overflow: hidden; + `, + leftPanel: css` + background: ${colors.darkGray[800]}; + border-radius: ${border.radius.lg}; + border: 1px solid ${colors.darkGray[700]}; + display: flex; + flex-direction: column; + overflow: hidden; + min-height: 0; + `, + rightPanel: css` + background: ${colors.darkGray[800]}; + border-radius: ${border.radius.lg}; + border: 1px solid ${colors.darkGray[700]}; + display: flex; + flex-direction: column; + overflow: hidden; + min-height: 0; + `, + panelHeader: css` + font-size: ${fontSize.lg}; + font-weight: ${font.weight.bold}; + color: ${colors.blue[400]}; + padding: ${size[4]}; + border-bottom: 1px solid ${colors.darkGray[700]}; + background: ${colors.darkGray[800]}; + `, + utilList: css` + flex: 1; + overflow-y: auto; + padding: ${size[2]}; + min-height: 0; + `, + utilGroup: css` + margin-bottom: ${size[4]}; + `, + utilGroupHeader: css` + font-size: ${fontSize.sm}; + font-weight: ${font.weight.semibold}; + color: ${colors.gray[400]}; + text-transform: uppercase; + letter-spacing: 0.05em; + margin-bottom: ${size[2]}; + padding: ${size[2]} ${size[3]}; + background: ${colors.darkGray[700]}; + border-radius: ${border.radius.md}; + `, + utilRow: css` + display: flex; + justify-content: space-between; + align-items: center; + padding: ${size[3]}; + margin-bottom: ${size[1]}; + background: ${colors.darkGray[700]}; + border-radius: ${border.radius.md}; + cursor: pointer; + transition: all 0.2s ease; + border: 1px solid transparent; + + &:hover { + background: ${colors.darkGray[600]}; + border-color: ${colors.darkGray[500]}; + } + `, + utilRowSelected: css` + background: ${colors.blue[900] + alpha[20]}; + border-color: ${colors.blue[500]}; + box-shadow: 0 0 0 1px ${colors.blue[500] + alpha[30]}; + `, + utilKey: css` + font-family: ${fontFamily.mono}; + font-size: ${fontSize.sm}; + color: ${colors.gray[100]}; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + `, + utilStatus: css` + font-size: ${fontSize.xs}; + color: ${colors.gray[400]}; + text-transform: uppercase; + letter-spacing: 0.05em; + padding: ${size[1]} ${size[2]}; + background: ${colors.darkGray[600]}; + border-radius: ${border.radius.sm}; + margin-left: ${size[2]}; + `, + stateDetails: css` + flex: 1; + overflow-y: auto; + padding: ${size[4]}; + min-height: 0; + `, + stateHeader: css` + margin-bottom: ${size[4]}; + padding-bottom: ${size[3]}; + border-bottom: 1px solid ${colors.darkGray[700]}; + `, + stateTitle: css` + font-size: ${fontSize.lg}; + font-weight: ${font.weight.bold}; + color: ${colors.blue[400]}; + margin-bottom: ${size[1]}; + `, + stateKey: css` + font-family: ${fontFamily.mono}; + font-size: ${fontSize.sm}; + color: ${colors.gray[400]}; + word-break: break-all; + `, + stateContent: css` + background: ${colors.darkGray[700]}; + border-radius: ${border.radius.md}; + padding: ${size[3]}; + border: 1px solid ${colors.darkGray[600]}; + `, + noSelection: css` + flex: 1; + display: flex; + align-items: center; + justify-content: center; + color: ${colors.gray[500]}; + font-style: italic; + text-align: center; + padding: ${size[8]}; + `, + // Keep existing styles for backward compatibility sectionContainer: css` display: flex; flex-wrap: wrap; From f1cee1c925de39ea8518e2dcb1ffe3fba23c034e Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 13 Aug 2025 08:57:51 -0500 Subject: [PATCH 22/44] denser ui --- examples/react/util-comparison/src/index.tsx | 5 ++ .../pacer-devtools/src/styles/use-styles.ts | 50 +++++++++---------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/examples/react/util-comparison/src/index.tsx b/examples/react/util-comparison/src/index.tsx index a47ef7f0..90beb74c 100644 --- a/examples/react/util-comparison/src/index.tsx +++ b/examples/react/util-comparison/src/index.tsx @@ -23,6 +23,7 @@ function ComparisonApp() { const debouncer = useDebouncer( setDebouncedValue, { + key: 'my-debouncer', wait: 600, }, (state) => state, @@ -31,6 +32,7 @@ function ComparisonApp() { const throttler = useThrottler( setThrottledValue, { + key: 'my-throttler', wait: 600, }, (state) => state, @@ -39,6 +41,7 @@ function ComparisonApp() { const rateLimiter = useRateLimiter( setRateLimitedValue, { + key: 'my-rate-limiter', limit: 20, window: 2000, windowType: 'sliding', @@ -49,6 +52,7 @@ function ComparisonApp() { const queuer = useQueuer( setQueuedValue, { + key: 'my-queuer', wait: 100, maxSize: 50, }, @@ -63,6 +67,7 @@ function ComparisonApp() { } }, { + key: 'my-batcher', wait: 600, maxSize: 5, }, diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index 1e74b5a5..3ca4ddca 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -12,13 +12,13 @@ const stylesFactory = () => { background: ${colors.darkGray[900]}; color: ${colors.gray[100]}; font-family: ${fontFamily.sans}; - font-size: ${fontSize.md}; + font-size: ${fontSize.sm}; min-height: 100vh; - padding: ${size[4]}; + padding: ${size[2]}; box-sizing: border-box; display: flex; flex-direction: column; - gap: ${size[6]}; + gap: ${size[3]}; width: 100%; height: 100vh; overflow: hidden; @@ -28,9 +28,9 @@ const stylesFactory = () => { top: 0; z-index: 10; background: ${colors.darkGray[900]}; - padding-bottom: ${size[3]}; - margin-bottom: ${size[2]}; - font-size: ${fontSize.xl}; + padding-bottom: ${size[2]}; + margin-bottom: ${size[1]}; + font-size: ${fontSize.lg}; font-weight: ${font.weight.bold}; color: #84cc16; letter-spacing: 0.04em; @@ -41,7 +41,7 @@ const stylesFactory = () => { mainContainer: css` display: grid; grid-template-columns: 1fr 1fr; - gap: ${size[4]}; + gap: ${size[2]}; flex: 1; min-height: 0; overflow: hidden; @@ -65,30 +65,30 @@ const stylesFactory = () => { min-height: 0; `, panelHeader: css` - font-size: ${fontSize.lg}; + font-size: ${fontSize.md}; font-weight: ${font.weight.bold}; color: ${colors.blue[400]}; - padding: ${size[4]}; + padding: ${size[2]}; border-bottom: 1px solid ${colors.darkGray[700]}; background: ${colors.darkGray[800]}; `, utilList: css` flex: 1; overflow-y: auto; - padding: ${size[2]}; + padding: ${size[1]}; min-height: 0; `, utilGroup: css` - margin-bottom: ${size[4]}; + margin-bottom: ${size[2]}; `, utilGroupHeader: css` - font-size: ${fontSize.sm}; + font-size: ${fontSize.xs}; font-weight: ${font.weight.semibold}; color: ${colors.gray[400]}; text-transform: uppercase; letter-spacing: 0.05em; - margin-bottom: ${size[2]}; - padding: ${size[2]} ${size[3]}; + margin-bottom: ${size[1]}; + padding: ${size[1]} ${size[2]}; background: ${colors.darkGray[700]}; border-radius: ${border.radius.md}; `, @@ -96,7 +96,7 @@ const stylesFactory = () => { display: flex; justify-content: space-between; align-items: center; - padding: ${size[3]}; + padding: ${size[2]}; margin-bottom: ${size[1]}; background: ${colors.darkGray[700]}; border-radius: ${border.radius.md}; @@ -116,7 +116,7 @@ const stylesFactory = () => { `, utilKey: css` font-family: ${fontFamily.mono}; - font-size: ${fontSize.sm}; + font-size: ${fontSize.xs}; color: ${colors.gray[100]}; flex: 1; overflow: hidden; @@ -128,38 +128,38 @@ const stylesFactory = () => { color: ${colors.gray[400]}; text-transform: uppercase; letter-spacing: 0.05em; - padding: ${size[1]} ${size[2]}; + padding: ${size[1]} ${size[1]}; background: ${colors.darkGray[600]}; border-radius: ${border.radius.sm}; - margin-left: ${size[2]}; + margin-left: ${size[1]}; `, stateDetails: css` flex: 1; overflow-y: auto; - padding: ${size[4]}; + padding: ${size[2]}; min-height: 0; `, stateHeader: css` - margin-bottom: ${size[4]}; - padding-bottom: ${size[3]}; + margin-bottom: ${size[2]}; + padding-bottom: ${size[2]}; border-bottom: 1px solid ${colors.darkGray[700]}; `, stateTitle: css` - font-size: ${fontSize.lg}; + font-size: ${fontSize.md}; font-weight: ${font.weight.bold}; color: ${colors.blue[400]}; margin-bottom: ${size[1]}; `, stateKey: css` font-family: ${fontFamily.mono}; - font-size: ${fontSize.sm}; + font-size: ${fontSize.xs}; color: ${colors.gray[400]}; word-break: break-all; `, stateContent: css` background: ${colors.darkGray[700]}; border-radius: ${border.radius.md}; - padding: ${size[3]}; + padding: ${size[2]}; border: 1px solid ${colors.darkGray[600]}; `, noSelection: css` @@ -170,7 +170,7 @@ const stylesFactory = () => { color: ${colors.gray[500]}; font-style: italic; text-align: center; - padding: ${size[8]}; + padding: ${size[4]}; `, // Keep existing styles for backward compatibility sectionContainer: css` From 57966f65d4eecf7656997e424bc5c882d1fa9f2f Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 13 Aug 2025 12:47:23 -0500 Subject: [PATCH 23/44] better right panel, emit entire instance --- docs/reference/classes/asyncbatcher.md | 12 +- docs/reference/classes/asyncdebouncer.md | 8 +- docs/reference/classes/asyncqueuer.md | 26 ++-- docs/reference/classes/asyncratelimiter.md | 8 +- docs/reference/classes/asyncthrottler.md | 8 +- docs/reference/classes/batcher.md | 10 +- docs/reference/classes/debouncer.md | 8 +- docs/reference/classes/queuer.md | 22 +-- docs/reference/classes/ratelimiter.md | 8 +- docs/reference/classes/throttler.md | 8 +- docs/reference/functions/asyncbatch.md | 2 +- docs/reference/functions/asyncdebounce.md | 2 +- docs/reference/functions/asyncqueue.md | 2 +- docs/reference/functions/asyncratelimit.md | 2 +- docs/reference/functions/asyncthrottle.md | 2 +- docs/reference/functions/batch.md | 2 +- docs/reference/functions/debounce.md | 2 +- docs/reference/functions/queue.md | 2 +- docs/reference/functions/ratelimit.md | 2 +- docs/reference/functions/throttle.md | 2 +- docs/reference/interfaces/pacereventmap.md | 62 ++++---- docs/reference/variables/pacereventclient.md | 2 +- .../src/context/context-provider.tsx | 134 ++++++++++++------ .../pacer-devtools/src/context/context.ts | 64 ++++----- packages/pacer-devtools/src/devtools.tsx | 116 +++++++++------ .../pacer-devtools/src/styles/use-styles.ts | 39 +++++ packages/pacer/src/async-batcher.ts | 10 +- packages/pacer/src/async-debouncer.ts | 10 +- packages/pacer/src/async-queuer.ts | 11 +- packages/pacer/src/async-rate-limiter.ts | 10 +- packages/pacer/src/async-throttler.ts | 10 +- packages/pacer/src/batcher.ts | 11 +- packages/pacer/src/debouncer.ts | 10 +- packages/pacer/src/event-client.ts | 44 +++--- packages/pacer/src/queuer.ts | 11 +- packages/pacer/src/rate-limiter.ts | 10 +- packages/pacer/src/throttler.ts | 10 +- 37 files changed, 392 insertions(+), 310 deletions(-) diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index 4b48729f..26dd779a 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -156,7 +156,7 @@ Defined in: [async-batcher.ts:231](https://github.com/TanStack/pacer/blob/main/p addItem(item): void ``` -Defined in: [async-batcher.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L295) +Defined in: [async-batcher.ts:291](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L291) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -179,7 +179,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [async-batcher.ts:396](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L396) +Defined in: [async-batcher.ts:392](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L392) Removes all items from the async batcher @@ -195,7 +195,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [async-batcher.ts:370](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L370) +Defined in: [async-batcher.ts:366](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L366) Processes the current batch of items immediately @@ -211,7 +211,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L378) +Defined in: [async-batcher.ts:374](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L374) Returns a copy of all items in the async batcher @@ -227,7 +227,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [async-batcher.ts:382](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L382) +Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L378) #### Returns @@ -241,7 +241,7 @@ Defined in: [async-batcher.ts:382](https://github.com/TanStack/pacer/blob/main/p reset(): void ``` -Defined in: [async-batcher.ts:403](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L403) +Defined in: [async-batcher.ts:399](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L399) Resets the async batcher state to its default values diff --git a/docs/reference/classes/asyncdebouncer.md b/docs/reference/classes/asyncdebouncer.md index 8f02da69..d82364e0 100644 --- a/docs/reference/classes/asyncdebouncer.md +++ b/docs/reference/classes/asyncdebouncer.md @@ -130,7 +130,7 @@ Defined in: [async-debouncer.ts:184](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-debouncer.ts:400](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L400) +Defined in: [async-debouncer.ts:396](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L396) Cancels any pending execution or aborts any execution in progress @@ -146,7 +146,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-debouncer.ts:352](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L352) +Defined in: [async-debouncer.ts:348](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L348) Processes the current pending execution immediately @@ -162,7 +162,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-debouncer.ts:275](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L275) +Defined in: [async-debouncer.ts:271](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L271) Attempts to execute the debounced function. If a call is already in progress, it will be queued. @@ -198,7 +198,7 @@ The error from the debounced function if no onError handler is configured reset(): void ``` -Defined in: [async-debouncer.ts:409](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L409) +Defined in: [async-debouncer.ts:405](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L405) Resets the debouncer state to its default values diff --git a/docs/reference/classes/asyncqueuer.md b/docs/reference/classes/asyncqueuer.md index b09e92ac..603b5f90 100644 --- a/docs/reference/classes/asyncqueuer.md +++ b/docs/reference/classes/asyncqueuer.md @@ -148,7 +148,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [async-queuer.ts:413](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L413) +Defined in: [async-queuer.ts:410](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L410) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -186,7 +186,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [async-queuer.ts:717](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L717) +Defined in: [async-queuer.ts:714](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L714) Removes all pending items from the queue. Does not affect active tasks. @@ -202,7 +202,7 @@ Removes all pending items from the queue. Does not affect active tasks. execute(position?): Promise ``` -Defined in: [async-queuer.ts:539](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L539) +Defined in: [async-queuer.ts:536](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L536) Removes and returns the next item from the queue and executes the task function with it. @@ -232,7 +232,7 @@ queuer.execute('back'); flush(numberOfItems, position?): Promise ``` -Defined in: [async-queuer.ts:574](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L574) +Defined in: [async-queuer.ts:571](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L571) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -259,7 +259,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): Promise ``` -Defined in: [async-queuer.ts:588](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L588) +Defined in: [async-queuer.ts:585](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L585) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -282,7 +282,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:492](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L492) +Defined in: [async-queuer.ts:489](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L489) Removes and returns the next item from the queue without executing the task function. Use for manual queue management. Normally, use execute() to process items. @@ -314,7 +314,7 @@ queuer.getNextItem('back'); peekActiveItems(): TValue[] ``` -Defined in: [async-queuer.ts:680](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L680) +Defined in: [async-queuer.ts:677](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L677) Returns the items currently being processed (active tasks). @@ -330,7 +330,7 @@ Returns the items currently being processed (active tasks). peekAllItems(): TValue[] ``` -Defined in: [async-queuer.ts:673](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L673) +Defined in: [async-queuer.ts:670](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L670) Returns a copy of all items in the queue, including active and pending items. @@ -346,7 +346,7 @@ Returns a copy of all items in the queue, including active and pending items. peekNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:663](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L663) +Defined in: [async-queuer.ts:660](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L660) Returns the next item in the queue without removing it. @@ -375,7 +375,7 @@ queuer.peekNextItem('back'); // back peekPendingItems(): TValue[] ``` -Defined in: [async-queuer.ts:687](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L687) +Defined in: [async-queuer.ts:684](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L684) Returns the items waiting to be processed (pending tasks). @@ -391,7 +391,7 @@ Returns the items waiting to be processed (pending tasks). reset(): void ``` -Defined in: [async-queuer.ts:725](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L725) +Defined in: [async-queuer.ts:722](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L722) Resets the queuer state to its default values @@ -429,7 +429,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [async-queuer.ts:694](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L694) +Defined in: [async-queuer.ts:691](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L691) Starts processing items in the queue. If already running, does nothing. @@ -445,7 +445,7 @@ Starts processing items in the queue. If already running, does nothing. stop(): void ``` -Defined in: [async-queuer.ts:704](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L704) +Defined in: [async-queuer.ts:701](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L701) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index 25fb0833..9e5ffbd7 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -151,7 +151,7 @@ Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/m getMsUntilNextWindow(): number ``` -Defined in: [async-rate-limiter.ts:446](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L446) +Defined in: [async-rate-limiter.ts:442](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L442) Returns the number of milliseconds until the next execution will be possible For fixed windows, this is the time until the current window resets @@ -169,7 +169,7 @@ For sliding windows, this is the time until the oldest execution expires getRemainingInWindow(): number ``` -Defined in: [async-rate-limiter.ts:436](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L436) +Defined in: [async-rate-limiter.ts:432](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L432) Returns the number of remaining executions allowed in the current window @@ -185,7 +185,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [async-rate-limiter.ts:315](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L315) +Defined in: [async-rate-limiter.ts:311](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L311) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -233,7 +233,7 @@ const result2 = await rateLimiter.maybeExecute('arg1', 'arg2'); // undefined reset(): void ``` -Defined in: [async-rate-limiter.ts:457](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L457) +Defined in: [async-rate-limiter.ts:453](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L453) Resets the rate limiter state diff --git a/docs/reference/classes/asyncthrottler.md b/docs/reference/classes/asyncthrottler.md index bde56b7a..c9326469 100644 --- a/docs/reference/classes/asyncthrottler.md +++ b/docs/reference/classes/asyncthrottler.md @@ -133,7 +133,7 @@ Defined in: [async-throttler.ts:195](https://github.com/TanStack/pacer/blob/main cancel(): void ``` -Defined in: [async-throttler.ts:435](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L435) +Defined in: [async-throttler.ts:431](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L431) Cancels any pending execution or aborts any execution in progress @@ -149,7 +149,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-throttler.ts:384](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L384) +Defined in: [async-throttler.ts:380](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L380) Processes the current pending execution immediately @@ -165,7 +165,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-throttler.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L294) +Defined in: [async-throttler.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L290) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -207,7 +207,7 @@ await throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [async-throttler.ts:443](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L443) +Defined in: [async-throttler.ts:439](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L439) Resets the debouncer state to its default values diff --git a/docs/reference/classes/batcher.md b/docs/reference/classes/batcher.md index eb2d2192..0f6d2ddd 100644 --- a/docs/reference/classes/batcher.md +++ b/docs/reference/classes/batcher.md @@ -133,7 +133,7 @@ Defined in: [batcher.ts:145](https://github.com/TanStack/pacer/blob/main/package addItem(item): void ``` -Defined in: [batcher.ts:203](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L203) +Defined in: [batcher.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L198) Adds an item to the batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -156,7 +156,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [batcher.ts:273](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L273) +Defined in: [batcher.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L268) Removes all items from the batcher @@ -172,7 +172,7 @@ Removes all items from the batcher flush(): void ``` -Defined in: [batcher.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L251) +Defined in: [batcher.ts:246](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L246) Processes the current batch of items immediately @@ -188,7 +188,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [batcher.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L259) +Defined in: [batcher.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L254) Returns a copy of all items in the batcher @@ -204,7 +204,7 @@ Returns a copy of all items in the batcher reset(): void ``` -Defined in: [batcher.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L280) +Defined in: [batcher.ts:275](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L275) Resets the batcher state to its default values diff --git a/docs/reference/classes/debouncer.md b/docs/reference/classes/debouncer.md index c9e72648..f46cc32b 100644 --- a/docs/reference/classes/debouncer.md +++ b/docs/reference/classes/debouncer.md @@ -116,7 +116,7 @@ Defined in: [debouncer.ts:125](https://github.com/TanStack/pacer/blob/main/packa cancel(): void ``` -Defined in: [debouncer.ts:256](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L256) +Defined in: [debouncer.ts:252](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L252) Cancels any pending execution @@ -132,7 +132,7 @@ Cancels any pending execution flush(): void ``` -Defined in: [debouncer.ts:239](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L239) +Defined in: [debouncer.ts:235](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L235) Processes the current pending execution immediately @@ -148,7 +148,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [debouncer.ts:197](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L197) +Defined in: [debouncer.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L193) Attempts to execute the debounced function If a call is already in progress, it will be queued @@ -171,7 +171,7 @@ If a call is already in progress, it will be queued reset(): void ``` -Defined in: [debouncer.ts:267](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L267) +Defined in: [debouncer.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L263) Resets the debouncer state to its default values diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index d91917fa..e97b616f 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -169,7 +169,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [queuer.ts:377](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L377) +Defined in: [queuer.ts:374](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L374) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -208,7 +208,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [queuer.ts:650](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L650) +Defined in: [queuer.ts:647](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L647) Removes all pending items from the queue. Does not affect items being processed. @@ -224,7 +224,7 @@ Removes all pending items from the queue. Does not affect items being processed. execute(position?): undefined | TValue ``` -Defined in: [queuer.ts:504](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L504) +Defined in: [queuer.ts:501](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L501) Removes and returns the next item from the queue and processes it using the provided function. @@ -253,7 +253,7 @@ queuer.execute('back'); flush(numberOfItems, position?): void ``` -Defined in: [queuer.ts:520](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L520) +Defined in: [queuer.ts:517](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L517) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -280,7 +280,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [queuer.ts:535](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L535) +Defined in: [queuer.ts:532](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L532) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -303,7 +303,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:457](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L457) +Defined in: [queuer.ts:454](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L454) Removes and returns the next item from the queue without executing the function. Use for manual queue management. Normally, use execute() to process items. @@ -334,7 +334,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [queuer.ts:618](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L618) +Defined in: [queuer.ts:615](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L615) Returns a copy of all items in the queue. @@ -350,7 +350,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:608](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L608) +Defined in: [queuer.ts:605](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L605) Returns the next item in the queue without removing it. @@ -378,7 +378,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [queuer.ts:658](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L658) +Defined in: [queuer.ts:655](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L655) Resets the queuer state to its default values @@ -416,7 +416,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [queuer.ts:625](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L625) +Defined in: [queuer.ts:622](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L622) Starts processing items in the queue. If already isRunning, does nothing. @@ -432,7 +432,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [queuer.ts:635](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L635) +Defined in: [queuer.ts:632](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L632) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/ratelimiter.md b/docs/reference/classes/ratelimiter.md index 7978bff2..84126c23 100644 --- a/docs/reference/classes/ratelimiter.md +++ b/docs/reference/classes/ratelimiter.md @@ -129,7 +129,7 @@ Defined in: [rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/pa getMsUntilNextWindow(): number ``` -Defined in: [rate-limiter.ts:330](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L330) +Defined in: [rate-limiter.ts:326](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L326) Returns the number of milliseconds until the next execution will be possible @@ -145,7 +145,7 @@ Returns the number of milliseconds until the next execution will be possible getRemainingInWindow(): number ``` -Defined in: [rate-limiter.ts:322](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L322) +Defined in: [rate-limiter.ts:318](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L318) Returns the number of remaining executions allowed in the current window @@ -161,7 +161,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): boolean ``` -Defined in: [rate-limiter.ts:228](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L228) +Defined in: [rate-limiter.ts:224](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L224) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -196,7 +196,7 @@ rateLimiter.maybeExecute('arg1', 'arg2'); // false reset(): void ``` -Defined in: [rate-limiter.ts:341](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L341) +Defined in: [rate-limiter.ts:337](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L337) Resets the rate limiter state diff --git a/docs/reference/classes/throttler.md b/docs/reference/classes/throttler.md index c14faaab..b4792751 100644 --- a/docs/reference/classes/throttler.md +++ b/docs/reference/classes/throttler.md @@ -120,7 +120,7 @@ Defined in: [throttler.ts:133](https://github.com/TanStack/pacer/blob/main/packa cancel(): void ``` -Defined in: [throttler.ts:294](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L294) +Defined in: [throttler.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L290) Cancels any pending trailing execution and clears internal state. @@ -142,7 +142,7 @@ Has no effect if there is no pending execution. flush(): void ``` -Defined in: [throttler.ts:272](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L272) +Defined in: [throttler.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L268) Processes the current pending execution immediately @@ -158,7 +158,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [throttler.ts:217](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L217) +Defined in: [throttler.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L213) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -200,7 +200,7 @@ throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [throttler.ts:305](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L305) +Defined in: [throttler.ts:301](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L301) Resets the throttler state to its default values diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index 2652703f..ad096c15 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -11,7 +11,7 @@ title: asyncBatch function asyncBatch(fn, options): (item) => void ``` -Defined in: [async-batcher.ts:458](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L458) +Defined in: [async-batcher.ts:454](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L454) Creates an async batcher that processes items in batches diff --git a/docs/reference/functions/asyncdebounce.md b/docs/reference/functions/asyncdebounce.md index b77db41f..f0f8a98e 100644 --- a/docs/reference/functions/asyncdebounce.md +++ b/docs/reference/functions/asyncdebounce.md @@ -11,7 +11,7 @@ title: asyncDebounce function asyncDebounce(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-debouncer.ts:458](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L458) +Defined in: [async-debouncer.ts:454](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L454) Creates an async debounced function that delays execution until after a specified wait time. The debounced function will only execute once the wait period has elapsed without any new calls. diff --git a/docs/reference/functions/asyncqueue.md b/docs/reference/functions/asyncqueue.md index ed0e47d2..ba6b1a8e 100644 --- a/docs/reference/functions/asyncqueue.md +++ b/docs/reference/functions/asyncqueue.md @@ -11,7 +11,7 @@ title: asyncQueue function asyncQueue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [async-queuer.ts:764](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L764) +Defined in: [async-queuer.ts:761](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L761) Creates a new AsyncQueuer instance and returns a bound addItem function for adding tasks. The queuer is started automatically and ready to process items. diff --git a/docs/reference/functions/asyncratelimit.md b/docs/reference/functions/asyncratelimit.md index 752c47c4..bca39308 100644 --- a/docs/reference/functions/asyncratelimit.md +++ b/docs/reference/functions/asyncratelimit.md @@ -11,7 +11,7 @@ title: asyncRateLimit function asyncRateLimit(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-rate-limiter.ts:528](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L528) +Defined in: [async-rate-limiter.ts:524](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L524) Creates an async rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/asyncthrottle.md b/docs/reference/functions/asyncthrottle.md index e228b36f..54d9e24d 100644 --- a/docs/reference/functions/asyncthrottle.md +++ b/docs/reference/functions/asyncthrottle.md @@ -11,7 +11,7 @@ title: asyncThrottle function asyncThrottle(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-throttler.ts:491](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L491) +Defined in: [async-throttler.ts:487](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L487) Creates an async throttled function that limits how often the function can execute. The throttled function will execute at most once per wait period, even if called multiple times. diff --git a/docs/reference/functions/batch.md b/docs/reference/functions/batch.md index 26b75d6d..fb10894c 100644 --- a/docs/reference/functions/batch.md +++ b/docs/reference/functions/batch.md @@ -11,7 +11,7 @@ title: batch function batch(fn, options): (item) => void ``` -Defined in: [batcher.ts:304](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L304) +Defined in: [batcher.ts:299](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L299) Creates a batcher that processes items in batches diff --git a/docs/reference/functions/debounce.md b/docs/reference/functions/debounce.md index e1c8a667..f1cd1af5 100644 --- a/docs/reference/functions/debounce.md +++ b/docs/reference/functions/debounce.md @@ -11,7 +11,7 @@ title: debounce function debounce(fn, initialOptions): (...args) => void ``` -Defined in: [debouncer.ts:300](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L300) +Defined in: [debouncer.ts:296](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L296) Creates a debounced function that delays invoking the provided function until after a specified wait time. Multiple calls during the wait period will cancel previous pending invocations and reset the timer. diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 39c142a2..7b4c8d9f 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [queuer.ts:701](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L701) +Defined in: [queuer.ts:698](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L698) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. diff --git a/docs/reference/functions/ratelimit.md b/docs/reference/functions/ratelimit.md index fa1b658e..a7fe3b80 100644 --- a/docs/reference/functions/ratelimit.md +++ b/docs/reference/functions/ratelimit.md @@ -11,7 +11,7 @@ title: rateLimit function rateLimit(fn, initialOptions): (...args) => boolean ``` -Defined in: [rate-limiter.ts:393](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L393) +Defined in: [rate-limiter.ts:389](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L389) Creates a rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/throttle.md b/docs/reference/functions/throttle.md index bad5a296..4958ebd2 100644 --- a/docs/reference/functions/throttle.md +++ b/docs/reference/functions/throttle.md @@ -11,7 +11,7 @@ title: throttle function throttle(fn, initialOptions): (...args) => void ``` -Defined in: [throttler.ts:344](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L344) +Defined in: [throttler.ts:340](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L340) Creates a throttled function that limits how often the provided function can execute. diff --git a/docs/reference/interfaces/pacereventmap.md b/docs/reference/interfaces/pacereventmap.md index 5d5a7807..81236178 100644 --- a/docs/reference/interfaces/pacereventmap.md +++ b/docs/reference/interfaces/pacereventmap.md @@ -7,104 +7,104 @@ title: PacerEventMap # Interface: PacerEventMap -Defined in: [event-client.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L15) +Defined in: [event-client.ts:13](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L13) ## Properties -### pacer:async-batcher-state +### pacer:async-batcher ```ts -pacer:async-batcher-state: WithKey>; +pacer:async-batcher: AsyncBatcher; ``` -Defined in: [event-client.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L16) +Defined in: [event-client.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L14) *** -### pacer:async-debouncer-state +### pacer:async-debouncer ```ts -pacer:async-debouncer-state: WithKey>; +pacer:async-debouncer: AsyncDebouncer; ``` -Defined in: [event-client.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L17) +Defined in: [event-client.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L15) *** -### pacer:async-queuer-state +### pacer:async-queuer ```ts -pacer:async-queuer-state: WithKey>; +pacer:async-queuer: AsyncQueuer; ``` -Defined in: [event-client.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L18) +Defined in: [event-client.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L16) *** -### pacer:async-rate-limiter-state +### pacer:async-rate-limiter ```ts -pacer:async-rate-limiter-state: WithKey>; +pacer:async-rate-limiter: AsyncRateLimiter; ``` -Defined in: [event-client.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L19) +Defined in: [event-client.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L17) *** -### pacer:async-throttler-state +### pacer:async-throttler ```ts -pacer:async-throttler-state: WithKey>; +pacer:async-throttler: AsyncThrottler; ``` -Defined in: [event-client.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L20) +Defined in: [event-client.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L18) *** -### pacer:batcher-state +### pacer:batcher ```ts -pacer:batcher-state: WithKey>; +pacer:batcher: Batcher; ``` -Defined in: [event-client.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L21) +Defined in: [event-client.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L19) *** -### pacer:debouncer-state +### pacer:debouncer ```ts -pacer:debouncer-state: WithKey>; +pacer:debouncer: Debouncer; ``` -Defined in: [event-client.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L22) +Defined in: [event-client.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L20) *** -### pacer:queuer-state +### pacer:queuer ```ts -pacer:queuer-state: WithKey>; +pacer:queuer: Queuer; ``` -Defined in: [event-client.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L23) +Defined in: [event-client.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L21) *** -### pacer:rate-limiter-state +### pacer:rate-limiter ```ts -pacer:rate-limiter-state: WithKey; +pacer:rate-limiter: RateLimiter; ``` -Defined in: [event-client.ts:24](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L24) +Defined in: [event-client.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L22) *** -### pacer:throttler-state +### pacer:throttler ```ts -pacer:throttler-state: WithKey>; +pacer:throttler: Throttler; ``` -Defined in: [event-client.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L25) +Defined in: [event-client.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L23) diff --git a/docs/reference/variables/pacereventclient.md b/docs/reference/variables/pacereventclient.md index 4f3957d1..0f01f688 100644 --- a/docs/reference/variables/pacereventclient.md +++ b/docs/reference/variables/pacereventclient.md @@ -11,4 +11,4 @@ title: pacerEventClient const pacerEventClient: PacerEventClient; ``` -Defined in: [event-client.ts:51](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L51) +Defined in: [event-client.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L49) diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/context/context-provider.tsx index 08e07df8..dccc670f 100644 --- a/packages/pacer-devtools/src/context/context-provider.tsx +++ b/packages/pacer-devtools/src/context/context-provider.tsx @@ -21,68 +21,116 @@ export function PacerContextProvider(props: { children: any }) { const [store, setStore] = createStore(initialStore) createEffect(() => { - const cleanup = pacerEventClient.onAllPluginEvents((e) => { + const cleanup = pacerEventClient.onAllPluginEvents((_e) => { + const e = _e as unknown as { type: string; payload: any } switch (e.type) { - case 'pacer:async-batcher-state': { - const newItems = updateOrAddToArray( - store.asyncBatcherState, - e.payload, - ) - setStore({ asyncBatcherState: newItems }) + case 'pacer:async-batcher': { + setStore({ + asyncBatchers: updateOrAddToArray(store.asyncBatchers, e.payload), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:async-debouncer-state': { - const newItems = updateOrAddToArray( - store.asyncDebouncerState, - e.payload, - ) - setStore({ asyncDebouncerState: newItems }) + case 'pacer:async-debouncer': { + setStore({ + asyncDebouncers: updateOrAddToArray( + store.asyncDebouncers, + e.payload, + ), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:async-queuer-state': { - const newItems = updateOrAddToArray(store.asyncQueuerState, e.payload) - setStore({ asyncQueuerState: newItems }) + case 'pacer:async-queuer': { + setStore({ + asyncQueuers: updateOrAddToArray(store.asyncQueuers, e.payload), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:async-rate-limiter-state': { - const newItems = updateOrAddToArray( - store.asyncRateLimiterState, - e.payload, - ) - setStore({ asyncRateLimiterState: newItems }) + case 'pacer:async-rate-limiter': { + setStore({ + asyncRateLimiters: updateOrAddToArray( + store.asyncRateLimiters, + e.payload, + ), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:async-throttler-state': { - const newItems = updateOrAddToArray( - store.asyncThrottlerState, - e.payload, - ) - setStore({ asyncThrottlerState: newItems }) + case 'pacer:async-throttler': { + setStore({ + asyncThrottlers: updateOrAddToArray( + store.asyncThrottlers, + e.payload, + ), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:batcher-state': { - const newItems = updateOrAddToArray(store.batcherState, e.payload) - setStore({ batcherState: newItems }) + case 'pacer:batcher': { + setStore({ + batchers: updateOrAddToArray(store.batchers, e.payload), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:debouncer-state': { - const newItems = updateOrAddToArray(store.debouncerState, e.payload) - setStore({ debouncerState: newItems }) + case 'pacer:debouncer': { + setStore({ + debouncers: updateOrAddToArray(store.debouncers, e.payload), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:queuer-state': { - const newItems = updateOrAddToArray(store.queuerState, e.payload) - setStore({ queuerState: newItems }) + case 'pacer:queuer': { + setStore({ + queuers: updateOrAddToArray(store.queuers, e.payload), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:rate-limiter-state': { - const newItems = updateOrAddToArray(store.rateLimiterState, e.payload) - setStore({ rateLimiterState: newItems }) + case 'pacer:rate-limiter': { + setStore({ + rateLimiters: updateOrAddToArray(store.rateLimiters, e.payload), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } - case 'pacer:throttler-state': { - const newItems = updateOrAddToArray(store.throttlerState, e.payload) - setStore({ throttlerState: newItems }) + case 'pacer:throttler': { + setStore({ + throttlers: updateOrAddToArray(store.throttlers, e.payload), + lastUpdatedByKey: { + ...store.lastUpdatedByKey, + [e.payload.key]: Date.now(), + }, + }) break } } diff --git a/packages/pacer-devtools/src/context/context.ts b/packages/pacer-devtools/src/context/context.ts index 4ed31433..e1b74e65 100644 --- a/packages/pacer-devtools/src/context/context.ts +++ b/packages/pacer-devtools/src/context/context.ts @@ -1,43 +1,43 @@ import { createContext } from 'solid-js' import type { - AsyncBatcherState, - AsyncDebouncerState, - AsyncQueuerState, - AsyncRateLimiterState, - AsyncThrottlerState, - BatcherState, - DebouncerState, - QueuerState, - RateLimiterState, - ThrottlerState, + AsyncBatcher, + AsyncDebouncer, + AsyncQueuer, + AsyncRateLimiter, + AsyncThrottler, + Batcher, + Debouncer, + Queuer, + RateLimiter, + Throttler, } from '@tanstack/pacer' -type WithKey = T & { key: string } - export interface PacerContextType { - asyncBatcherState: Array>> - asyncDebouncerState: Array>> - asyncQueuerState: Array>> - asyncRateLimiterState: Array>> - asyncThrottlerState: Array>> - batcherState: Array>> - debouncerState: Array>> - queuerState: Array>> - rateLimiterState: Array> - throttlerState: Array>> + asyncBatchers: Array> + asyncDebouncers: Array> + asyncQueuers: Array> + asyncRateLimiters: Array> + asyncThrottlers: Array> + batchers: Array> + debouncers: Array> + queuers: Array> + rateLimiters: Array> + throttlers: Array> + lastUpdatedByKey: Record } export const initialStore = { - asyncBatcherState: [], - asyncDebouncerState: [], - asyncQueuerState: [], - asyncRateLimiterState: [], - asyncThrottlerState: [], - batcherState: [], - debouncerState: [], - queuerState: [], - rateLimiterState: [], - throttlerState: [], + asyncBatchers: [], + asyncDebouncers: [], + asyncQueuers: [], + asyncRateLimiters: [], + asyncThrottlers: [], + batchers: [], + debouncers: [], + queuers: [], + rateLimiters: [], + throttlers: [], + lastUpdatedByKey: {}, } export const PacerContext = createContext< diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/devtools.tsx index 1eb594f8..c5220ebb 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/devtools.tsx @@ -1,4 +1,4 @@ -import { For, createSignal } from 'solid-js' +import { For, createMemo, createSignal } from 'solid-js' import clsx from 'clsx' import { JsonTree } from '@tanstack/devtools-ui' import { usePacerState } from './context/use-context-hooks' @@ -6,16 +6,16 @@ import { PacerContextProvider } from './context/context-provider' import { useStyles } from './styles/use-styles' type StateKey = - | 'asyncBatcherState' - | 'asyncDebouncerState' - | 'asyncQueuerState' - | 'asyncRateLimiterState' - | 'asyncThrottlerState' - | 'batcherState' - | 'debouncerState' - | 'queuerState' - | 'rateLimiterState' - | 'throttlerState' + | 'asyncBatchers' + | 'asyncDebouncers' + | 'asyncQueuers' + | 'asyncRateLimiters' + | 'asyncThrottlers' + | 'batchers' + | 'debouncers' + | 'queuers' + | 'rateLimiters' + | 'throttlers' type UtilGroup = { key: StateKey @@ -24,37 +24,37 @@ type UtilGroup = { } const UTIL_GROUPS: Array = [ - { key: 'debouncerState', label: 'Debouncers', displayName: 'Debouncer' }, - { key: 'throttlerState', label: 'Throttlers', displayName: 'Throttler' }, - { key: 'batcherState', label: 'Batchers', displayName: 'Batcher' }, - { key: 'queuerState', label: 'Queuers', displayName: 'Queuer' }, + { key: 'debouncers', label: 'Debouncers', displayName: 'Debouncer' }, + { key: 'throttlers', label: 'Throttlers', displayName: 'Throttler' }, + { key: 'batchers', label: 'Batchers', displayName: 'Batcher' }, + { key: 'queuers', label: 'Queuers', displayName: 'Queuer' }, { - key: 'rateLimiterState', + key: 'rateLimiters', label: 'Rate Limiters', displayName: 'Rate Limiter', }, { - key: 'asyncDebouncerState', + key: 'asyncDebouncers', label: 'Async Debouncers', displayName: 'Async Debouncer', }, { - key: 'asyncThrottlerState', + key: 'asyncThrottlers', label: 'Async Throttlers', displayName: 'Async Throttler', }, { - key: 'asyncBatcherState', + key: 'asyncBatchers', label: 'Async Batchers', displayName: 'Async Batcher', }, { - key: 'asyncQueuerState', + key: 'asyncQueuers', label: 'Async Queuers', displayName: 'Async Queuer', }, { - key: 'asyncRateLimiterState', + key: 'asyncRateLimiters', label: 'Async Rate Limiters', displayName: 'Async Rate Limiter', }, @@ -64,18 +64,26 @@ function Shell() { const styles = useStyles() const state = usePacerState() const [selectedKey, setSelectedKey] = createSignal(null) + const getGroupItems = (key: StateKey) => + (state as unknown as Record>)[key] // Find the selected instance - const selectedInstance = () => { - if (!selectedKey()) return null - + const selectedInstance = createMemo(() => { + const key = selectedKey() + if (!key) return null for (const group of UTIL_GROUPS) { - const instance = state[group.key].find( - (inst) => inst.key === selectedKey(), - ) - if (instance) return { ...instance, type: group.displayName } + const instance = getGroupItems(group.key).find((inst) => inst.key === key) + if (instance) return { instance, type: group.displayName } } return null + }) + + const getStatus = (inst: any) => { + try { + return inst.store?.state?.status ?? 'unknown' + } catch { + return 'unknown' + } } return ( @@ -85,15 +93,14 @@ function Shell() {
{/* Left Panel - Util List */}
-
Utils
{(group) => ( <> - {state[group.key].length > 0 && ( + {getGroupItems(group.key).length > 0 && (
{group.label}
- + {(instance) => (
setSelectedKey(instance.key)} + onClick={() => setSelectedKey(instance.key ?? null)} >
{instance.key}
- {instance.status} + {getStatus(instance)}
)} @@ -120,18 +127,47 @@ function Shell() { {/* Right Panel - State Details */}
-
State Details
+
Details
{(() => { - const instance = selectedInstance() - return instance !== null ? ( + const entry = selectedInstance() + return entry !== null ? ( <>
-
{instance.type}
-
{instance.key}
+
{entry.type}
+
+
Key
+
+ {entry.instance.key} +
+
Last Updated
+
+ {new Date( + (state.lastUpdatedByKey as any)[entry.instance.key] ?? + Date.now(), + ).toLocaleTimeString()} +
+
-
- +
+
+
Actions
+
No actions yet
+
+ +
+
Options
+
+ +
+
+ +
+
State
+
+ +
+
) : ( diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index 3ca4ddca..a1128720 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -162,6 +162,45 @@ const stylesFactory = () => { padding: ${size[2]}; border: 1px solid ${colors.darkGray[600]}; `, + detailsGrid: css` + display: grid; + grid-template-columns: 1fr; + gap: ${size[2]}; + align-items: start; + `, + detailSection: css` + background: ${colors.darkGray[700]}; + border: 1px solid ${colors.darkGray[600]}; + border-radius: ${border.radius.md}; + padding: ${size[2]}; + `, + detailSectionHeader: css` + font-size: ${fontSize.sm}; + font-weight: ${font.weight.bold}; + color: ${colors.gray[200]}; + margin-bottom: ${size[1]}; + text-transform: uppercase; + letter-spacing: 0.04em; + `, + infoGrid: css` + display: grid; + grid-template-columns: auto 1fr; + gap: ${size[1]}; + row-gap: ${size[1]}; + align-items: center; + `, + infoLabel: css` + color: ${colors.gray[400]}; + font-size: ${fontSize.xs}; + text-transform: uppercase; + letter-spacing: 0.05em; + `, + infoValueMono: css` + font-family: ${fontFamily.mono}; + font-size: ${fontSize.xs}; + color: ${colors.gray[100]}; + word-break: break-all; + `, noSelection: css` flex: 1; display: flex; diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index b5d2647d..63b69de1 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -264,7 +264,7 @@ export class AsyncBatcher { const { isExecuting, isPending, items } = combinedState const size = items.length const isEmpty = size === 0 - const finalState = { + return { ...combinedState, isEmpty, size, @@ -275,13 +275,9 @@ export class AsyncBatcher { : isEmpty ? 'idle' : 'populated', - } as const - emitChange('async-batcher-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('async-batcher', this) } #getWait = (): number => { diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 6d6f92c8..52cf1850 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -224,7 +224,7 @@ export class AsyncDebouncer { ...newState, } const { isPending, isExecuting, settleCount } = combinedState - const finalState = { + return { ...combinedState, status: !this.#getEnabled() ? 'disabled' @@ -235,13 +235,9 @@ export class AsyncDebouncer { : settleCount > 0 ? 'settled' : 'idle', - } as const - emitChange('async-debouncer-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('async-debouncer', this) } /** diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index 39cdb9d0..bc353ea9 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -323,20 +323,17 @@ export class AsyncQueuer { const isIdle = isRunning && isEmpty && activeItems.length === 0 const status = isIdle ? 'idle' : isRunning ? 'running' : 'stopped' - const finalState = { + + return { ...combinedState, isEmpty, isFull, isIdle, size, status, - } as const - emitChange('async-queuer-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('async-queuer', this) } /** diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index c01ffc0b..3f8569a7 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -253,17 +253,13 @@ export class AsyncRateLimiter { : isExceeded ? 'exceeded' : 'idle' - const finalState = { + return { ...combinedState, isExceeded, status, - } as const - emitChange('async-rate-limiter-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('async-rate-limiter', this) } /** diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index a0d3c63b..1a25c59b 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -235,7 +235,7 @@ export class AsyncThrottler { ...newState, } const { isPending, isExecuting, settleCount } = combinedState - const finalState = { + return { ...combinedState, status: !this.#getEnabled() ? 'disabled' @@ -246,13 +246,9 @@ export class AsyncThrottler { : settleCount > 0 ? 'settled' : 'idle', - } as const - emitChange('async-throttler-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('async-throttler', this) } /** diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index c68732cf..09855fc8 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -177,19 +177,14 @@ export class Batcher { const { isPending, items } = combinedState const size = items.length const isEmpty = size === 0 - const finalState = { + return { ...combinedState, isEmpty, size, status: isPending ? 'pending' : 'idle', - } as const - - emitChange('batcher-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('batcher', this) } #getWait = (): number => { diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index 6221e307..29318637 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -160,20 +160,16 @@ export class Debouncer { ...newState, } const { isPending } = combinedState - const finalState = { + return { ...combinedState, status: !this.#getEnabled() ? 'disabled' : isPending ? 'pending' : 'idle', - } as const - emitChange('debouncer-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('debouncer', this) } /** diff --git a/packages/pacer/src/event-client.ts b/packages/pacer/src/event-client.ts index 71e156e7..bb008b09 100644 --- a/packages/pacer/src/event-client.ts +++ b/packages/pacer/src/event-client.ts @@ -1,28 +1,26 @@ import { EventClient } from '@tanstack/devtools-event-client' -import type { AsyncBatcherState } from './async-batcher' -import type { AsyncDebouncerState } from './async-debouncer' -import type { AsyncQueuerState } from './async-queuer' -import type { AsyncRateLimiterState } from './async-rate-limiter' -import type { AsyncThrottlerState } from './async-throttler' -import type { DebouncerState } from './debouncer' -import type { BatcherState } from './batcher' -import type { QueuerState } from './queuer' -import type { RateLimiterState } from './rate-limiter' -import type { ThrottlerState } from './throttler' - -type WithKey = T & { key: string } +import type { AsyncBatcher } from './async-batcher' +import type { AsyncDebouncer } from './async-debouncer' +import type { AsyncQueuer } from './async-queuer' +import type { AsyncRateLimiter } from './async-rate-limiter' +import type { AsyncThrottler } from './async-throttler' +import type { Debouncer } from './debouncer' +import type { Batcher } from './batcher' +import type { Queuer } from './queuer' +import type { RateLimiter } from './rate-limiter' +import type { Throttler } from './throttler' export interface PacerEventMap { - 'pacer:async-batcher-state': WithKey> - 'pacer:async-debouncer-state': WithKey> - 'pacer:async-queuer-state': WithKey> - 'pacer:async-rate-limiter-state': WithKey> - 'pacer:async-throttler-state': WithKey> - 'pacer:batcher-state': WithKey> - 'pacer:debouncer-state': WithKey> - 'pacer:queuer-state': WithKey> - 'pacer:rate-limiter-state': WithKey - 'pacer:throttler-state': WithKey> + 'pacer:async-batcher': AsyncBatcher + 'pacer:async-debouncer': AsyncDebouncer + 'pacer:async-queuer': AsyncQueuer + 'pacer:async-rate-limiter': AsyncRateLimiter + 'pacer:async-throttler': AsyncThrottler + 'pacer:batcher': Batcher + 'pacer:debouncer': Debouncer + 'pacer:queuer': Queuer + 'pacer:rate-limiter': RateLimiter + 'pacer:throttler': Throttler } class PacerEventClient extends EventClient { @@ -43,7 +41,7 @@ export const emitChange = < : never, >( event: TSuffix, - payload: PacerEventMap[`pacer:${TSuffix}`] & { key: string }, + payload: PacerEventMap[`pacer:${TSuffix}`], ) => { pacerEventClient.emit(event, payload) } diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index 0d095463..c0682ea7 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -306,20 +306,17 @@ export class Queuer { const isIdle = isRunning && isEmpty const status = isIdle ? 'idle' : isRunning ? 'running' : 'stopped' - const finalState = { + + return { ...combinedState, isEmpty, isFull, isIdle, size, status, - } as const - emitChange('queuer-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('queuer', this) } /** diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index a894b0e2..6aa77835 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -176,17 +176,13 @@ export class RateLimiter { : isExceeded ? 'exceeded' : 'idle' - const finalState = { + return { ...combinedState, isExceeded, status, - } as const - emitChange('rate-limiter-state', { - ...finalState, - key: this.key, - }) - return finalState + } }) + emitChange('rate-limiter', this) } /** diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index d0fcc956..664350fd 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -168,20 +168,16 @@ export class Throttler { ...newState, } const { isPending } = combinedState - const finalState = { + return { ...combinedState, status: !this.#getEnabled() ? 'disabled' : isPending ? 'pending' : 'idle', - } as const - emitChange('throttler-state', { - ...finalState, - key: this.key ?? '', - }) - return finalState + } }) + emitChange('throttler', this) } #getEnabled = (): boolean => { From dd527a0aa861448894dfce2a953091dca79cf7b5 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 13 Aug 2025 17:56:01 -0500 Subject: [PATCH 24/44] add some action buttons to devtools that kind of work --- docs/reference/classes/asyncbatcher.md | 30 ++++- docs/reference/classes/asyncdebouncer.md | 26 +++- docs/reference/classes/asyncqueuer.md | 44 ++++-- docs/reference/classes/asyncratelimiter.md | 26 +++- docs/reference/classes/asyncthrottler.md | 26 +++- docs/reference/classes/batcher.md | 28 +++- docs/reference/classes/debouncer.md | 26 +++- docs/reference/classes/queuer.md | 40 ++++-- docs/reference/classes/ratelimiter.md | 26 +++- docs/reference/classes/throttler.md | 26 +++- docs/reference/functions/asyncbatch.md | 2 +- docs/reference/functions/asyncdebounce.md | 2 +- docs/reference/functions/asyncqueue.md | 2 +- docs/reference/functions/asyncratelimit.md | 2 +- docs/reference/functions/asyncthrottle.md | 2 +- docs/reference/functions/batch.md | 2 +- docs/reference/functions/debounce.md | 2 +- docs/reference/functions/queue.md | 2 +- docs/reference/functions/ratelimit.md | 2 +- docs/reference/functions/throttle.md | 2 +- ...-provider.tsx => PacerContextProvider.tsx} | 72 +++++++++- .../src/{devtools.tsx => PacerDevtools.tsx} | 125 +++++++++++++++++- .../pacer-devtools/src/context/context.ts | 45 ------- .../src/context/use-context-hooks.ts | 13 -- packages/pacer-devtools/src/core.tsx | 2 +- .../pacer-devtools/src/styles/use-styles.ts | 55 ++++++++ packages/pacer/src/async-batcher.ts | 7 +- packages/pacer/src/async-debouncer.ts | 7 +- packages/pacer/src/async-queuer.ts | 7 +- packages/pacer/src/async-rate-limiter.ts | 7 +- packages/pacer/src/async-throttler.ts | 7 +- packages/pacer/src/batcher.ts | 7 +- packages/pacer/src/debouncer.ts | 7 +- packages/pacer/src/queuer.ts | 7 +- packages/pacer/src/rate-limiter.ts | 7 +- packages/pacer/src/throttler.ts | 7 +- 36 files changed, 540 insertions(+), 160 deletions(-) rename packages/pacer-devtools/src/{context/context-provider.tsx => PacerContextProvider.tsx} (69%) rename packages/pacer-devtools/src/{devtools.tsx => PacerDevtools.tsx} (52%) delete mode 100644 packages/pacer-devtools/src/context/context.ts delete mode 100644 packages/pacer-devtools/src/context/use-context-hooks.ts diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index 26dd779a..a1f80a22 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -150,13 +150,29 @@ Defined in: [async-batcher.ts:231](https://github.com/TanStack/pacer/blob/main/p ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [async-batcher.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L254) + +Emits a change event for the async batcher instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### addItem() ```ts addItem(item): void ``` -Defined in: [async-batcher.ts:291](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L291) +Defined in: [async-batcher.ts:296](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L296) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -179,7 +195,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [async-batcher.ts:392](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L392) +Defined in: [async-batcher.ts:397](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L397) Removes all items from the async batcher @@ -195,7 +211,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [async-batcher.ts:366](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L366) +Defined in: [async-batcher.ts:371](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L371) Processes the current batch of items immediately @@ -211,7 +227,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [async-batcher.ts:374](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L374) +Defined in: [async-batcher.ts:379](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L379) Returns a copy of all items in the async batcher @@ -227,7 +243,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L378) +Defined in: [async-batcher.ts:383](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L383) #### Returns @@ -241,7 +257,7 @@ Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/p reset(): void ``` -Defined in: [async-batcher.ts:399](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L399) +Defined in: [async-batcher.ts:404](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L404) Resets the async batcher state to its default values @@ -257,7 +273,7 @@ Resets the async batcher state to its default values setOptions(newOptions): void ``` -Defined in: [async-batcher.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L254) +Defined in: [async-batcher.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L259) Updates the async batcher options diff --git a/docs/reference/classes/asyncdebouncer.md b/docs/reference/classes/asyncdebouncer.md index d82364e0..6bde6b40 100644 --- a/docs/reference/classes/asyncdebouncer.md +++ b/docs/reference/classes/asyncdebouncer.md @@ -124,13 +124,29 @@ Defined in: [async-debouncer.ts:184](https://github.com/TanStack/pacer/blob/main ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [async-debouncer.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L211) + +Emits a change event for the async debouncer instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### cancel() ```ts cancel(): void ``` -Defined in: [async-debouncer.ts:396](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L396) +Defined in: [async-debouncer.ts:401](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L401) Cancels any pending execution or aborts any execution in progress @@ -146,7 +162,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-debouncer.ts:348](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L348) +Defined in: [async-debouncer.ts:353](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L353) Processes the current pending execution immediately @@ -162,7 +178,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-debouncer.ts:271](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L271) +Defined in: [async-debouncer.ts:276](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L276) Attempts to execute the debounced function. If a call is already in progress, it will be queued. @@ -198,7 +214,7 @@ The error from the debounced function if no onError handler is configured reset(): void ``` -Defined in: [async-debouncer.ts:405](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L405) +Defined in: [async-debouncer.ts:410](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L410) Resets the debouncer state to its default values @@ -214,7 +230,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-debouncer.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L211) +Defined in: [async-debouncer.ts:216](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L216) Updates the async debouncer options diff --git a/docs/reference/classes/asyncqueuer.md b/docs/reference/classes/asyncqueuer.md index 603b5f90..bc863010 100644 --- a/docs/reference/classes/asyncqueuer.md +++ b/docs/reference/classes/asyncqueuer.md @@ -139,6 +139,22 @@ Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/pa ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [async-queuer.ts:307](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L307) + +Emits a change event for the async queuer instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### addItem() ```ts @@ -148,7 +164,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [async-queuer.ts:410](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L410) +Defined in: [async-queuer.ts:415](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L415) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -186,7 +202,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [async-queuer.ts:714](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L714) +Defined in: [async-queuer.ts:719](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L719) Removes all pending items from the queue. Does not affect active tasks. @@ -202,7 +218,7 @@ Removes all pending items from the queue. Does not affect active tasks. execute(position?): Promise ``` -Defined in: [async-queuer.ts:536](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L536) +Defined in: [async-queuer.ts:541](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L541) Removes and returns the next item from the queue and executes the task function with it. @@ -232,7 +248,7 @@ queuer.execute('back'); flush(numberOfItems, position?): Promise ``` -Defined in: [async-queuer.ts:571](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L571) +Defined in: [async-queuer.ts:576](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L576) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -259,7 +275,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): Promise ``` -Defined in: [async-queuer.ts:585](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L585) +Defined in: [async-queuer.ts:590](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L590) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -282,7 +298,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:489](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L489) +Defined in: [async-queuer.ts:494](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L494) Removes and returns the next item from the queue without executing the task function. Use for manual queue management. Normally, use execute() to process items. @@ -314,7 +330,7 @@ queuer.getNextItem('back'); peekActiveItems(): TValue[] ``` -Defined in: [async-queuer.ts:677](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L677) +Defined in: [async-queuer.ts:682](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L682) Returns the items currently being processed (active tasks). @@ -330,7 +346,7 @@ Returns the items currently being processed (active tasks). peekAllItems(): TValue[] ``` -Defined in: [async-queuer.ts:670](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L670) +Defined in: [async-queuer.ts:675](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L675) Returns a copy of all items in the queue, including active and pending items. @@ -346,7 +362,7 @@ Returns a copy of all items in the queue, including active and pending items. peekNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:660](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L660) +Defined in: [async-queuer.ts:665](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L665) Returns the next item in the queue without removing it. @@ -375,7 +391,7 @@ queuer.peekNextItem('back'); // back peekPendingItems(): TValue[] ``` -Defined in: [async-queuer.ts:684](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L684) +Defined in: [async-queuer.ts:689](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L689) Returns the items waiting to be processed (pending tasks). @@ -391,7 +407,7 @@ Returns the items waiting to be processed (pending tasks). reset(): void ``` -Defined in: [async-queuer.ts:722](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L722) +Defined in: [async-queuer.ts:727](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L727) Resets the queuer state to its default values @@ -407,7 +423,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [async-queuer.ts:307](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L307) +Defined in: [async-queuer.ts:312](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L312) Updates the queuer options. New options are merged with existing options. @@ -429,7 +445,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [async-queuer.ts:691](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L691) +Defined in: [async-queuer.ts:696](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L696) Starts processing items in the queue. If already running, does nothing. @@ -445,7 +461,7 @@ Starts processing items in the queue. If already running, does nothing. stop(): void ``` -Defined in: [async-queuer.ts:701](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L701) +Defined in: [async-queuer.ts:706](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L706) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index 9e5ffbd7..35eb441b 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -145,13 +145,29 @@ Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/m ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [async-rate-limiter.ts:238](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L238) + +Emits a change event for the async rate limiter instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### getMsUntilNextWindow() ```ts getMsUntilNextWindow(): number ``` -Defined in: [async-rate-limiter.ts:442](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L442) +Defined in: [async-rate-limiter.ts:447](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L447) Returns the number of milliseconds until the next execution will be possible For fixed windows, this is the time until the current window resets @@ -169,7 +185,7 @@ For sliding windows, this is the time until the oldest execution expires getRemainingInWindow(): number ``` -Defined in: [async-rate-limiter.ts:432](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L432) +Defined in: [async-rate-limiter.ts:437](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L437) Returns the number of remaining executions allowed in the current window @@ -185,7 +201,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [async-rate-limiter.ts:311](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L311) +Defined in: [async-rate-limiter.ts:316](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L316) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -233,7 +249,7 @@ const result2 = await rateLimiter.maybeExecute('arg1', 'arg2'); // undefined reset(): void ``` -Defined in: [async-rate-limiter.ts:453](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L453) +Defined in: [async-rate-limiter.ts:458](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L458) Resets the rate limiter state @@ -249,7 +265,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [async-rate-limiter.ts:238](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L238) +Defined in: [async-rate-limiter.ts:243](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L243) Updates the async rate limiter options diff --git a/docs/reference/classes/asyncthrottler.md b/docs/reference/classes/asyncthrottler.md index c9326469..0e77cf65 100644 --- a/docs/reference/classes/asyncthrottler.md +++ b/docs/reference/classes/asyncthrottler.md @@ -127,13 +127,29 @@ Defined in: [async-throttler.ts:195](https://github.com/TanStack/pacer/blob/main ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [async-throttler.ts:222](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L222) + +Emits a change event for the async throttler instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### cancel() ```ts cancel(): void ``` -Defined in: [async-throttler.ts:431](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L431) +Defined in: [async-throttler.ts:436](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L436) Cancels any pending execution or aborts any execution in progress @@ -149,7 +165,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-throttler.ts:380](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L380) +Defined in: [async-throttler.ts:385](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L385) Processes the current pending execution immediately @@ -165,7 +181,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-throttler.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L290) +Defined in: [async-throttler.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L295) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -207,7 +223,7 @@ await throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [async-throttler.ts:439](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L439) +Defined in: [async-throttler.ts:444](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L444) Resets the debouncer state to its default values @@ -223,7 +239,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-throttler.ts:222](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L222) +Defined in: [async-throttler.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L227) Updates the async throttler options diff --git a/docs/reference/classes/batcher.md b/docs/reference/classes/batcher.md index 0f6d2ddd..e7416364 100644 --- a/docs/reference/classes/batcher.md +++ b/docs/reference/classes/batcher.md @@ -127,13 +127,29 @@ Defined in: [batcher.ts:145](https://github.com/TanStack/pacer/blob/main/package ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [batcher.ts:167](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L167) + +Emits a change event for the batcher instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### addItem() ```ts addItem(item): void ``` -Defined in: [batcher.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L198) +Defined in: [batcher.ts:203](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L203) Adds an item to the batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -156,7 +172,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [batcher.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L268) +Defined in: [batcher.ts:273](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L273) Removes all items from the batcher @@ -172,7 +188,7 @@ Removes all items from the batcher flush(): void ``` -Defined in: [batcher.ts:246](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L246) +Defined in: [batcher.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L251) Processes the current batch of items immediately @@ -188,7 +204,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [batcher.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L254) +Defined in: [batcher.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L259) Returns a copy of all items in the batcher @@ -204,7 +220,7 @@ Returns a copy of all items in the batcher reset(): void ``` -Defined in: [batcher.ts:275](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L275) +Defined in: [batcher.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L280) Resets the batcher state to its default values @@ -220,7 +236,7 @@ Resets the batcher state to its default values setOptions(newOptions): void ``` -Defined in: [batcher.ts:167](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L167) +Defined in: [batcher.ts:172](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L172) Updates the batcher options diff --git a/docs/reference/classes/debouncer.md b/docs/reference/classes/debouncer.md index f46cc32b..03055b97 100644 --- a/docs/reference/classes/debouncer.md +++ b/docs/reference/classes/debouncer.md @@ -110,13 +110,29 @@ Defined in: [debouncer.ts:125](https://github.com/TanStack/pacer/blob/main/packa ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [debouncer.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L147) + +Emits a change event for the debouncer instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### cancel() ```ts cancel(): void ``` -Defined in: [debouncer.ts:252](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L252) +Defined in: [debouncer.ts:257](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L257) Cancels any pending execution @@ -132,7 +148,7 @@ Cancels any pending execution flush(): void ``` -Defined in: [debouncer.ts:235](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L235) +Defined in: [debouncer.ts:240](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L240) Processes the current pending execution immediately @@ -148,7 +164,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [debouncer.ts:193](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L193) +Defined in: [debouncer.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L198) Attempts to execute the debounced function If a call is already in progress, it will be queued @@ -171,7 +187,7 @@ If a call is already in progress, it will be queued reset(): void ``` -Defined in: [debouncer.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L263) +Defined in: [debouncer.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L268) Resets the debouncer state to its default values @@ -187,7 +203,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [debouncer.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L147) +Defined in: [debouncer.ts:152](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L152) Updates the debouncer options diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index e97b616f..14402b81 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -160,6 +160,22 @@ Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [queuer.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L290) + +Emits a change event for the queuer instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### addItem() ```ts @@ -169,7 +185,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [queuer.ts:374](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L374) +Defined in: [queuer.ts:379](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L379) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -208,7 +224,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [queuer.ts:647](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L647) +Defined in: [queuer.ts:652](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L652) Removes all pending items from the queue. Does not affect items being processed. @@ -224,7 +240,7 @@ Removes all pending items from the queue. Does not affect items being processed. execute(position?): undefined | TValue ``` -Defined in: [queuer.ts:501](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L501) +Defined in: [queuer.ts:506](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L506) Removes and returns the next item from the queue and processes it using the provided function. @@ -253,7 +269,7 @@ queuer.execute('back'); flush(numberOfItems, position?): void ``` -Defined in: [queuer.ts:517](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L517) +Defined in: [queuer.ts:522](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L522) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -280,7 +296,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [queuer.ts:532](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L532) +Defined in: [queuer.ts:537](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L537) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -303,7 +319,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:454](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L454) +Defined in: [queuer.ts:459](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L459) Removes and returns the next item from the queue without executing the function. Use for manual queue management. Normally, use execute() to process items. @@ -334,7 +350,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [queuer.ts:615](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L615) +Defined in: [queuer.ts:620](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L620) Returns a copy of all items in the queue. @@ -350,7 +366,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:605](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L605) +Defined in: [queuer.ts:610](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L610) Returns the next item in the queue without removing it. @@ -378,7 +394,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [queuer.ts:655](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L655) +Defined in: [queuer.ts:660](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L660) Resets the queuer state to its default values @@ -394,7 +410,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [queuer.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L290) +Defined in: [queuer.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L295) Updates the queuer options. New options are merged with existing options. @@ -416,7 +432,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [queuer.ts:622](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L622) +Defined in: [queuer.ts:627](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L627) Starts processing items in the queue. If already isRunning, does nothing. @@ -432,7 +448,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [queuer.ts:632](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L632) +Defined in: [queuer.ts:637](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L637) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/ratelimiter.md b/docs/reference/classes/ratelimiter.md index 84126c23..eb985ec1 100644 --- a/docs/reference/classes/ratelimiter.md +++ b/docs/reference/classes/ratelimiter.md @@ -123,13 +123,29 @@ Defined in: [rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/pa ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [rate-limiter.ts:163](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L163) + +Emits a change event for the rate limiter instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### getMsUntilNextWindow() ```ts getMsUntilNextWindow(): number ``` -Defined in: [rate-limiter.ts:326](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L326) +Defined in: [rate-limiter.ts:331](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L331) Returns the number of milliseconds until the next execution will be possible @@ -145,7 +161,7 @@ Returns the number of milliseconds until the next execution will be possible getRemainingInWindow(): number ``` -Defined in: [rate-limiter.ts:318](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L318) +Defined in: [rate-limiter.ts:323](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L323) Returns the number of remaining executions allowed in the current window @@ -161,7 +177,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): boolean ``` -Defined in: [rate-limiter.ts:224](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L224) +Defined in: [rate-limiter.ts:229](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L229) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -196,7 +212,7 @@ rateLimiter.maybeExecute('arg1', 'arg2'); // false reset(): void ``` -Defined in: [rate-limiter.ts:337](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L337) +Defined in: [rate-limiter.ts:342](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L342) Resets the rate limiter state @@ -212,7 +228,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [rate-limiter.ts:163](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L163) +Defined in: [rate-limiter.ts:168](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L168) Updates the rate limiter options diff --git a/docs/reference/classes/throttler.md b/docs/reference/classes/throttler.md index b4792751..8829be02 100644 --- a/docs/reference/classes/throttler.md +++ b/docs/reference/classes/throttler.md @@ -114,13 +114,29 @@ Defined in: [throttler.ts:133](https://github.com/TanStack/pacer/blob/main/packa ## Methods +### \_emit() + +```ts +_emit(): void +``` + +Defined in: [throttler.ts:155](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L155) + +Emits a change event for the throttler instance. Mostly useful for devtools. + +#### Returns + +`void` + +*** + ### cancel() ```ts cancel(): void ``` -Defined in: [throttler.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L290) +Defined in: [throttler.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L295) Cancels any pending trailing execution and clears internal state. @@ -142,7 +158,7 @@ Has no effect if there is no pending execution. flush(): void ``` -Defined in: [throttler.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L268) +Defined in: [throttler.ts:273](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L273) Processes the current pending execution immediately @@ -158,7 +174,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [throttler.ts:213](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L213) +Defined in: [throttler.ts:218](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L218) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -200,7 +216,7 @@ throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [throttler.ts:301](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L301) +Defined in: [throttler.ts:306](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L306) Resets the throttler state to its default values @@ -216,7 +232,7 @@ Resets the throttler state to its default values setOptions(newOptions): void ``` -Defined in: [throttler.ts:155](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L155) +Defined in: [throttler.ts:160](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L160) Updates the throttler options diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index ad096c15..63dd5c44 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -11,7 +11,7 @@ title: asyncBatch function asyncBatch(fn, options): (item) => void ``` -Defined in: [async-batcher.ts:454](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L454) +Defined in: [async-batcher.ts:459](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L459) Creates an async batcher that processes items in batches diff --git a/docs/reference/functions/asyncdebounce.md b/docs/reference/functions/asyncdebounce.md index f0f8a98e..24c4ceda 100644 --- a/docs/reference/functions/asyncdebounce.md +++ b/docs/reference/functions/asyncdebounce.md @@ -11,7 +11,7 @@ title: asyncDebounce function asyncDebounce(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-debouncer.ts:454](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L454) +Defined in: [async-debouncer.ts:459](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L459) Creates an async debounced function that delays execution until after a specified wait time. The debounced function will only execute once the wait period has elapsed without any new calls. diff --git a/docs/reference/functions/asyncqueue.md b/docs/reference/functions/asyncqueue.md index ba6b1a8e..6b00fe41 100644 --- a/docs/reference/functions/asyncqueue.md +++ b/docs/reference/functions/asyncqueue.md @@ -11,7 +11,7 @@ title: asyncQueue function asyncQueue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [async-queuer.ts:761](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L761) +Defined in: [async-queuer.ts:766](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L766) Creates a new AsyncQueuer instance and returns a bound addItem function for adding tasks. The queuer is started automatically and ready to process items. diff --git a/docs/reference/functions/asyncratelimit.md b/docs/reference/functions/asyncratelimit.md index bca39308..49704cdd 100644 --- a/docs/reference/functions/asyncratelimit.md +++ b/docs/reference/functions/asyncratelimit.md @@ -11,7 +11,7 @@ title: asyncRateLimit function asyncRateLimit(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-rate-limiter.ts:524](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L524) +Defined in: [async-rate-limiter.ts:529](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L529) Creates an async rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/asyncthrottle.md b/docs/reference/functions/asyncthrottle.md index 54d9e24d..7b45875e 100644 --- a/docs/reference/functions/asyncthrottle.md +++ b/docs/reference/functions/asyncthrottle.md @@ -11,7 +11,7 @@ title: asyncThrottle function asyncThrottle(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-throttler.ts:487](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L487) +Defined in: [async-throttler.ts:492](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L492) Creates an async throttled function that limits how often the function can execute. The throttled function will execute at most once per wait period, even if called multiple times. diff --git a/docs/reference/functions/batch.md b/docs/reference/functions/batch.md index fb10894c..26b75d6d 100644 --- a/docs/reference/functions/batch.md +++ b/docs/reference/functions/batch.md @@ -11,7 +11,7 @@ title: batch function batch(fn, options): (item) => void ``` -Defined in: [batcher.ts:299](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L299) +Defined in: [batcher.ts:304](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L304) Creates a batcher that processes items in batches diff --git a/docs/reference/functions/debounce.md b/docs/reference/functions/debounce.md index f1cd1af5..46ced8d6 100644 --- a/docs/reference/functions/debounce.md +++ b/docs/reference/functions/debounce.md @@ -11,7 +11,7 @@ title: debounce function debounce(fn, initialOptions): (...args) => void ``` -Defined in: [debouncer.ts:296](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L296) +Defined in: [debouncer.ts:301](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L301) Creates a debounced function that delays invoking the provided function until after a specified wait time. Multiple calls during the wait period will cancel previous pending invocations and reset the timer. diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 7b4c8d9f..35a7bafe 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [queuer.ts:698](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L698) +Defined in: [queuer.ts:703](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L703) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. diff --git a/docs/reference/functions/ratelimit.md b/docs/reference/functions/ratelimit.md index a7fe3b80..82410092 100644 --- a/docs/reference/functions/ratelimit.md +++ b/docs/reference/functions/ratelimit.md @@ -11,7 +11,7 @@ title: rateLimit function rateLimit(fn, initialOptions): (...args) => boolean ``` -Defined in: [rate-limiter.ts:389](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L389) +Defined in: [rate-limiter.ts:394](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L394) Creates a rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/throttle.md b/docs/reference/functions/throttle.md index 4958ebd2..3e5d08f4 100644 --- a/docs/reference/functions/throttle.md +++ b/docs/reference/functions/throttle.md @@ -11,7 +11,7 @@ title: throttle function throttle(fn, initialOptions): (...args) => void ``` -Defined in: [throttler.ts:340](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L340) +Defined in: [throttler.ts:345](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L345) Creates a throttled function that limits how often the provided function can execute. diff --git a/packages/pacer-devtools/src/context/context-provider.tsx b/packages/pacer-devtools/src/PacerContextProvider.tsx similarity index 69% rename from packages/pacer-devtools/src/context/context-provider.tsx rename to packages/pacer-devtools/src/PacerContextProvider.tsx index dccc670f..b8401a66 100644 --- a/packages/pacer-devtools/src/context/context-provider.tsx +++ b/packages/pacer-devtools/src/PacerContextProvider.tsx @@ -1,8 +1,53 @@ import { createStore } from 'solid-js/store' -import { createEffect, onCleanup } from 'solid-js' -import { pacerEventClient } from '@tanstack/pacer' -import { PacerContext, initialStore } from './context' -import type { PacerContextType } from './context' +import { createContext, createEffect, onCleanup, useContext } from 'solid-js' +import { pacerEventClient } from '@tanstack/pacer/event-client' +import type { + AsyncBatcher, + AsyncDebouncer, + AsyncQueuer, + AsyncRateLimiter, + AsyncThrottler, + Batcher, + Debouncer, + Queuer, + RateLimiter, + Throttler, +} from '@tanstack/pacer' + +interface PacerDevtoolsContextType { + asyncBatchers: Array> + asyncDebouncers: Array> + asyncQueuers: Array> + asyncRateLimiters: Array> + asyncThrottlers: Array> + batchers: Array> + debouncers: Array> + queuers: Array> + rateLimiters: Array> + throttlers: Array> + lastUpdatedByKey: Record +} + +const initialPacerDevtoolsStore = { + asyncBatchers: [], + asyncDebouncers: [], + asyncQueuers: [], + asyncRateLimiters: [], + asyncThrottlers: [], + batchers: [], + debouncers: [], + queuers: [], + rateLimiters: [], + throttlers: [], + lastUpdatedByKey: {}, +} + +const PacerDevtoolsContext = createContext< + [ + PacerDevtoolsContextType, + (newState: Partial) => void, + ] +>([initialPacerDevtoolsStore, () => {}]) const updateOrAddToArray = ( oldArray: Array, @@ -18,7 +63,9 @@ const updateOrAddToArray = ( } export function PacerContextProvider(props: { children: any }) { - const [store, setStore] = createStore(initialStore) + const [store, setStore] = createStore( + initialPacerDevtoolsStore, + ) createEffect(() => { const cleanup = pacerEventClient.onAllPluginEvents((_e) => { @@ -138,8 +185,19 @@ export function PacerContextProvider(props: { children: any }) { onCleanup(cleanup) }) return ( - + {props.children} - + ) } + +const usePacerDevtoolsContext = () => { + const context = useContext(PacerDevtoolsContext) + + return context +} + +export const usePacerDevtoolsState = () => { + const [state] = usePacerDevtoolsContext() + return state +} diff --git a/packages/pacer-devtools/src/devtools.tsx b/packages/pacer-devtools/src/PacerDevtools.tsx similarity index 52% rename from packages/pacer-devtools/src/devtools.tsx rename to packages/pacer-devtools/src/PacerDevtools.tsx index c5220ebb..e511b432 100644 --- a/packages/pacer-devtools/src/devtools.tsx +++ b/packages/pacer-devtools/src/PacerDevtools.tsx @@ -1,8 +1,10 @@ import { For, createMemo, createSignal } from 'solid-js' import clsx from 'clsx' import { JsonTree } from '@tanstack/devtools-ui' -import { usePacerState } from './context/use-context-hooks' -import { PacerContextProvider } from './context/context-provider' +import { + PacerContextProvider, + usePacerDevtoolsState, +} from './PacerContextProvider' import { useStyles } from './styles/use-styles' type StateKey = @@ -62,7 +64,7 @@ const UTIL_GROUPS: Array = [ function Shell() { const styles = useStyles() - const state = usePacerState() + const state = usePacerDevtoolsState() const [selectedKey, setSelectedKey] = createSignal(null) const getGroupItems = (key: StateKey) => (state as unknown as Record>)[key] @@ -152,7 +154,120 @@ function Shell() {
Actions
-
No actions yet
+ {(() => { + const inst: any = entry.instance + const state = inst?.store?.state + const hasPending = state && 'isPending' in state + const hasEmpty = state && 'isEmpty' in state + const isPending = hasPending ? !!state.isPending : false + const isEmpty = hasEmpty ? state.isEmpty : undefined + + // Check which methods are available + const hasFlush = typeof inst.flush === 'function' + const hasCancel = typeof inst.cancel === 'function' + const hasReset = typeof inst.reset === 'function' + const hasClear = typeof inst.clear === 'function' + + // Determine if this is a debouncer/throttler (has isPending) + const isDebounceThrottleLike = hasPending + + // No actions if no methods available + if ( + !hasPending && + !hasFlush && + !hasCancel && + !hasReset && + !hasClear + ) { + return ( +
+ No actions available for this util +
+ ) + } + + const togglePending = () => { + const next = !isPending + inst.store.setState((prev: any) => ({ + ...prev, + isPending: next, + })) + } + + return ( +
+ {hasPending && ( + + )} + {hasFlush && ( + + )} + {hasCancel && ( + + )} + {hasReset && ( + + )} + {hasClear && ( + + )} +
+ ) + })()}
@@ -183,7 +298,7 @@ function Shell() { ) } -export default function Devtools() { +export default function PacerDevtools() { return ( diff --git a/packages/pacer-devtools/src/context/context.ts b/packages/pacer-devtools/src/context/context.ts deleted file mode 100644 index e1b74e65..00000000 --- a/packages/pacer-devtools/src/context/context.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { createContext } from 'solid-js' -import type { - AsyncBatcher, - AsyncDebouncer, - AsyncQueuer, - AsyncRateLimiter, - AsyncThrottler, - Batcher, - Debouncer, - Queuer, - RateLimiter, - Throttler, -} from '@tanstack/pacer' - -export interface PacerContextType { - asyncBatchers: Array> - asyncDebouncers: Array> - asyncQueuers: Array> - asyncRateLimiters: Array> - asyncThrottlers: Array> - batchers: Array> - debouncers: Array> - queuers: Array> - rateLimiters: Array> - throttlers: Array> - lastUpdatedByKey: Record -} - -export const initialStore = { - asyncBatchers: [], - asyncDebouncers: [], - asyncQueuers: [], - asyncRateLimiters: [], - asyncThrottlers: [], - batchers: [], - debouncers: [], - queuers: [], - rateLimiters: [], - throttlers: [], - lastUpdatedByKey: {}, -} - -export const PacerContext = createContext< - [PacerContextType, (newState: Partial) => void] ->([initialStore, () => {}]) diff --git a/packages/pacer-devtools/src/context/use-context-hooks.ts b/packages/pacer-devtools/src/context/use-context-hooks.ts deleted file mode 100644 index 85617722..00000000 --- a/packages/pacer-devtools/src/context/use-context-hooks.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useContext } from 'solid-js' -import { PacerContext } from './context' - -const usePacerContext = () => { - const context = useContext(PacerContext) - - return context -} - -export const usePacerState = () => { - const [state] = usePacerContext() - return state -} diff --git a/packages/pacer-devtools/src/core.tsx b/packages/pacer-devtools/src/core.tsx index af026f1c..add2f38e 100644 --- a/packages/pacer-devtools/src/core.tsx +++ b/packages/pacer-devtools/src/core.tsx @@ -16,7 +16,7 @@ export class PacerDevtoolsCore { } const mountTo = el const dispose = render(() => { - this.#Component = lazy(() => import('./devtools')) + this.#Component = lazy(() => import('./PacerDevtools')) const Devtools = this.#Component return ( diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index a1128720..ac6448d4 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -182,6 +182,61 @@ const stylesFactory = () => { text-transform: uppercase; letter-spacing: 0.04em; `, + actionsRow: css` + display: flex; + flex-wrap: wrap; + gap: ${size[2]}; + `, + actionButton: css` + display: inline-flex; + align-items: center; + gap: ${size[1]}; + padding: ${size[1]} ${size[2]}; + border-radius: ${border.radius.md}; + border: 1px solid ${colors.darkGray[500]}; + background: ${colors.darkGray[600]}; + color: ${colors.gray[100]}; + font-size: ${fontSize.xs}; + cursor: pointer; + user-select: none; + transition: + background 0.15s, + border-color 0.15s; + &:hover { + background: ${colors.darkGray[500]}; + border-color: ${colors.darkGray[400]}; + } + `, + actionDotBlue: css` + width: 6px; + height: 6px; + border-radius: 9999px; + background: ${colors.blue[400]}; + `, + actionDotGreen: css` + width: 6px; + height: 6px; + border-radius: 9999px; + background: ${colors.green[400]}; + `, + actionDotRed: css` + width: 6px; + height: 6px; + border-radius: 9999px; + background: ${colors.red[400]}; + `, + actionDotYellow: css` + width: 6px; + height: 6px; + border-radius: 9999px; + background: ${colors.yellow[400]}; + `, + actionDotOrange: css` + width: 6px; + height: 6px; + border-radius: 9999px; + background: ${colors.pink[400]}; + `, infoGrid: css` display: grid; grid-template-columns: auto 1fr; diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index 63b69de1..f01581aa 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -248,6 +248,11 @@ export class AsyncBatcher { this.#setState(this.options.initialState ?? {}) } + /** + * Emits a change event for the async batcher instance. Mostly useful for devtools. + */ + _emit = () => emitChange('async-batcher', this) + /** * Updates the async batcher options */ @@ -277,7 +282,7 @@ export class AsyncBatcher { : 'populated', } }) - emitChange('async-batcher', this) + this._emit() } #getWait = (): number => { diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 52cf1850..fb3c1464 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -205,6 +205,11 @@ export class AsyncDebouncer { this.#setState(this.options.initialState ?? {}) } + /** + * Emits a change event for the async debouncer instance. Mostly useful for devtools. + */ + _emit = () => emitChange('async-debouncer', this) + /** * Updates the async debouncer options */ @@ -237,7 +242,7 @@ export class AsyncDebouncer { : 'idle', } }) - emitChange('async-debouncer', this) + this._emit() } /** diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index bc353ea9..1732ef00 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -301,6 +301,11 @@ export class AsyncQueuer { } } + /** + * Emits a change event for the async queuer instance. Mostly useful for devtools. + */ + _emit = () => emitChange('async-queuer', this) + /** * Updates the queuer options. New options are merged with existing options. */ @@ -333,7 +338,7 @@ export class AsyncQueuer { status, } }) - emitChange('async-queuer', this) + this._emit() } /** diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index 3f8569a7..22513116 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -232,6 +232,11 @@ export class AsyncRateLimiter { } } + /** + * Emits a change event for the async rate limiter instance. Mostly useful for devtools. + */ + _emit = () => emitChange('async-rate-limiter', this) + /** * Updates the async rate limiter options */ @@ -259,7 +264,7 @@ export class AsyncRateLimiter { status, } }) - emitChange('async-rate-limiter', this) + this._emit() } /** diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index 1a25c59b..ef7d7425 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -216,6 +216,11 @@ export class AsyncThrottler { this.#setState(this.options.initialState ?? {}) } + /** + * Emits a change event for the async throttler instance. Mostly useful for devtools. + */ + _emit = () => emitChange('async-throttler', this) + /** * Updates the async throttler options */ @@ -248,7 +253,7 @@ export class AsyncThrottler { : 'idle', } }) - emitChange('async-throttler', this) + this._emit() } /** diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index 09855fc8..6b3f840c 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -161,6 +161,11 @@ export class Batcher { this.#setState(this.options.initialState ?? {}) } + /** + * Emits a change event for the batcher instance. Mostly useful for devtools. + */ + _emit = () => emitChange('batcher', this) + /** * Updates the batcher options */ @@ -184,7 +189,7 @@ export class Batcher { status: isPending ? 'pending' : 'idle', } }) - emitChange('batcher', this) + this._emit() } #getWait = (): number => { diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index 29318637..063df6fc 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -141,6 +141,11 @@ export class Debouncer { this.#setState(this.options.initialState ?? {}) } + /** + * Emits a change event for the debouncer instance. Mostly useful for devtools. + */ + _emit = () => emitChange('debouncer', this) + /** * Updates the debouncer options */ @@ -169,7 +174,7 @@ export class Debouncer { : 'idle', } }) - emitChange('debouncer', this) + this._emit() } /** diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index c0682ea7..07393842 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -284,6 +284,11 @@ export class Queuer { } } + /** + * Emits a change event for the queuer instance. Mostly useful for devtools. + */ + _emit = () => emitChange('queuer', this) + /** * Updates the queuer options. New options are merged with existing options. */ @@ -316,7 +321,7 @@ export class Queuer { status, } }) - emitChange('queuer', this) + this._emit() } /** diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index 6aa77835..de9b21e2 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -157,6 +157,11 @@ export class RateLimiter { } } + /** + * Emits a change event for the rate limiter instance. Mostly useful for devtools. + */ + _emit = () => emitChange('rate-limiter', this) + /** * Updates the rate limiter options */ @@ -182,7 +187,7 @@ export class RateLimiter { status, } }) - emitChange('rate-limiter', this) + this._emit() } /** diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index 664350fd..278ae788 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -149,6 +149,11 @@ export class Throttler { this.#setState(this.options.initialState ?? {}) } + /** + * Emits a change event for the throttler instance. Mostly useful for devtools. + */ + _emit = () => emitChange('throttler', this) + /** * Updates the throttler options */ @@ -177,7 +182,7 @@ export class Throttler { : 'idle', } }) - emitChange('throttler', this) + this._emit() } #getEnabled = (): boolean => { From f088dc8bb4a0868d0d2cdbfe741c30ce8a02cd35 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Thu, 14 Aug 2025 17:30:31 -0500 Subject: [PATCH 25/44] event bus goes both ways --- examples/react/asyncBatch/package.json | 6 +- examples/react/asyncDebounce/package.json | 6 +- examples/react/asyncRateLimit/package.json | 6 +- examples/react/asyncThrottle/package.json | 6 +- examples/react/batch/package.json | 6 +- examples/react/debounce/package.json | 6 +- examples/react/queue/package.json | 8 +- examples/react/queue/src/index.tsx | 4 +- examples/react/rateLimit/package.json | 6 +- .../package.json | 10 +- .../react-query-queued-prefetch/package.json | 10 +- .../package.json | 10 +- examples/react/throttle/package.json | 6 +- .../useAsyncBatchedCallback/package.json | 6 +- examples/react/useAsyncBatcher/package.json | 6 +- .../useAsyncDebouncedCallback/package.json | 6 +- examples/react/useAsyncDebouncer/package.json | 6 +- .../react/useAsyncQueuedState/package.json | 6 +- examples/react/useAsyncQueuer/package.json | 6 +- .../react/useAsyncRateLimiter/package.json | 6 +- .../package.json | 6 +- examples/react/useAsyncThrottler/package.json | 6 +- .../react/useBatchedCallback/package.json | 6 +- examples/react/useBatcher/package.json | 6 +- .../react/useDebouncedCallback/package.json | 6 +- examples/react/useDebouncedState/package.json | 6 +- examples/react/useDebouncedValue/package.json | 6 +- examples/react/useDebouncer/package.json | 6 +- examples/react/useQueuedState/package.json | 6 +- examples/react/useQueuedValue/package.json | 6 +- examples/react/useQueuer/package.json | 6 +- .../react/useQueuerWithPersister/package.json | 6 +- .../react/useRateLimitedCallback/package.json | 6 +- .../react/useRateLimitedState/package.json | 6 +- .../react/useRateLimitedValue/package.json | 6 +- examples/react/useRateLimiter/package.json | 6 +- .../useRateLimiterWithPersister/package.json | 6 +- .../react/useThrottledCallback/package.json | 6 +- examples/react/useThrottledState/package.json | 6 +- examples/react/useThrottledValue/package.json | 6 +- examples/react/useThrottler/package.json | 6 +- examples/react/util-comparison/package.json | 8 +- examples/react/util-comparison/src/index.tsx | 4 +- examples/solid/asyncBatch/package.json | 4 +- examples/solid/asyncDebounce/package.json | 4 +- examples/solid/asyncRateLimit/package.json | 4 +- examples/solid/asyncThrottle/package.json | 4 +- examples/solid/batch/package.json | 4 +- .../solid/createAsyncBatcher/package.json | 4 +- .../solid/createAsyncDebouncer/package.json | 4 +- examples/solid/createAsyncQueuer/package.json | 4 +- .../solid/createAsyncRateLimiter/package.json | 4 +- .../solid/createAsyncThrottler/package.json | 4 +- examples/solid/createBatcher/package.json | 4 +- .../solid/createDebouncedSignal/package.json | 4 +- .../solid/createDebouncedValue/package.json | 4 +- examples/solid/createDebouncer/package.json | 4 +- examples/solid/createQueuer/package.json | 4 +- .../createRateLimitedSignal/package.json | 4 +- .../solid/createRateLimitedValue/package.json | 4 +- examples/solid/createRateLimiter/package.json | 4 +- .../solid/createThrottledSignal/package.json | 4 +- .../solid/createThrottledValue/package.json | 4 +- examples/solid/createThrottler/package.json | 4 +- examples/solid/debounce/package.json | 4 +- examples/solid/queue/package.json | 4 +- examples/solid/rateLimit/package.json | 4 +- examples/solid/throttle/package.json | 4 +- package.json | 10 +- packages/pacer-devtools/package.json | 2 +- .../src/PacerContextProvider.tsx | 20 +- packages/pacer-devtools/src/PacerDevtools.tsx | 58 +- .../pacer-devtools/src/styles/use-styles.ts | 6 + packages/pacer/src/async-batcher.ts | 2 +- packages/pacer/src/async-debouncer.ts | 2 +- packages/pacer/src/async-queuer.ts | 2 +- packages/pacer/src/async-rate-limiter.ts | 2 +- packages/pacer/src/async-throttler.ts | 2 +- packages/pacer/src/batcher.ts | 2 +- packages/pacer/src/debouncer.ts | 2 +- packages/pacer/src/event-client.ts | 30 +- packages/pacer/src/queuer.ts | 11 +- packages/pacer/src/rate-limiter.ts | 2 +- packages/pacer/src/throttler.ts | 2 +- packages/react-pacer-devtools/package.json | 4 +- packages/react-pacer/package.json | 6 +- packages/solid-pacer/package.json | 2 +- pnpm-lock.yaml | 1964 +++++++++-------- 88 files changed, 1350 insertions(+), 1151 deletions(-) diff --git a/examples/react/asyncBatch/package.json b/examples/react/asyncBatch/package.json index 0b8cc9e8..52ede284 100644 --- a/examples/react/asyncBatch/package.json +++ b/examples/react/asyncBatch/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/examples/react/asyncDebounce/package.json b/examples/react/asyncDebounce/package.json index c4d1ef09..91e0bd46 100644 --- a/examples/react/asyncDebounce/package.json +++ b/examples/react/asyncDebounce/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/examples/react/asyncRateLimit/package.json b/examples/react/asyncRateLimit/package.json index 9eda5ca6..9f3aa819 100644 --- a/examples/react/asyncRateLimit/package.json +++ b/examples/react/asyncRateLimit/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/examples/react/asyncThrottle/package.json b/examples/react/asyncThrottle/package.json index 74bc125e..4cba66a8 100644 --- a/examples/react/asyncThrottle/package.json +++ b/examples/react/asyncThrottle/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/examples/react/batch/package.json b/examples/react/batch/package.json index 867045d9..1bea2172 100644 --- a/examples/react/batch/package.json +++ b/examples/react/batch/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/examples/react/debounce/package.json b/examples/react/debounce/package.json index 3f908c9f..000816f0 100644 --- a/examples/react/debounce/package.json +++ b/examples/react/debounce/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index 44fc3f25..48a26382 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -14,12 +14,12 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-devtools": "0.2.2", + "@tanstack/react-devtools": "0.4.0", "@tanstack/react-pacer-devtools": "0.14.0", - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/examples/react/queue/src/index.tsx b/examples/react/queue/src/index.tsx index 419bee91..8ffb47cd 100644 --- a/examples/react/queue/src/index.tsx +++ b/examples/react/queue/src/index.tsx @@ -1,7 +1,7 @@ import { useCallback, useState } from 'react' import ReactDOM from 'react-dom/client' import { PacerDevtoolsPanel } from '@tanstack/react-pacer-devtools' -import { TanstackDevtools } from '@tanstack/react-devtools' +import { TanStackDevtools } from '@tanstack/react-devtools' import { queue } from '@tanstack/react-pacer/queuer' function App1() { @@ -213,7 +213,7 @@ root.render(
-
- { const e = _e as unknown as { type: string; payload: any } switch (e.type) { - case 'pacer:async-batcher': { + case 'pacer:AsyncBatcher': { setStore({ asyncBatchers: updateOrAddToArray(store.asyncBatchers, e.payload), lastUpdatedByKey: { @@ -81,7 +81,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:async-debouncer': { + case 'pacer:AsyncDebouncer': { setStore({ asyncDebouncers: updateOrAddToArray( store.asyncDebouncers, @@ -94,7 +94,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:async-queuer': { + case 'pacer:AsyncQueuer': { setStore({ asyncQueuers: updateOrAddToArray(store.asyncQueuers, e.payload), lastUpdatedByKey: { @@ -104,7 +104,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:async-rate-limiter': { + case 'pacer:AsyncRateLimiter': { setStore({ asyncRateLimiters: updateOrAddToArray( store.asyncRateLimiters, @@ -117,7 +117,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:async-throttler': { + case 'pacer:AsyncThrottler': { setStore({ asyncThrottlers: updateOrAddToArray( store.asyncThrottlers, @@ -130,7 +130,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:batcher': { + case 'pacer:Batcher': { setStore({ batchers: updateOrAddToArray(store.batchers, e.payload), lastUpdatedByKey: { @@ -140,7 +140,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:debouncer': { + case 'pacer:Debouncer': { setStore({ debouncers: updateOrAddToArray(store.debouncers, e.payload), lastUpdatedByKey: { @@ -150,7 +150,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:queuer': { + case 'pacer:Queuer': { setStore({ queuers: updateOrAddToArray(store.queuers, e.payload), lastUpdatedByKey: { @@ -160,7 +160,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:rate-limiter': { + case 'pacer:RateLimiter': { setStore({ rateLimiters: updateOrAddToArray(store.rateLimiters, e.payload), lastUpdatedByKey: { @@ -170,7 +170,7 @@ export function PacerContextProvider(props: { children: any }) { }) break } - case 'pacer:throttler': { + case 'pacer:Throttler': { setStore({ throttlers: updateOrAddToArray(store.throttlers, e.payload), lastUpdatedByKey: { diff --git a/packages/pacer-devtools/src/PacerDevtools.tsx b/packages/pacer-devtools/src/PacerDevtools.tsx index e511b432..c2ae3539 100644 --- a/packages/pacer-devtools/src/PacerDevtools.tsx +++ b/packages/pacer-devtools/src/PacerDevtools.tsx @@ -1,6 +1,7 @@ import { For, createMemo, createSignal } from 'solid-js' import clsx from 'clsx' import { JsonTree } from '@tanstack/devtools-ui' +import { pacerEventClient } from '@tanstack/pacer' import { PacerContextProvider, usePacerDevtoolsState, @@ -155,7 +156,10 @@ function Shell() {
Actions
{(() => { - const inst: any = entry.instance + const util = entry.instance + const utilName = entry.type + const emitName = `d-${utilName}` as any + const inst: any = util const state = inst?.store?.state const hasPending = state && 'isPending' in state const hasEmpty = state && 'isEmpty' in state @@ -167,9 +171,14 @@ function Shell() { const hasCancel = typeof inst.cancel === 'function' const hasReset = typeof inst.reset === 'function' const hasClear = typeof inst.clear === 'function' + const hasStart = typeof inst.start === 'function' + const hasStop = typeof inst.stop === 'function' + const hasStartStop = hasStart && hasStop + + // Get running state if available + const isRunning = state?.isRunning ?? true // Determine if this is a debouncer/throttler (has isPending) - const isDebounceThrottleLike = hasPending // No actions if no methods available if ( @@ -201,7 +210,7 @@ function Shell() { class={styles().actionButton} onClick={() => { togglePending() - inst._emit() + pacerEventClient.emit(emitName, inst) }} > @@ -215,10 +224,15 @@ function Shell() { class={styles().actionButton} onClick={() => { inst.flush() - inst._emit() + pacerEventClient.emit(emitName, inst) }} disabled={ - isDebounceThrottleLike ? !isPending : isEmpty + (['Debouncer', 'Throttler'].includes( + utilName, + ) && + !isPending) || + (['Batcher', 'Queuer'].includes(utilName) && + isEmpty) } > @@ -230,10 +244,15 @@ function Shell() { class={styles().actionButton} onClick={() => { inst.cancel() - inst._emit() + pacerEventClient.emit(emitName, inst) }} disabled={ - isDebounceThrottleLike ? !isPending : false + (['Debouncer', 'Throttler'].includes( + utilName, + ) && + !isPending) || + (['Batcher', 'Queuer'].includes(utilName) && + isEmpty) } > @@ -245,7 +264,7 @@ function Shell() { class={styles().actionButton} onClick={() => { inst.reset() - inst._emit() + pacerEventClient.emit(emitName, inst) }} > @@ -257,14 +276,33 @@ function Shell() { class={styles().actionButton} onClick={() => { inst.clear() - inst._emit() + pacerEventClient.emit(emitName, inst) }} - disabled={isEmpty} + disabled={ + ['Batcher', 'Queuer'].includes(utilName) && + isEmpty + } > Clear )} + {hasStartStop && ( + + )}
) })()} diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index ac6448d4..6fa84943 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -237,6 +237,12 @@ const stylesFactory = () => { border-radius: 9999px; background: ${colors.pink[400]}; `, + actionDotPurple: css` + width: 6px; + height: 6px; + border-radius: 9999px; + background: ${colors.purple[400]}; + `, infoGrid: css` display: grid; grid-template-columns: auto 1fr; diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index f01581aa..a47c1adf 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -251,7 +251,7 @@ export class AsyncBatcher { /** * Emits a change event for the async batcher instance. Mostly useful for devtools. */ - _emit = () => emitChange('async-batcher', this) + _emit = () => emitChange('AsyncBatcher', this) /** * Updates the async batcher options diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index fb3c1464..dcf2c650 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -208,7 +208,7 @@ export class AsyncDebouncer { /** * Emits a change event for the async debouncer instance. Mostly useful for devtools. */ - _emit = () => emitChange('async-debouncer', this) + _emit = () => emitChange('AsyncDebouncer', this) /** * Updates the async debouncer options diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index 1732ef00..149c5dd8 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -304,7 +304,7 @@ export class AsyncQueuer { /** * Emits a change event for the async queuer instance. Mostly useful for devtools. */ - _emit = () => emitChange('async-queuer', this) + _emit = () => emitChange('AsyncQueuer', this) /** * Updates the queuer options. New options are merged with existing options. diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index 22513116..fb9d0464 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -235,7 +235,7 @@ export class AsyncRateLimiter { /** * Emits a change event for the async rate limiter instance. Mostly useful for devtools. */ - _emit = () => emitChange('async-rate-limiter', this) + _emit = () => emitChange('AsyncRateLimiter', this) /** * Updates the async rate limiter options diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index ef7d7425..16d726db 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -219,7 +219,7 @@ export class AsyncThrottler { /** * Emits a change event for the async throttler instance. Mostly useful for devtools. */ - _emit = () => emitChange('async-throttler', this) + _emit = () => emitChange('AsyncThrottler', this) /** * Updates the async throttler options diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index 6b3f840c..3e74d461 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -164,7 +164,7 @@ export class Batcher { /** * Emits a change event for the batcher instance. Mostly useful for devtools. */ - _emit = () => emitChange('batcher', this) + _emit = () => emitChange('Batcher', this) /** * Updates the batcher options diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index 063df6fc..ba364138 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -144,7 +144,7 @@ export class Debouncer { /** * Emits a change event for the debouncer instance. Mostly useful for devtools. */ - _emit = () => emitChange('debouncer', this) + _emit = () => emitChange('Debouncer', this) /** * Updates the debouncer options diff --git a/packages/pacer/src/event-client.ts b/packages/pacer/src/event-client.ts index bb008b09..0313a675 100644 --- a/packages/pacer/src/event-client.ts +++ b/packages/pacer/src/event-client.ts @@ -11,16 +11,26 @@ import type { RateLimiter } from './rate-limiter' import type { Throttler } from './throttler' export interface PacerEventMap { - 'pacer:async-batcher': AsyncBatcher - 'pacer:async-debouncer': AsyncDebouncer - 'pacer:async-queuer': AsyncQueuer - 'pacer:async-rate-limiter': AsyncRateLimiter - 'pacer:async-throttler': AsyncThrottler - 'pacer:batcher': Batcher - 'pacer:debouncer': Debouncer - 'pacer:queuer': Queuer - 'pacer:rate-limiter': RateLimiter - 'pacer:throttler': Throttler + 'pacer:d-AsyncBatcher': AsyncBatcher + 'pacer:d-AsyncDebouncer': AsyncDebouncer + 'pacer:d-AsyncQueuer': AsyncQueuer + 'pacer:d-AsyncRateLimiter': AsyncRateLimiter + 'pacer:d-AsyncThrottler': AsyncThrottler + 'pacer:d-Batcher': Batcher + 'pacer:d-Debouncer': Debouncer + 'pacer:d-Queuer': Queuer + 'pacer:d-RateLimiter': RateLimiter + 'pacer:d-Throttler': Throttler + 'pacer:AsyncBatcher': AsyncBatcher + 'pacer:AsyncDebouncer': AsyncDebouncer + 'pacer:AsyncQueuer': AsyncQueuer + 'pacer:AsyncRateLimiter': AsyncRateLimiter + 'pacer:AsyncThrottler': AsyncThrottler + 'pacer:Batcher': Batcher + 'pacer:Debouncer': Debouncer + 'pacer:Queuer': Queuer + 'pacer:RateLimiter': RateLimiter + 'pacer:Throttler': Throttler } class PacerEventClient extends EventClient { diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index 07393842..66d4cd00 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' export interface QueuerState { /** @@ -282,12 +282,18 @@ export class Queuer { this.addItem(item, this.options.addItemsTo ?? 'back', isLast) } } + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-Queuer') { + this.#setState(event.payload.store.state) + this.setOptions(event.payload.options) + } + }) } /** * Emits a change event for the queuer instance. Mostly useful for devtools. */ - _emit = () => emitChange('queuer', this) + _emit = () => emitChange('Queuer', this) /** * Updates the queuer options. New options are merged with existing options. @@ -523,6 +529,7 @@ export class Queuer { numberOfItems: number = this.store.state.items.length, position?: QueuePosition, ): void => { + console.log('flush from queuer') this.#clearTimeout() // clear any pending timeout for (let i = 0; i < numberOfItems; i++) { this.execute(position) diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index de9b21e2..0e56e739 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -160,7 +160,7 @@ export class RateLimiter { /** * Emits a change event for the rate limiter instance. Mostly useful for devtools. */ - _emit = () => emitChange('rate-limiter', this) + _emit = () => emitChange('RateLimiter', this) /** * Updates the rate limiter options diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index 278ae788..0705ade8 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -152,7 +152,7 @@ export class Throttler { /** * Emits a change event for the throttler instance. Mostly useful for devtools. */ - _emit = () => emitChange('throttler', this) + _emit = () => emitChange('Throttler', this) /** * Updates the throttler options diff --git a/packages/react-pacer-devtools/package.json b/packages/react-pacer-devtools/package.json index 84bdf953..62f47b1a 100644 --- a/packages/react-pacer-devtools/package.json +++ b/packages/react-pacer-devtools/package.json @@ -67,8 +67,8 @@ "@tanstack/pacer-devtools": "workspace:*" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.52.3", - "@vitejs/plugin-react": "^4.7.0", + "@eslint-react/eslint-plugin": "^1.52.4", + "@vitejs/plugin-react": "^5.0.0", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0" } diff --git a/packages/react-pacer/package.json b/packages/react-pacer/package.json index 280af70e..d9058021 100644 --- a/packages/react-pacer/package.json +++ b/packages/react-pacer/package.json @@ -175,9 +175,9 @@ "@tanstack/react-store": "^0.7.3" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.52.3", - "@types/react": "^19.1.9", - "@vitejs/plugin-react": "^4.7.0", + "@eslint-react/eslint-plugin": "^1.52.4", + "@types/react": "^19.1.10", + "@vitejs/plugin-react": "^5.0.0", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", "react": "^19.1.1" diff --git a/packages/solid-pacer/package.json b/packages/solid-pacer/package.json index 51973db2..002d70db 100644 --- a/packages/solid-pacer/package.json +++ b/packages/solid-pacer/package.json @@ -175,7 +175,7 @@ "@tanstack/solid-store": "^0.7.3" }, "devDependencies": { - "solid-js": "^1.9.7", + "solid-js": "^1.9.9", "vite-plugin-solid": "^2.11.8" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a6b6d82..eb7731cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,19 +22,19 @@ importers: version: 1.2.0 '@tanstack/config': specifier: 0.20.0 - version: 0.20.0(@types/node@24.1.0)(@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.4.2))(rollup@4.44.1)(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 0.20.0(@types/node@24.2.1)(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) '@testing-library/jest-dom': - specifier: ^6.6.4 - version: 6.6.4 + specifier: ^6.7.0 + version: 6.7.0 '@types/node': - specifier: ^24.1.0 - version: 24.1.0 + specifier: ^24.2.1 + version: 24.2.1 eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.4.2) + specifier: ^9.33.0 + version: 9.33.0(jiti@2.4.2) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2)) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2)) fast-glob: specifier: ^3.3.3 version: 3.3.3 @@ -43,13 +43,13 @@ importers: version: 26.1.0 knip: specifier: ^5.62.0 - version: 5.62.0(@types/node@24.1.0)(typescript@5.9.2) + version: 5.62.0(@types/node@24.2.1)(typescript@5.9.2) markdown-link-extractor: specifier: ^4.0.2 version: 4.0.2 nx: - specifier: ^21.3.10 - version: 21.3.10 + specifier: ^21.3.11 + version: 21.3.11 premove: specifier: ^4.0.0 version: 4.0.0 @@ -72,11 +72,11 @@ importers: specifier: 5.9.2 version: 5.9.2 vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0) + version: 3.2.4(@types/node@24.2.1)(jiti@2.4.2)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncBatch: dependencies: @@ -91,17 +91,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncDebounce: dependencies: @@ -116,17 +116,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncRateLimit: dependencies: @@ -141,17 +141,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncThrottle: dependencies: @@ -166,17 +166,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/batch: dependencies: @@ -191,17 +191,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/debounce: dependencies: @@ -216,17 +216,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/queue: dependencies: @@ -240,24 +240,24 @@ importers: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) devDependencies: + '@tanstack/react-devtools': + specifier: 0.4.0 + version: 0.4.0(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.14.0 version: link:../../../packages/react-pacer-devtools - '@tanstack/react-devtools': - specifier: 0.2.2 - version: 0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7) '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/rateLimit: dependencies: @@ -272,17 +272,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-debounced-prefetch: dependencies: @@ -290,11 +290,11 @@ importers: specifier: ^0.15.0 version: link:../../../packages/react-pacer '@tanstack/react-query': - specifier: ^5.84.1 - version: 5.84.1(react@19.1.1) + specifier: ^5.85.3 + version: 5.85.3(react@19.1.1) '@tanstack/react-query-devtools': - specifier: ^5.84.1 - version: 5.84.1(@tanstack/react-query@5.84.1(react@19.1.1))(react@19.1.1) + specifier: ^5.85.3 + version: 5.85.3(@tanstack/react-query@5.85.3(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -303,17 +303,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-queued-prefetch: dependencies: @@ -321,11 +321,11 @@ importers: specifier: ^0.15.0 version: link:../../../packages/react-pacer '@tanstack/react-query': - specifier: ^5.84.1 - version: 5.84.1(react@19.1.1) + specifier: ^5.85.3 + version: 5.85.3(react@19.1.1) '@tanstack/react-query-devtools': - specifier: ^5.84.1 - version: 5.84.1(@tanstack/react-query@5.84.1(react@19.1.1))(react@19.1.1) + specifier: ^5.85.3 + version: 5.85.3(@tanstack/react-query@5.85.3(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -334,17 +334,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-throttled-prefetch: dependencies: @@ -352,11 +352,11 @@ importers: specifier: ^0.15.0 version: link:../../../packages/react-pacer '@tanstack/react-query': - specifier: ^5.84.1 - version: 5.84.1(react@19.1.1) + specifier: ^5.85.3 + version: 5.85.3(react@19.1.1) '@tanstack/react-query-devtools': - specifier: ^5.84.1 - version: 5.84.1(@tanstack/react-query@5.84.1(react@19.1.1))(react@19.1.1) + specifier: ^5.85.3 + version: 5.85.3(@tanstack/react-query@5.85.3(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -365,17 +365,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/throttle: dependencies: @@ -390,17 +390,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatchedCallback: dependencies: @@ -415,17 +415,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatcher: dependencies: @@ -440,17 +440,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncedCallback: dependencies: @@ -465,17 +465,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncer: dependencies: @@ -490,17 +490,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuedState: dependencies: @@ -515,17 +515,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuer: dependencies: @@ -540,17 +540,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiter: dependencies: @@ -568,17 +568,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiterWithPersister: dependencies: @@ -596,17 +596,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncThrottler: dependencies: @@ -621,17 +621,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatchedCallback: dependencies: @@ -646,17 +646,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatcher: dependencies: @@ -671,17 +671,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedCallback: dependencies: @@ -696,17 +696,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedState: dependencies: @@ -721,17 +721,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedValue: dependencies: @@ -746,17 +746,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncer: dependencies: @@ -771,17 +771,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedState: dependencies: @@ -796,17 +796,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedValue: dependencies: @@ -821,17 +821,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuer: dependencies: @@ -849,17 +849,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuerWithPersister: dependencies: @@ -877,17 +877,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedCallback: dependencies: @@ -902,17 +902,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedState: dependencies: @@ -927,17 +927,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedValue: dependencies: @@ -952,17 +952,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiter: dependencies: @@ -980,17 +980,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiterWithPersister: dependencies: @@ -1008,17 +1008,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledCallback: dependencies: @@ -1033,17 +1033,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledState: dependencies: @@ -1058,17 +1058,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledValue: dependencies: @@ -1083,17 +1083,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottler: dependencies: @@ -1108,17 +1108,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/util-comparison: dependencies: @@ -1132,24 +1132,24 @@ importers: specifier: ^19.1.1 version: 19.1.1(react@19.1.1) devDependencies: + '@tanstack/react-devtools': + specifier: 0.4.0 + version: 0.4.0(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.14.0 version: link:../../../packages/react-pacer-devtools - '@tanstack/react-devtools': - specifier: 0.2.2 - version: 0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7) '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/solid/asyncBatch: dependencies: @@ -1157,15 +1157,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncDebounce: dependencies: @@ -1173,15 +1173,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncRateLimit: dependencies: @@ -1189,15 +1189,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncThrottle: dependencies: @@ -1205,15 +1205,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/batch: dependencies: @@ -1221,15 +1221,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncBatcher: dependencies: @@ -1237,15 +1237,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncDebouncer: dependencies: @@ -1253,15 +1253,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncQueuer: dependencies: @@ -1269,15 +1269,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncRateLimiter: dependencies: @@ -1285,15 +1285,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncThrottler: dependencies: @@ -1301,15 +1301,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createBatcher: dependencies: @@ -1317,15 +1317,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedSignal: dependencies: @@ -1333,15 +1333,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedValue: dependencies: @@ -1349,15 +1349,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncer: dependencies: @@ -1365,15 +1365,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createQueuer: dependencies: @@ -1381,15 +1381,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedSignal: dependencies: @@ -1397,15 +1397,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedValue: dependencies: @@ -1413,15 +1413,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimiter: dependencies: @@ -1429,15 +1429,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledSignal: dependencies: @@ -1445,15 +1445,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledValue: dependencies: @@ -1461,15 +1461,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottler: dependencies: @@ -1477,15 +1477,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/debounce: dependencies: @@ -1493,15 +1493,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/queue: dependencies: @@ -1509,15 +1509,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/rateLimit: dependencies: @@ -1525,15 +1525,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/throttle: dependencies: @@ -1541,15 +1541,15 @@ importers: specifier: ^0.13.1 version: link:../../../packages/solid-pacer solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) packages/pacer: dependencies: @@ -1564,7 +1564,7 @@ importers: dependencies: '@tanstack/devtools-ui': specifier: ^0.3.0 - version: 0.3.0(csstype@3.1.3)(solid-js@1.9.7) + version: 0.3.0(csstype@3.1.3)(solid-js@1.9.9) '@tanstack/pacer': specifier: '>=0.14.0' version: link:../pacer @@ -1575,87 +1575,74 @@ importers: specifier: ^2.1.16 version: 2.1.16(csstype@3.1.3) solid-js: - specifier: ^1.9.7 - version: 1.9.7 + specifier: ^1.9.9 + version: 1.9.9 devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) - packages/react-pacer-devtools: + packages/react-pacer: dependencies: - '@tanstack/pacer-devtools': + '@tanstack/pacer': specifier: workspace:* - version: link:../pacer-devtools - '@types/react': - specifier: '>=16.8' - version: 19.1.9 - '@types/react-dom': - specifier: '>=16.8' - version: 19.1.7(@types/react@19.1.9) - react: - specifier: '>=16.8' - version: 19.1.1 + version: link:../pacer + '@tanstack/react-store': + specifier: ^0.7.3 + version: 0.7.3(react-dom@19.1.0(react@19.1.1))(react@19.1.1) react-dom: specifier: '>=16.8' - version: 19.1.1(react@19.1.1) + version: 19.1.0(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.52.3 - version: 1.52.3(eslint@9.32.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + specifier: ^1.52.4 + version: 1.52.4(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + '@types/react': + specifier: ^19.1.10 + version: 19.1.10 '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.32.0(jiti@2.4.2)) + version: 19.1.0-rc.2(eslint@9.33.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.33.0(jiti@2.4.2)) + react: + specifier: ^19.1.1 + version: 19.1.1 - packages/solid-pacer-devtools: + packages/react-pacer-devtools: dependencies: '@tanstack/pacer-devtools': specifier: workspace:* version: link:../pacer-devtools - solid-js: - specifier: '>=1.9.7' - version: 1.9.7 - devDependencies: - vite-plugin-solid: - specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) - - packages/react-pacer: - dependencies: - '@tanstack/pacer': - specifier: workspace:* - version: link:../pacer - '@tanstack/react-store': - specifier: ^0.7.3 - version: 0.7.3(react-dom@19.1.0(react@19.1.1))(react@19.1.1) + '@types/react': + specifier: '>=16.8' + version: 19.1.9 + '@types/react-dom': + specifier: '>=16.8' + version: 19.1.7(@types/react@19.1.9) + react: + specifier: '>=16.8' + version: 19.1.1 react-dom: specifier: '>=16.8' - version: 19.1.0(react@19.1.1) + version: 19.1.1(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.52.3 - version: 1.52.3(eslint@9.32.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) - '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^1.52.4 + version: 1.52.4(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.32.0(jiti@2.4.2)) + version: 19.1.0-rc.2(eslint@9.33.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) - react: - specifier: ^19.1.1 - version: 19.1.1 + version: 5.2.0(eslint@9.33.0(jiti@2.4.2)) packages/solid-pacer: dependencies: @@ -1664,14 +1651,27 @@ importers: version: link:../pacer '@tanstack/solid-store': specifier: ^0.7.3 - version: 0.7.3(solid-js@1.9.7) + version: 0.7.3(solid-js@1.9.9) devDependencies: solid-js: - specifier: ^1.9.7 + specifier: ^1.9.9 + version: 1.9.9 + vite-plugin-solid: + specifier: ^2.11.8 + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + + packages/solid-pacer-devtools: + dependencies: + '@tanstack/pacer-devtools': + specifier: workspace:* + version: link:../pacer-devtools + solid-js: + specifier: '>=1.9.7' version: 1.9.7 + devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.7)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) packages: @@ -2163,20 +2163,20 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.52.3': - resolution: {integrity: sha512-71afQeBz0t5FqxLPfOgfQy2703t4T4tM5ooF/swIfUljCQxrFvIYivzYU67wrwLSnmkSfFJKp99bUCz7L3IP4Q==} + '@eslint-react/ast@1.52.4': + resolution: {integrity: sha512-zsNZXrVzFhtnc+Wx6TiREwek6zKDEkFEaW1DyG6K3iR8ibGm9PuR16iYWDWsRL/YfQz9ZGHVapHO7jNthDVSvg==} engines: {node: '>=18.18.0'} - '@eslint-react/core@1.52.3': - resolution: {integrity: sha512-N/fY3q1V0F81OzKGn0ZopmHY+OQHYQiS49MvpSWhNciL+TDxOo4CSt+wayMz5/9G/B/PwGB68eprjow0AaTYzA==} + '@eslint-react/core@1.52.4': + resolution: {integrity: sha512-cqS4FbQ3wSowk/73+NHI21jC9sbnAbCWIAPRWe8EpM+g5yrqYMydriI1vTMO7g93LSTAknc+mGdwI/Fi8Y991A==} engines: {node: '>=18.18.0'} - '@eslint-react/eff@1.52.3': - resolution: {integrity: sha512-CU07yUuHrrBbb8C82via3GrAXkSMbcpxd6f18f/jjEmMAXzKbN2yq1t0GfG7iwIyZexDZ7R3QBa9ksk6iwtDAA==} + '@eslint-react/eff@1.52.4': + resolution: {integrity: sha512-n2r2ncw8pTA7WuMI4aM9R4kPNiXaF8o0lH6X/pa/XP/hhVKO6u6R2uoLV8ltm53UZVVY+6qz92hRiLoTwefd3A==} engines: {node: '>=18.18.0'} - '@eslint-react/eslint-plugin@1.52.3': - resolution: {integrity: sha512-5hR4BF4m6DRXeBKSlJ7kcFolZdXxA6tf1lyq21UbeM8jUmY/qqMBotMTfhjkUdrhqL8/kGk3HCELpntYZ5n69Q==} + '@eslint-react/eslint-plugin@1.52.4': + resolution: {integrity: sha512-oUbmUUFkt/1OCiIO5Oy+66bMGlVNt5SMnEPmxXY77tTQ9vQUQQDdVJ2lUGVZr61IpINW2Y/has78GMNCjONsgQ==} engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2185,28 +2185,28 @@ packages: typescript: optional: true - '@eslint-react/kit@1.52.3': - resolution: {integrity: sha512-IOsfaRSih7VdL9ZDjuqc7kjOlHOQOaK6hkSENK64dUcvcl6YwHk8/JXfV/glHTp3JxXrPSazBrnZKNXk0DzjKg==} + '@eslint-react/kit@1.52.4': + resolution: {integrity: sha512-w1o8Qh/3rWQBIFB/ENS9A/EeGhUkAheYWeA4uHLuLMZ4ULwXU2c6aw3QZ9MW12lJ5JNWKiu3MuszVHTQmYUM/Q==} engines: {node: '>=18.18.0'} - '@eslint-react/shared@1.52.3': - resolution: {integrity: sha512-+0/2SOkNxLKBtYVLx/BCNo5xTn+dxkzP6C63gQ2ehNudMAt3zf2DouD62cHSSbl+eSAgc0zWYg8ssm5ksLN4xw==} + '@eslint-react/shared@1.52.4': + resolution: {integrity: sha512-ckRfgtBpsEGQgS9x2N/u+TB67UeASzYclQdlbhn29Y3/G3lvYTrXEyo49jZKVkpBW8ewSQAlwqUeipOrfv27XA==} engines: {node: '>=18.18.0'} - '@eslint-react/var@1.52.3': - resolution: {integrity: sha512-i2dfgoH93MHJNXqzS0vYIIpI2e6djIfzdnpMRHUyBYjTHFSPapE7RhcHFrAVPUrd85cUxIPW3pkTKAhkhUhYeA==} + '@eslint-react/var@1.52.4': + resolution: {integrity: sha512-tckDIawDTtpG3UVg/XEqxULq669B7Br2q84Hh3d3pTPojUamRZ+zbWY3gwyS+JS9iQ1lI9aOInQISdKzRuGWKQ==} engines: {node: '>=18.18.0'} '@eslint/config-array@0.21.0': resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.0': - resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} + '@eslint/config-helpers@0.3.1': + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.1': - resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': @@ -2217,16 +2217,16 @@ packages: resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.32.0': - resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} + '@eslint/js@9.33.0': + resolution: {integrity: sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.4': - resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@faker-js/faker@9.9.0': @@ -2338,53 +2338,53 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nx/nx-darwin-arm64@21.3.10': - resolution: {integrity: sha512-umYmO5xE9e7BtVzOYWurjeZEpqO/KnFDl+sLf58EzKOBf+tWDp1PVTpmuYhPxjlH6WkVaYCTA62L3SkIahKZ+w==} + '@nx/nx-darwin-arm64@21.3.11': + resolution: {integrity: sha512-qXZrW6kfsfGG9n4cWugR2v8ys7P1SsbQuFahlbNSTd7g+ZxozaOnc7tyxW9XuY84KQ35HwP/QSu1E13fK5CXwQ==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@21.3.10': - resolution: {integrity: sha512-f2vl8ba5IyG/3fhvrUARg/xKviONhg5FHmev5krSIRYdFXsCNgI8qX251/Wxr7zjABnARdwfEZcWMTY4QRXovA==} + '@nx/nx-darwin-x64@21.3.11': + resolution: {integrity: sha512-6NJEIGRITpFZYptJtr/wdnVuidAS/wONMMSwX5rgAqh5A9teI0vxZVOgG6n5f6NQyqEDvZ9ytcIvLsQWA4kJFg==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@21.3.10': - resolution: {integrity: sha512-Tl0haFCRj+1Updj+KZYOxdhNlrp0CUiGIGo0n3S4ruuwtqSmSdwPb7ZGIvIHSQloX2k7CP/oRQw68HoUmsnIyA==} + '@nx/nx-freebsd-x64@21.3.11': + resolution: {integrity: sha512-9VZOM9mutzuZCUgijHXrIl3NgKt2CWuH/awLqDS8ijhLs6WfI5TYTa+mFwx90dfZZ4y/jy6XWXa2Ee3OShf7Hg==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@21.3.10': - resolution: {integrity: sha512-3siCCKhlaBp3a56KbkPyixoW7m/H1Cx6vfMxBHro3qqG8m7NYQ5Iy/Ih8G1ghAhr1KoKeXMPAoEglZVbFXDypQ==} + '@nx/nx-linux-arm-gnueabihf@21.3.11': + resolution: {integrity: sha512-a05tAySKDEWt0TGoSnWp/l5+HL/CDJQkHfI9pXho85oDSkVRzhOInAn1EeZB/F+Q3PnJFsMHMhbuu2/nm3uYJA==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@21.3.10': - resolution: {integrity: sha512-9Phr9FBVDr86QQ32Qxf7GyfBpgPfYDf0TWkWZe/EhR3UijoCM3a2WMyoLWxhl+oTkjxQVBP7adqToh7Da0hyuQ==} + '@nx/nx-linux-arm64-gnu@21.3.11': + resolution: {integrity: sha512-MPeivf0ptNpzQYvww6zHIqVbE5dTT2isl/WqzGyy7NgSeYDpFXmouDCQaeKxo5WytMVRCvCw/NnWTQuCK6TjnA==} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@21.3.10': - resolution: {integrity: sha512-TxgwIXOFrCbBz3xlP+aCil+KaHH6pRLA+JW4RD0ZMes/iP+99R+/+gKznw7CEkpXkzX194gGTe2NlM45129uEg==} + '@nx/nx-linux-arm64-musl@21.3.11': + resolution: {integrity: sha512-/hJpc4VJsbxDEreXt5Ka9HJ3TBEHgIa9y/i+H9MmWOeapCdH1Edhx58Heuv9OaX7kK8Y8q0cSicv0dJCghiTjA==} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@21.3.10': - resolution: {integrity: sha512-UNIEt/i4OpGvjS8ds/m2lv/4C6SmaWTzIfok59TL/8BG0ab5x/lADdKd6OBbvhmDiBdz+As3uLiCN03uRsz95Q==} + '@nx/nx-linux-x64-gnu@21.3.11': + resolution: {integrity: sha512-pTBHuloqTxpTHa/fdKjHkFFsfW16mEcTp37HDtoQpjPfcd9nO8CYO8OClaewr9khNqCnSbCLfSoIg/alnb7BWw==} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@21.3.10': - resolution: {integrity: sha512-/ETUG3auZjQmWliaHQQFr/cqb493HGShDrcJYa0Zd67TZeUHsYY5lc71u6pA7d+aP/r51RToamxpDK0cGmqINQ==} + '@nx/nx-linux-x64-musl@21.3.11': + resolution: {integrity: sha512-OhFjURB68rd6xld8t8fiNpopF2E7v+8/jfbpsku9c0gdV2UhzoxCeZwooe7qhQjCcjVO8JNOs4dAf7qs1VtpMw==} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@21.3.10': - resolution: {integrity: sha512-xBOzmfjB695KkFZ3a2IblN/Vb6I9LlDbIV2I1X/Ks8jdK0q1Fh+mqZWDfOUuBr5oKcUPD5pZiH/vpr5mBssLig==} + '@nx/nx-win32-arm64-msvc@21.3.11': + resolution: {integrity: sha512-pGE2Td13oEj7aeogwCL+2fjmpabQVSduKfGOTlt4YoMlM0w0bXYSWqwiGBMKbMA50qkhnVapwwkuWF38PgCIxg==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@21.3.10': - resolution: {integrity: sha512-TZPwjF1adI8FCJp7MmgXNtnwuW1AOBSiPEHLz2RM8cJKBc7rlmXw/MWhnYhz2lkZQ+vpndoLGtpinYo5cp/NQA==} + '@nx/nx-win32-x64-msvc@21.3.11': + resolution: {integrity: sha512-KJqLL/Zyx96hs+7pKbo/fsU7ZTFSLeZLnYQu05o6fvJJ5I1+p85t212/7vkbKKWJncyMospQdzLr3zLG3A/u8A==} cpu: [x64] os: [win32] @@ -2457,8 +2457,8 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rolldown/pluginutils@1.0.0-beta.30': + resolution: {integrity: sha512-whXaSoNUFiyDAjkUF8OBpOm77Szdbk5lGNqFe6CbVbJFrhCCPinCbRA3NjawwlNHla1No7xvXXh+CpSxnPfUEw==} '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} @@ -2667,20 +2667,14 @@ packages: resolution: {integrity: sha512-78AAfg9KfSDE+pQLRJo20bxX3A40ea14kFqNmzuMb7zFJNfR5L87kAEOju6QXu7cbk9r2r7EEV2a8PgHOsD7Kg==} engines: {node: '>=18'} - '@tanstack/devtools-ui@0.2.2': - resolution: {integrity: sha512-G2gRyoGpjtr25w9BqQzPbefiJ9WALWYLOVxVr+NoqOLDA680nUO5KJjp7oLZMfnKssWxACgulaQ3DUmGGJuysQ==} - engines: {node: '>=18'} - peerDependencies: - solid-js: '>=1.9.7' - '@tanstack/devtools-ui@0.3.0': resolution: {integrity: sha512-lyP0eM6juIWn8zgI8xI32Lh86gCnjUyNePE9F7Bfgkv5taILmmJAHW5Mme4T2ufv7L8NLwOiBY/bZYnP4zev0w==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' - '@tanstack/devtools@0.3.0': - resolution: {integrity: sha512-uxj3MM2/ZlQDlhnBoUSlJC8oneJ+sPh6hK0kgiKZAEgrlUvZfUNgKGhrmMHZaAGl/WEglhZoxXwvvo9HAFT8yw==} + '@tanstack/devtools@0.4.0': + resolution: {integrity: sha512-3LrVUMI/s76XxYbygecOueXPrUf9gDc700iebQrBZ0ZvDmZDB/Umwa84gNx6NAxfQyI24lvB0IqQ8lp970oDSg==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' @@ -2697,14 +2691,14 @@ packages: resolution: {integrity: sha512-RC0yRBFJvGuR58tKQUIkMXVEiATXgESIc+3/NTqoCC7D2YOF4fZGmHGYIanFEPQH7EGfQ5+Bwi+H6BOtKnymtw==} engines: {node: '>=18'} - '@tanstack/query-core@5.83.1': - resolution: {integrity: sha512-OG69LQgT7jSp+5pPuCfzltq/+7l2xoweggjme9vlbCPa/d7D7zaqv5vN/S82SzSYZ4EDLTxNO1PWrv49RAS64Q==} + '@tanstack/query-core@5.85.3': + resolution: {integrity: sha512-9Ne4USX83nHmRuEYs78LW+3lFEEO2hBDHu7mrdIgAFx5Zcrs7ker3n/i8p4kf6OgKExmaDN5oR0efRD7i2J0DQ==} '@tanstack/query-devtools@5.84.0': resolution: {integrity: sha512-fbF3n+z1rqhvd9EoGp5knHkv3p5B2Zml1yNRjh7sNXklngYI5RVIWUrUjZ1RIcEoscarUb0+bOvIs5x9dwzOXQ==} - '@tanstack/react-devtools@0.2.2': - resolution: {integrity: sha512-Ig8ZYqUPJ+nwRvF/RpkQHPbgEkrL3b2PjeYBgXgT5OemyRUlmG12UutvMBV+bJuBsSOKHrNf29IvzC0Vw9Bt1A==} + '@tanstack/react-devtools@0.4.0': + resolution: {integrity: sha512-QkN0WcbwKjYa107yEYOau+yhaay3XXwL2Ue+V0JxzaBOhvbnFI9tDzvIx7T1NZs8qEUgSjsqmMj/H81cISs2EA==} engines: {node: '>=18'} peerDependencies: '@types/react': '>=16.8' @@ -2719,14 +2713,14 @@ packages: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/react-query-devtools@5.84.1': - resolution: {integrity: sha512-nle+OQ9B3Z3EG2R3ixvaNcJ6OeqGwmAc5iMDW6Vj+emLZkWRrN3BDsrzZQu414n34lpxplnC7z1jmKuU/scHCQ==} + '@tanstack/react-query-devtools@5.85.3': + resolution: {integrity: sha512-WSVweCE1Kh1BVvPDHAmLgGT+GGTJQ9+a7bVqzD+zUiUTht+salJjYm5nikpMNaHFPJV102TCYdvgHgBXtURRNg==} peerDependencies: - '@tanstack/react-query': ^5.84.1 + '@tanstack/react-query': ^5.85.3 react: ^18 || ^19 - '@tanstack/react-query@5.84.1': - resolution: {integrity: sha512-zo7EUygcWJMQfFNWDSG7CBhy8irje/XY0RDVKKV4IQJAysb+ZJkkJPcnQi+KboyGUgT+SQebRFoTqLuTtfoDLw==} + '@tanstack/react-query@5.85.3': + resolution: {integrity: sha512-AqU8TvNh5GVIE8I+TUU0noryBRy7gOY0XhSayVXmOPll4UkZeLWKDwi0rtWOZbwLRCbyxorfJ5DIjDqE7GXpcQ==} peerDependencies: react: ^18 || ^19 @@ -2752,8 +2746,8 @@ packages: resolution: {integrity: sha512-WpL1C9iR5/U7g3GpvHIssN5QvKnDnWhW05BQhaD6bAqoPCkQyBepxUF8ZRO4IGZRGVAZeMVqTbUA05BAQH/88g==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.6.4': - resolution: {integrity: sha512-xDXgLjVunjHqczScfkCJ9iyjdNOVHvvCdqHSSxwM9L0l/wHkTRum67SDc020uAlCoqktJplgO2AAQeLP1wgqDQ==} + '@testing-library/jest-dom@6.7.0': + resolution: {integrity: sha512-RI2e97YZ7MRa+vxP4UUnMuMFL2buSsf0ollxUbTgrbPLKhMn8KVTx7raS6DYjC7v1NDVrioOvaShxsguLNISCA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@tybys/wasm-util@0.10.0': @@ -2798,14 +2792,17 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@24.1.0': - resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} + '@types/node@24.2.1': + resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} '@types/react-dom@19.1.7': resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} peerDependencies: '@types/react': ^19.0.0 + '@types/react@19.1.10': + resolution: {integrity: sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==} + '@types/react@19.1.9': resolution: {integrity: sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==} @@ -2833,16 +2830,32 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/project-service@8.39.1': + resolution: {integrity: sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.37.0': resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.39.1': + resolution: {integrity: sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.37.0': resolution: {integrity: sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/tsconfig-utils@8.39.1': + resolution: {integrity: sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.37.0': resolution: {integrity: sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2850,16 +2863,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/type-utils@8.39.1': + resolution: {integrity: sha512-gu9/ahyatyAdQbKeHnhT4R+y3YLtqqHyvkfDxaBYk97EcbfChSJXyaJnIL3ygUv7OuZatePHmQvuH5ru0lnVeA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@8.37.0': resolution: {integrity: sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.39.1': + resolution: {integrity: sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.37.0': resolution: {integrity: sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/typescript-estree@8.39.1': + resolution: {integrity: sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.37.0': resolution: {integrity: sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2867,10 +2897,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@8.39.1': + resolution: {integrity: sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.37.0': resolution: {integrity: sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.39.1': + resolution: {integrity: sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -2966,9 +3007,9 @@ packages: cpu: [x64] os: [win32] - '@vitejs/plugin-react@4.7.0': - resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} - engines: {node: ^14.18.0 || >=16.0.0} + '@vitejs/plugin-react@5.0.0': + resolution: {integrity: sha512-Jx9JfsTa05bYkS9xo0hkofp2dCmp1blrKjw9JONs5BTHOvJCgLbaPSuZLGSVJW6u2qe0tc4eevY0+gSNNi0YCw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -3529,8 +3570,8 @@ packages: peerDependencies: eslint: '>=7' - eslint-plugin-react-debug@1.52.3: - resolution: {integrity: sha512-mbyk+K0/NqydAHpTGj/6w8Py8unOpUCqhg42NnxQtFCL9G7pTEiEk2eDjnQAi4Up00THP4nYvjfnuiTf1ZKaIw==} + eslint-plugin-react-debug@1.52.4: + resolution: {integrity: sha512-6D6CUWP2sL1KYEGmNdudnj1Dt3tqy7e/XhVMkdQ6j/pw1M5HpQE6xK15B5WlvWfJWTYo4g15NXfuJKMHXNGHQw==} engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3539,8 +3580,8 @@ packages: typescript: optional: true - eslint-plugin-react-dom@1.52.3: - resolution: {integrity: sha512-HUMzOYrgRdT6di+OMMJWBCbIB9yY3YUkLvDhExsfap0HX3X1EpZutEWdQg4CMthF2rslYMMF2cnN5pOVrQ5Rkw==} + eslint-plugin-react-dom@1.52.4: + resolution: {integrity: sha512-UVt3T48F48Nbl40eqSzwkjpUnLnobj0St7EwpbItMhEOgcwjle8Jrxe2odetQBCuwPZ0dkeH0yE1PbAlNfQU/A==} engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3549,8 +3590,8 @@ packages: typescript: optional: true - eslint-plugin-react-hooks-extra@1.52.3: - resolution: {integrity: sha512-1UXAhkgbFsMlY+eEII6rLSksRIvnlnNEZxRqUTixNf4e05u5+48RUqqZr7rRdkfVhr+1DPO1sIx8wQGAiN7IoQ==} + eslint-plugin-react-hooks-extra@1.52.4: + resolution: {integrity: sha512-GUjMLCg8fRzM9cHXSTJximuYINUVmAJE5R/9J/lonDwRHf8vWG+KjsZXXdRfZExFgLRcwl/3OS4d1hnpIsowaw==} engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3565,8 +3606,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-naming-convention@1.52.3: - resolution: {integrity: sha512-sfemWPC9VX5T7TVJk6OKQkTux8pnyVIwBOZbDntWnfCqV6B74MIvY2nGr9TEn8DFVWbMoTxVQY0MGlREcrbZsA==} + eslint-plugin-react-naming-convention@1.52.4: + resolution: {integrity: sha512-gv9HnUgseL2U9Cra3QQzxX2BapL+JnGgZzjoGxOuljInUWIqc5TQulpTlz4Tch3ZWlNGhwgHTKkFEziAO2c5Cg==} engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3575,8 +3616,8 @@ packages: typescript: optional: true - eslint-plugin-react-web-api@1.52.3: - resolution: {integrity: sha512-Hd05kVsGmSHBZpQsQDueobfLHDywXP6Ne+dPf24Ev3mMKi5XMkLZ/sD+JmJKyNYvkWMwB1Wn4gl1aIz7HneKeQ==} + eslint-plugin-react-web-api@1.52.4: + resolution: {integrity: sha512-/n9QlX8Ol2GgXvQZ/a7QcCMZjr29Mk/N4KV09uyDB4tTxJdv/fQEvSm93FDtqM2OPuvA058oyWOM3ruHhGf8uw==} engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3585,8 +3626,8 @@ packages: typescript: optional: true - eslint-plugin-react-x@1.52.3: - resolution: {integrity: sha512-Sds4CXHtdgaCdzoypcY3DSshS0JtK2Eh+QbpUAPUqs0UWQ3qtQKxY0nntTSYeF+GXDfOdAYDkl/8+VFpHQwIKg==} + eslint-plugin-react-x@1.52.4: + resolution: {integrity: sha512-znbM7mbL7tgm2PQbSAZ83jX2JTxpbXJQZk2vpJH98iEZCwcVvC3joiI6szLyyykAqFgldmpghebxvBnVw+aZMQ==} engines: {node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3619,8 +3660,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.32.0: - resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} + eslint@9.33.0: + resolution: {integrity: sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4296,8 +4337,8 @@ packages: nwsapi@2.2.18: resolution: {integrity: sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==} - nx@21.3.10: - resolution: {integrity: sha512-am85Vntk1UQVzGjFltNzrb9b7Lhz8nPDRXkC0BJXBoG6w0T9Qf8k/3bwbo8nzZgREdVIUFO5dvOZ6gWUZw/UFA==} + nx@21.3.11: + resolution: {integrity: sha512-nj2snZ3mHZnbHcoB3NUdxbch9L1sQKV1XccLs1B79fmI/N5oOgWgctm/bWoZH2UH5b4A8ZLAMTsC6YnSJGbcaw==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -4693,6 +4734,9 @@ packages: solid-js@1.9.7: resolution: {integrity: sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw==} + solid-js@1.9.9: + resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==} + solid-refresh@0.6.3: resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} peerDependencies: @@ -4872,8 +4916,8 @@ packages: peerDependencies: typescript: '>=4.0.0' - ts-pattern@5.7.1: - resolution: {integrity: sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==} + ts-pattern@5.8.0: + resolution: {integrity: sha512-kIjN2qmWiHnhgr5DAkAafF9fwb0T5OhMVSWrm8XEdTFnX6+wfXwYOFjeF86UZ54vduqiR7BfqScFmXSzSaH8oA==} tsconfck@3.1.5: resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} @@ -4942,8 +4986,8 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - undici-types@7.8.0: - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + undici-types@7.10.0: + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} undici@6.21.3: resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} @@ -5018,8 +5062,8 @@ packages: vite: optional: true - vite@7.0.6: - resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} + vite@7.1.2: + resolution: {integrity: sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -5239,8 +5283,8 @@ packages: zod@3.25.72: resolution: {integrity: sha512-Cl+fe4dNL4XumOBNBsr0lHfA80PQiZXHI4xEMTEr8gt6aGz92t3lBA32e71j9+JeF/VAYvdfBnuwJs+BMx/BrA==} - zod@4.0.5: - resolution: {integrity: sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==} + zod@4.0.17: + resolution: {integrity: sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ==} snapshots: @@ -5835,100 +5879,100 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.33.0(jiti@2.4.2))': dependencies: - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/ast@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@eslint-react/eff': 1.52.3 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/core@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': - dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/core@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + dependencies: + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/var': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) birecord: 0.1.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/eff@1.52.3': {} - - '@eslint-react/eslint-plugin@1.52.3(eslint@9.32.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2)': - dependencies: - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) - eslint-plugin-react-debug: 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-dom: 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-hooks-extra: 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-naming-convention: 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-web-api: 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-x: 1.52.3(eslint@9.32.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + '@eslint-react/eff@1.52.4': {} + + '@eslint-react/eslint-plugin@1.52.4(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2)': + dependencies: + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) + eslint-plugin-react-debug: 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-react-dom: 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-react-hooks-extra: 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-react-naming-convention: 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-react-web-api: 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-react-x: 1.52.4(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - ts-api-utils - '@eslint-react/kit@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/kit@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@eslint-react/eff': 1.52.3 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - ts-pattern: 5.7.1 - zod: 4.0.5 + '@eslint-react/eff': 1.52.4 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + ts-pattern: 5.8.0 + zod: 4.0.17 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/shared@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - ts-pattern: 5.7.1 - zod: 4.0.5 + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + ts-pattern: 5.8.0 + zod: 4.0.17 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/var@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 transitivePeerDependencies: - eslint - supports-color @@ -5942,9 +5986,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.0': {} + '@eslint/config-helpers@0.3.1': {} - '@eslint/core@0.15.1': + '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 @@ -5964,13 +6008,13 @@ snapshots: '@eslint/js@9.31.0': {} - '@eslint/js@9.32.0': {} + '@eslint/js@9.33.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.4': + '@eslint/plugin-kit@0.3.5': dependencies: - '@eslint/core': 0.15.1 + '@eslint/core': 0.15.2 levn: 0.4.1 '@faker-js/faker@9.9.0': {} @@ -6053,23 +6097,23 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@microsoft/api-extractor-model@7.29.6(@types/node@24.1.0)': + '@microsoft/api-extractor-model@7.29.6(@types/node@24.2.1)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.7.0(@types/node@24.1.0) + '@rushstack/node-core-library': 5.7.0(@types/node@24.2.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.47.7(@types/node@24.1.0)': + '@microsoft/api-extractor@7.47.7(@types/node@24.2.1)': dependencies: - '@microsoft/api-extractor-model': 7.29.6(@types/node@24.1.0) + '@microsoft/api-extractor-model': 7.29.6(@types/node@24.2.1) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.7.0(@types/node@24.1.0) + '@rushstack/node-core-library': 5.7.0(@types/node@24.2.1) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.0(@types/node@24.1.0) - '@rushstack/ts-command-line': 4.22.6(@types/node@24.1.0) + '@rushstack/terminal': 0.14.0(@types/node@24.2.1) + '@rushstack/ts-command-line': 4.22.6(@types/node@24.2.1) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -6120,34 +6164,34 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@nx/nx-darwin-arm64@21.3.10': + '@nx/nx-darwin-arm64@21.3.11': optional: true - '@nx/nx-darwin-x64@21.3.10': + '@nx/nx-darwin-x64@21.3.11': optional: true - '@nx/nx-freebsd-x64@21.3.10': + '@nx/nx-freebsd-x64@21.3.11': optional: true - '@nx/nx-linux-arm-gnueabihf@21.3.10': + '@nx/nx-linux-arm-gnueabihf@21.3.11': optional: true - '@nx/nx-linux-arm64-gnu@21.3.10': + '@nx/nx-linux-arm64-gnu@21.3.11': optional: true - '@nx/nx-linux-arm64-musl@21.3.10': + '@nx/nx-linux-arm64-musl@21.3.11': optional: true - '@nx/nx-linux-x64-gnu@21.3.10': + '@nx/nx-linux-x64-gnu@21.3.11': optional: true - '@nx/nx-linux-x64-musl@21.3.10': + '@nx/nx-linux-x64-musl@21.3.11': optional: true - '@nx/nx-win32-arm64-msvc@21.3.10': + '@nx/nx-win32-arm64-msvc@21.3.11': optional: true - '@nx/nx-win32-x64-msvc@21.3.10': + '@nx/nx-win32-x64-msvc@21.3.11': optional: true '@oxc-resolver/binding-darwin-arm64@11.1.0': @@ -6193,7 +6237,7 @@ snapshots: '@publint/pack@0.1.2': {} - '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/pluginutils@1.0.0-beta.30': {} '@rollup/pluginutils@5.1.4(rollup@4.44.1)': dependencies: @@ -6263,7 +6307,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.44.1': optional: true - '@rushstack/node-core-library@5.7.0(@types/node@24.1.0)': + '@rushstack/node-core-library@5.7.0(@types/node@24.2.1)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -6274,23 +6318,23 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.2.1 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.14.0(@types/node@24.1.0)': + '@rushstack/terminal@0.14.0(@types/node@24.2.1)': dependencies: - '@rushstack/node-core-library': 5.7.0(@types/node@24.1.0) + '@rushstack/node-core-library': 5.7.0(@types/node@24.2.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.2.1 - '@rushstack/ts-command-line@4.22.6(@types/node@24.1.0)': + '@rushstack/ts-command-line@4.22.6(@types/node@24.2.1)': dependencies: - '@rushstack/terminal': 0.14.0(@types/node@24.1.0) + '@rushstack/terminal': 0.14.0(@types/node@24.2.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -6327,32 +6371,32 @@ snapshots: '@size-limit/file': 11.2.0(size-limit@11.2.0) size-limit: 11.2.0 - '@solid-primitives/event-listener@2.4.3(solid-js@1.9.7)': + '@solid-primitives/event-listener@2.4.3(solid-js@1.9.9)': dependencies: - '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) - solid-js: 1.9.7 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) + solid-js: 1.9.9 - '@solid-primitives/keyboard@1.3.3(solid-js@1.9.7)': + '@solid-primitives/keyboard@1.3.3(solid-js@1.9.9)': dependencies: - '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.7) - '@solid-primitives/rootless': 1.5.2(solid-js@1.9.7) - '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) - solid-js: 1.9.7 + '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9) + '@solid-primitives/rootless': 1.5.2(solid-js@1.9.9) + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) + solid-js: 1.9.9 - '@solid-primitives/rootless@1.5.2(solid-js@1.9.7)': + '@solid-primitives/rootless@1.5.2(solid-js@1.9.9)': dependencies: - '@solid-primitives/utils': 6.3.2(solid-js@1.9.7) - solid-js: 1.9.7 + '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) + solid-js: 1.9.9 - '@solid-primitives/utils@6.3.2(solid-js@1.9.7)': + '@solid-primitives/utils@6.3.2(solid-js@1.9.9)': dependencies: - solid-js: 1.9.7 + solid-js: 1.9.9 - '@stylistic/eslint-plugin@5.2.0(eslint@9.32.0(jiti@2.4.2))': + '@stylistic/eslint-plugin@5.2.0(eslint@9.33.0(jiti@2.4.2))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) '@typescript-eslint/types': 8.37.0 - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -6369,12 +6413,12 @@ snapshots: transitivePeerDependencies: - encoding - '@tanstack/config@0.20.0(@types/node@24.1.0)(@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.4.2))(rollup@4.44.1)(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/config@0.20.0(@types/node@24.2.1)(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@tanstack/eslint-config': 0.3.0(@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@tanstack/eslint-config': 0.3.0(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) '@tanstack/publish-config': 0.2.0 '@tanstack/typedoc-config': 0.2.0(typescript@5.9.2) - '@tanstack/vite-config': 0.2.0(@types/node@24.1.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + '@tanstack/vite-config': 0.2.0(@types/node@24.2.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - '@typescript-eslint/utils' @@ -6394,44 +6438,37 @@ snapshots: '@tanstack/devtools-event-client@0.2.1': {} - '@tanstack/devtools-ui@0.2.2(csstype@3.1.3)(solid-js@1.9.7)': - dependencies: - goober: 2.1.16(csstype@3.1.3) - solid-js: 1.9.7 - transitivePeerDependencies: - - csstype - - '@tanstack/devtools-ui@0.3.0(csstype@3.1.3)(solid-js@1.9.7)': + '@tanstack/devtools-ui@0.3.0(csstype@3.1.3)(solid-js@1.9.9)': dependencies: goober: 2.1.16(csstype@3.1.3) - solid-js: 1.9.7 + solid-js: 1.9.9 transitivePeerDependencies: - csstype - '@tanstack/devtools@0.3.0(csstype@3.1.3)(solid-js@1.9.7)': + '@tanstack/devtools@0.4.0(csstype@3.1.3)(solid-js@1.9.9)': dependencies: - '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.7) + '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.9) '@tanstack/devtools-event-bus': 0.2.1 - '@tanstack/devtools-ui': 0.2.2(csstype@3.1.3)(solid-js@1.9.7) + '@tanstack/devtools-ui': 0.3.0(csstype@3.1.3)(solid-js@1.9.9) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) - solid-js: 1.9.7 + solid-js: 1.9.9 transitivePeerDependencies: - bufferutil - csstype - utf-8-validate - '@tanstack/eslint-config@0.3.0(@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@tanstack/eslint-config@0.3.0(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: '@eslint/js': 9.31.0 - '@stylistic/eslint-plugin': 5.2.0(eslint@9.32.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.4.2)) - eslint-plugin-n: 17.21.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-pnpm: 1.0.0(eslint@9.32.0(jiti@2.4.2)) + '@stylistic/eslint-plugin': 5.2.0(eslint@9.33.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2)) + eslint-plugin-n: 17.21.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-pnpm: 1.0.0(eslint@9.33.0(jiti@2.4.2)) globals: 16.3.0 jsonc-eslint-parser: 2.4.0 - typescript-eslint: 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - vue-eslint-parser: 10.2.0(eslint@9.32.0(jiti@2.4.2)) + typescript-eslint: 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + vue-eslint-parser: 10.2.0(eslint@9.33.0(jiti@2.4.2)) yaml-eslint-parser: 1.3.0 transitivePeerDependencies: - '@typescript-eslint/utils' @@ -6451,15 +6488,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/query-core@5.83.1': {} + '@tanstack/query-core@5.85.3': {} '@tanstack/query-devtools@5.84.0': {} - '@tanstack/react-devtools@0.2.2(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7)': + '@tanstack/react-devtools@0.4.0(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)': dependencies: - '@tanstack/devtools': 0.3.0(csstype@3.1.3)(solid-js@1.9.7) - '@types/react': 19.1.9 - '@types/react-dom': 19.1.7(@types/react@19.1.9) + '@tanstack/devtools': 0.4.0(csstype@3.1.3)(solid-js@1.9.9) + '@types/react': 19.1.10 + '@types/react-dom': 19.1.7(@types/react@19.1.10) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) transitivePeerDependencies: @@ -6474,15 +6511,15 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@tanstack/react-query-devtools@5.84.1(@tanstack/react-query@5.84.1(react@19.1.1))(react@19.1.1)': + '@tanstack/react-query-devtools@5.85.3(@tanstack/react-query@5.85.3(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/query-devtools': 5.84.0 - '@tanstack/react-query': 5.84.1(react@19.1.1) + '@tanstack/react-query': 5.85.3(react@19.1.1) react: 19.1.1 - '@tanstack/react-query@5.84.1(react@19.1.1)': + '@tanstack/react-query@5.85.3(react@19.1.1)': dependencies: - '@tanstack/query-core': 5.83.1 + '@tanstack/query-core': 5.85.3 react: 19.1.1 '@tanstack/react-store@0.7.3(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': @@ -6492,10 +6529,10 @@ snapshots: react-dom: 19.1.0(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/solid-store@0.7.3(solid-js@1.9.7)': + '@tanstack/solid-store@0.7.3(solid-js@1.9.9)': dependencies: '@tanstack/store': 0.7.2 - solid-js: 1.9.7 + solid-js: 1.9.9 '@tanstack/store@0.7.2': {} @@ -6507,12 +6544,12 @@ snapshots: transitivePeerDependencies: - typescript - '@tanstack/vite-config@0.2.0(@types/node@24.1.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/vite-config@0.2.0(@types/node@24.2.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': dependencies: rollup-plugin-preserve-directives: 0.4.0(rollup@4.44.1) - vite-plugin-dts: 4.2.3(@types/node@24.1.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) - vite-plugin-externalize-deps: 0.9.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) - vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-dts: 4.2.3(@types/node@24.2.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-externalize-deps: 0.9.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - rollup @@ -6520,13 +6557,12 @@ snapshots: - typescript - vite - '@testing-library/jest-dom@6.6.4': + '@testing-library/jest-dom@6.7.0': dependencies: '@adobe/css-tools': 4.4.2 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - lodash: 4.17.21 picocolors: 1.1.1 redent: 3.0.0 @@ -6568,7 +6604,7 @@ snapshots: '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 24.1.0 + '@types/node': 24.2.1 '@types/deep-eql@4.0.2': {} @@ -6582,29 +6618,37 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@24.1.0': + '@types/node@24.2.1': + dependencies: + undici-types: 7.10.0 + + '@types/react-dom@19.1.7(@types/react@19.1.10)': dependencies: - undici-types: 7.8.0 + '@types/react': 19.1.10 '@types/react-dom@19.1.7(@types/react@19.1.9)': dependencies: '@types/react': 19.1.9 + '@types/react@19.1.10': + dependencies: + csstype: 3.1.3 + '@types/react@19.1.9': dependencies: csstype: 3.1.3 '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/parser': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.37.0 - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -6613,14 +6657,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.37.0 '@typescript-eslint/types': 8.37.0 '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.37.0 debug: 4.4.1 - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6634,22 +6678,52 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.39.1(typescript@5.9.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + debug: 4.4.1 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.37.0': dependencies: '@typescript-eslint/types': 8.37.0 '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/scope-manager@8.39.1': + dependencies: + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/visitor-keys': 8.39.1 + '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.39.1(typescript@5.9.2)': + dependencies: + typescript: 5.9.2 + + '@typescript-eslint/type-utils@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.37.0 '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + debug: 4.4.1 + eslint: 9.33.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + dependencies: + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -6657,6 +6731,8 @@ snapshots: '@typescript-eslint/types@8.37.0': {} + '@typescript-eslint/types@8.39.1': {} + '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.2)': dependencies: '@typescript-eslint/project-service': 8.37.0(typescript@5.9.2) @@ -6673,13 +6749,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.39.1(typescript@5.9.2)': + dependencies: + '@typescript-eslint/project-service': 8.39.1(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/visitor-keys': 8.39.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.37.0 '@typescript-eslint/types': 8.37.0 '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6689,6 +6792,11 @@ snapshots: '@typescript-eslint/types': 8.37.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.39.1': + dependencies: + '@typescript-eslint/types': 8.39.1 + eslint-visitor-keys: 4.2.1 + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -6748,15 +6856,15 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@vitejs/plugin-react@5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) - '@rolldown/pluginutils': 1.0.0-beta.27 + '@rolldown/pluginutils': 1.0.0-beta.30 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -6768,13 +6876,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -7292,9 +7400,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.32.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.33.0(jiti@2.4.2)): dependencies: - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) semver: 7.7.2 eslint-import-context@0.1.9(unrs-resolver@1.11.1): @@ -7313,19 +7421,19 @@ snapshots: - supports-color optional: true - eslint-plugin-es-x@7.8.0(eslint@9.32.0(jiti@2.4.2)): + eslint-plugin-es-x@7.8.0(eslint@9.33.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.32.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.32.0(jiti@2.4.2)) + eslint: 9.33.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.33.0(jiti@2.4.2)) - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.4.2)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2)): dependencies: '@typescript-eslint/types': 8.37.0 comment-parser: 1.4.1 debug: 4.4.1 - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 9.0.5 @@ -7333,17 +7441,17 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.21.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-n@17.21.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) enhanced-resolve: 5.18.1 - eslint: 9.32.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.32.0(jiti@2.4.2)) + eslint: 9.33.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.33.0(jiti@2.4.2)) get-tsconfig: 4.10.1 globals: 15.15.0 ignore: 5.3.2 @@ -7353,9 +7461,9 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-pnpm@1.0.0(eslint@9.32.0(jiti@2.4.2)): + eslint-plugin-pnpm@1.0.0(eslint@9.33.0(jiti@2.4.2)): dependencies: - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) find-up-simple: 1.0.1 jsonc-eslint-parser: 2.4.0 pathe: 2.0.3 @@ -7363,149 +7471,149 @@ snapshots: tinyglobby: 0.2.14 yaml-eslint-parser: 1.3.0 - eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.32.0(jiti@2.4.2)): + eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.33.0(jiti@2.4.2)): dependencies: '@babel/core': 7.26.10 '@babel/parser': 7.27.0 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.10) - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) hermes-parser: 0.25.1 zod: 3.24.2 zod-validation-error: 3.4.0(zod@3.24.2) transitivePeerDependencies: - supports-color - eslint-plugin-react-debug@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) + eslint-plugin-react-debug@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/core': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/var': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-react-dom@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/core': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/var': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) compare-versions: 6.1.1 - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) + eslint-plugin-react-hooks-extra@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/core': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/var': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.33.0(jiti@2.4.2)): dependencies: - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) - eslint-plugin-react-naming-convention@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-react-naming-convention@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/core': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/var': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) + eslint-plugin-react-web-api@1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/core': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/var': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.52.3(eslint@9.32.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/eff': 1.52.3 - '@eslint-react/kit': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.3(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + eslint-plugin-react-x@1.52.4(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/core': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/eff': 1.52.4 + '@eslint-react/kit': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/shared': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/var': 1.52.4(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) compare-versions: 6.1.1 - eslint: 9.32.0(jiti@2.4.2) - is-immutable-type: 5.0.1(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) + is-immutable-type: 5.0.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) string-ts: 2.2.1 - ts-pattern: 5.7.1 + ts-pattern: 5.8.0 optionalDependencies: ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2)): dependencies: - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) eslint-scope@8.4.0: dependencies: @@ -7516,16 +7624,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.32.0(jiti@2.4.2): + eslint@9.33.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.0 - '@eslint/core': 0.15.1 + '@eslint/config-helpers': 0.3.1 + '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.32.0 - '@eslint/plugin-kit': 0.3.4 + '@eslint/js': 9.33.0 + '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 @@ -7862,10 +7970,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.1(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): + is-immutable-type@5.0.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): dependencies: - '@typescript-eslint/type-utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.9.2) ts-declaration-location: 1.0.7(typescript@5.9.2) typescript: 5.9.2 @@ -7992,10 +8100,10 @@ snapshots: dependencies: json-buffer: 3.0.1 - knip@5.62.0(@types/node@24.1.0)(typescript@5.9.2): + knip@5.62.0(@types/node@24.2.1)(typescript@5.9.2): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 24.1.0 + '@types/node': 24.2.1 fast-glob: 3.3.3 formatly: 0.2.4 jiti: 2.4.2 @@ -8175,7 +8283,7 @@ snapshots: nwsapi@2.2.18: {} - nx@21.3.10: + nx@21.3.11: dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -8213,16 +8321,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 21.3.10 - '@nx/nx-darwin-x64': 21.3.10 - '@nx/nx-freebsd-x64': 21.3.10 - '@nx/nx-linux-arm-gnueabihf': 21.3.10 - '@nx/nx-linux-arm64-gnu': 21.3.10 - '@nx/nx-linux-arm64-musl': 21.3.10 - '@nx/nx-linux-x64-gnu': 21.3.10 - '@nx/nx-linux-x64-musl': 21.3.10 - '@nx/nx-win32-arm64-msvc': 21.3.10 - '@nx/nx-win32-x64-msvc': 21.3.10 + '@nx/nx-darwin-arm64': 21.3.11 + '@nx/nx-darwin-x64': 21.3.11 + '@nx/nx-freebsd-x64': 21.3.11 + '@nx/nx-linux-arm-gnueabihf': 21.3.11 + '@nx/nx-linux-arm64-gnu': 21.3.11 + '@nx/nx-linux-arm64-musl': 21.3.11 + '@nx/nx-linux-x64-gnu': 21.3.11 + '@nx/nx-linux-x64-musl': 21.3.11 + '@nx/nx-win32-arm64-msvc': 21.3.11 + '@nx/nx-win32-x64-msvc': 21.3.11 transitivePeerDependencies: - debug @@ -8599,6 +8707,12 @@ snapshots: seroval: 1.3.2 seroval-plugins: 1.3.2(seroval@1.3.2) + solid-js@1.9.9: + dependencies: + csstype: 3.1.3 + seroval: 1.3.2 + seroval-plugins: 1.3.2(seroval@1.3.2) + solid-refresh@0.6.3(solid-js@1.9.7): dependencies: '@babel/generator': 7.28.0 @@ -8608,6 +8722,15 @@ snapshots: transitivePeerDependencies: - supports-color + solid-refresh@0.6.3(solid-js@1.9.9): + dependencies: + '@babel/generator': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/types': 7.28.0 + solid-js: 1.9.9 + transitivePeerDependencies: + - supports-color + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -8761,7 +8884,7 @@ snapshots: picomatch: 4.0.2 typescript: 5.9.2 - ts-pattern@5.7.1: {} + ts-pattern@5.8.0: {} tsconfck@3.1.5(typescript@5.9.2): optionalDependencies: @@ -8805,13 +8928,13 @@ snapshots: typescript: 5.9.2 yaml: 2.7.0 - typescript-eslint@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2): + typescript-eslint@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/parser': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/parser': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.4.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -8824,7 +8947,7 @@ snapshots: ufo@1.5.4: {} - undici-types@7.8.0: {} + undici-types@7.10.0: {} undici@6.21.3: {} @@ -8874,13 +8997,13 @@ snapshots: validate-html-nesting@1.2.2: {} - vite-node@3.2.4(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -8895,9 +9018,9 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.2.3(@types/node@24.1.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-dts@4.2.3(@types/node@24.2.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - '@microsoft/api-extractor': 7.47.7(@types/node@24.1.0) + '@microsoft/api-extractor': 7.47.7(@types/node@24.2.1) '@rollup/pluginutils': 5.1.4(rollup@4.44.1) '@volar/typescript': 2.4.12 '@vue/language-core': 2.1.6(typescript@5.9.2) @@ -8908,17 +9031,17 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.2 optionalDependencies: - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.9.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-externalize-deps@0.9.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.6.4)(solid-js@1.9.7)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.7)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 @@ -8926,25 +9049,40 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.7 solid-refresh: 0.6.3(solid-js@1.9.7) - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + optionalDependencies: + '@testing-library/jest-dom': 6.7.0 + transitivePeerDependencies: + - supports-color + + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + dependencies: + '@babel/core': 7.28.0 + '@types/babel__core': 7.20.5 + babel-preset-solid: 1.9.5(@babel/core@7.28.0) + merge-anything: 5.1.7 + solid-js: 1.9.9 + solid-refresh: 0.6.3(solid-js@1.9.9) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: - '@testing-library/jest-dom': 6.6.4 + '@testing-library/jest-dom': 6.7.0 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.9.2) optionalDependencies: - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0): + vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0): dependencies: esbuild: 0.25.0 fdir: 6.4.6(picomatch@4.0.3) @@ -8953,21 +9091,21 @@ snapshots: rollup: 4.44.1 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.2.1 fsevents: 2.3.3 jiti: 2.4.2 tsx: 4.19.3 yaml: 2.8.0 - vitefu@1.0.6(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vitefu@1.0.6(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): optionalDependencies: - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) - vitest@3.2.4(@types/node@24.1.0)(jiti@2.4.2)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0): + vitest@3.2.4(@types/node@24.2.1)(jiti@2.4.2)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -8985,11 +9123,11 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.1.0 + '@types/node': 24.2.1 jsdom: 26.1.0 transitivePeerDependencies: - jiti @@ -9007,10 +9145,10 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.2.0(eslint@9.32.0(jiti@2.4.2)): + vue-eslint-parser@10.2.0(eslint@9.33.0(jiti@2.4.2)): dependencies: debug: 4.4.1 - eslint: 9.32.0(jiti@2.4.2) + eslint: 9.33.0(jiti@2.4.2) eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -9119,4 +9257,4 @@ snapshots: zod@3.25.72: {} - zod@4.0.5: {} + zod@4.0.17: {} From 7e853c03234df4fae18b97d85c881548c027cbda Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Thu, 14 Aug 2025 19:20:10 -0500 Subject: [PATCH 26/44] all utils listen to devtools --- docs/reference/classes/asyncbatcher.md | 16 +-- docs/reference/classes/asyncdebouncer.md | 12 +- docs/reference/classes/asyncqueuer.md | 30 ++-- docs/reference/classes/asyncratelimiter.md | 12 +- docs/reference/classes/asyncthrottler.md | 12 +- docs/reference/classes/batcher.md | 14 +- docs/reference/classes/debouncer.md | 12 +- docs/reference/classes/queuer.md | 26 ++-- docs/reference/classes/ratelimiter.md | 12 +- docs/reference/classes/throttler.md | 12 +- docs/reference/functions/asyncbatch.md | 2 +- docs/reference/functions/asyncdebounce.md | 2 +- docs/reference/functions/asyncqueue.md | 2 +- docs/reference/functions/asyncratelimit.md | 2 +- docs/reference/functions/asyncthrottle.md | 2 +- docs/reference/functions/batch.md | 2 +- docs/reference/functions/debounce.md | 2 +- docs/reference/functions/queue.md | 2 +- docs/reference/functions/ratelimit.md | 2 +- docs/reference/functions/throttle.md | 2 +- docs/reference/interfaces/pacereventmap.md | 140 ++++++++++++++++--- docs/reference/variables/pacereventclient.md | 2 +- packages/pacer/src/async-batcher.ts | 9 +- packages/pacer/src/async-debouncer.ts | 9 +- packages/pacer/src/async-queuer.ts | 9 +- packages/pacer/src/async-rate-limiter.ts | 9 +- packages/pacer/src/async-throttler.ts | 9 +- packages/pacer/src/batcher.ts | 9 +- packages/pacer/src/debouncer.ts | 9 +- packages/pacer/src/rate-limiter.ts | 9 +- packages/pacer/src/throttler.ts | 9 +- 31 files changed, 282 insertions(+), 119 deletions(-) diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index a1f80a22..fc5e71f5 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -156,7 +156,7 @@ Defined in: [async-batcher.ts:231](https://github.com/TanStack/pacer/blob/main/p _emit(): void ``` -Defined in: [async-batcher.ts:254](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L254) +Defined in: [async-batcher.ts:261](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L261) Emits a change event for the async batcher instance. Mostly useful for devtools. @@ -172,7 +172,7 @@ Emits a change event for the async batcher instance. Mostly useful for devtools. addItem(item): void ``` -Defined in: [async-batcher.ts:296](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L296) +Defined in: [async-batcher.ts:303](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L303) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -195,7 +195,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [async-batcher.ts:397](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L397) +Defined in: [async-batcher.ts:404](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L404) Removes all items from the async batcher @@ -211,7 +211,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [async-batcher.ts:371](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L371) +Defined in: [async-batcher.ts:378](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L378) Processes the current batch of items immediately @@ -227,7 +227,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [async-batcher.ts:379](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L379) +Defined in: [async-batcher.ts:386](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L386) Returns a copy of all items in the async batcher @@ -243,7 +243,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [async-batcher.ts:383](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L383) +Defined in: [async-batcher.ts:390](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L390) #### Returns @@ -257,7 +257,7 @@ Defined in: [async-batcher.ts:383](https://github.com/TanStack/pacer/blob/main/p reset(): void ``` -Defined in: [async-batcher.ts:404](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L404) +Defined in: [async-batcher.ts:411](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L411) Resets the async batcher state to its default values @@ -273,7 +273,7 @@ Resets the async batcher state to its default values setOptions(newOptions): void ``` -Defined in: [async-batcher.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L259) +Defined in: [async-batcher.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L266) Updates the async batcher options diff --git a/docs/reference/classes/asyncdebouncer.md b/docs/reference/classes/asyncdebouncer.md index 6bde6b40..a7807796 100644 --- a/docs/reference/classes/asyncdebouncer.md +++ b/docs/reference/classes/asyncdebouncer.md @@ -130,7 +130,7 @@ Defined in: [async-debouncer.ts:184](https://github.com/TanStack/pacer/blob/main _emit(): void ``` -Defined in: [async-debouncer.ts:211](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L211) +Defined in: [async-debouncer.ts:218](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L218) Emits a change event for the async debouncer instance. Mostly useful for devtools. @@ -146,7 +146,7 @@ Emits a change event for the async debouncer instance. Mostly useful for devtool cancel(): void ``` -Defined in: [async-debouncer.ts:401](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L401) +Defined in: [async-debouncer.ts:408](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L408) Cancels any pending execution or aborts any execution in progress @@ -162,7 +162,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-debouncer.ts:353](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L353) +Defined in: [async-debouncer.ts:360](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L360) Processes the current pending execution immediately @@ -178,7 +178,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-debouncer.ts:276](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L276) +Defined in: [async-debouncer.ts:283](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L283) Attempts to execute the debounced function. If a call is already in progress, it will be queued. @@ -214,7 +214,7 @@ The error from the debounced function if no onError handler is configured reset(): void ``` -Defined in: [async-debouncer.ts:410](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L410) +Defined in: [async-debouncer.ts:417](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L417) Resets the debouncer state to its default values @@ -230,7 +230,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-debouncer.ts:216](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L216) +Defined in: [async-debouncer.ts:223](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L223) Updates the async debouncer options diff --git a/docs/reference/classes/asyncqueuer.md b/docs/reference/classes/asyncqueuer.md index bc863010..991eaeaf 100644 --- a/docs/reference/classes/asyncqueuer.md +++ b/docs/reference/classes/asyncqueuer.md @@ -145,7 +145,7 @@ Defined in: [async-queuer.ts:267](https://github.com/TanStack/pacer/blob/main/pa _emit(): void ``` -Defined in: [async-queuer.ts:307](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L307) +Defined in: [async-queuer.ts:314](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L314) Emits a change event for the async queuer instance. Mostly useful for devtools. @@ -164,7 +164,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [async-queuer.ts:415](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L415) +Defined in: [async-queuer.ts:422](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L422) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -202,7 +202,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [async-queuer.ts:719](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L719) +Defined in: [async-queuer.ts:726](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L726) Removes all pending items from the queue. Does not affect active tasks. @@ -218,7 +218,7 @@ Removes all pending items from the queue. Does not affect active tasks. execute(position?): Promise ``` -Defined in: [async-queuer.ts:541](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L541) +Defined in: [async-queuer.ts:548](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L548) Removes and returns the next item from the queue and executes the task function with it. @@ -248,7 +248,7 @@ queuer.execute('back'); flush(numberOfItems, position?): Promise ``` -Defined in: [async-queuer.ts:576](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L576) +Defined in: [async-queuer.ts:583](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L583) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -275,7 +275,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): Promise ``` -Defined in: [async-queuer.ts:590](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L590) +Defined in: [async-queuer.ts:597](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L597) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -298,7 +298,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:494](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L494) +Defined in: [async-queuer.ts:501](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L501) Removes and returns the next item from the queue without executing the task function. Use for manual queue management. Normally, use execute() to process items. @@ -330,7 +330,7 @@ queuer.getNextItem('back'); peekActiveItems(): TValue[] ``` -Defined in: [async-queuer.ts:682](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L682) +Defined in: [async-queuer.ts:689](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L689) Returns the items currently being processed (active tasks). @@ -346,7 +346,7 @@ Returns the items currently being processed (active tasks). peekAllItems(): TValue[] ``` -Defined in: [async-queuer.ts:675](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L675) +Defined in: [async-queuer.ts:682](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L682) Returns a copy of all items in the queue, including active and pending items. @@ -362,7 +362,7 @@ Returns a copy of all items in the queue, including active and pending items. peekNextItem(position): undefined | TValue ``` -Defined in: [async-queuer.ts:665](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L665) +Defined in: [async-queuer.ts:672](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L672) Returns the next item in the queue without removing it. @@ -391,7 +391,7 @@ queuer.peekNextItem('back'); // back peekPendingItems(): TValue[] ``` -Defined in: [async-queuer.ts:689](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L689) +Defined in: [async-queuer.ts:696](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L696) Returns the items waiting to be processed (pending tasks). @@ -407,7 +407,7 @@ Returns the items waiting to be processed (pending tasks). reset(): void ``` -Defined in: [async-queuer.ts:727](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L727) +Defined in: [async-queuer.ts:734](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L734) Resets the queuer state to its default values @@ -423,7 +423,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [async-queuer.ts:312](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L312) +Defined in: [async-queuer.ts:319](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L319) Updates the queuer options. New options are merged with existing options. @@ -445,7 +445,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [async-queuer.ts:696](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L696) +Defined in: [async-queuer.ts:703](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L703) Starts processing items in the queue. If already running, does nothing. @@ -461,7 +461,7 @@ Starts processing items in the queue. If already running, does nothing. stop(): void ``` -Defined in: [async-queuer.ts:706](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L706) +Defined in: [async-queuer.ts:713](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L713) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index 35eb441b..e6f4e750 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -151,7 +151,7 @@ Defined in: [async-rate-limiter.ts:212](https://github.com/TanStack/pacer/blob/m _emit(): void ``` -Defined in: [async-rate-limiter.ts:238](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L238) +Defined in: [async-rate-limiter.ts:245](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L245) Emits a change event for the async rate limiter instance. Mostly useful for devtools. @@ -167,7 +167,7 @@ Emits a change event for the async rate limiter instance. Mostly useful for devt getMsUntilNextWindow(): number ``` -Defined in: [async-rate-limiter.ts:447](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L447) +Defined in: [async-rate-limiter.ts:454](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L454) Returns the number of milliseconds until the next execution will be possible For fixed windows, this is the time until the current window resets @@ -185,7 +185,7 @@ For sliding windows, this is the time until the oldest execution expires getRemainingInWindow(): number ``` -Defined in: [async-rate-limiter.ts:437](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L437) +Defined in: [async-rate-limiter.ts:444](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L444) Returns the number of remaining executions allowed in the current window @@ -201,7 +201,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [async-rate-limiter.ts:316](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L316) +Defined in: [async-rate-limiter.ts:323](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L323) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -249,7 +249,7 @@ const result2 = await rateLimiter.maybeExecute('arg1', 'arg2'); // undefined reset(): void ``` -Defined in: [async-rate-limiter.ts:458](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L458) +Defined in: [async-rate-limiter.ts:465](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L465) Resets the rate limiter state @@ -265,7 +265,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [async-rate-limiter.ts:243](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L243) +Defined in: [async-rate-limiter.ts:250](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L250) Updates the async rate limiter options diff --git a/docs/reference/classes/asyncthrottler.md b/docs/reference/classes/asyncthrottler.md index 0e77cf65..4e2d0a2c 100644 --- a/docs/reference/classes/asyncthrottler.md +++ b/docs/reference/classes/asyncthrottler.md @@ -133,7 +133,7 @@ Defined in: [async-throttler.ts:195](https://github.com/TanStack/pacer/blob/main _emit(): void ``` -Defined in: [async-throttler.ts:222](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L222) +Defined in: [async-throttler.ts:229](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L229) Emits a change event for the async throttler instance. Mostly useful for devtools. @@ -149,7 +149,7 @@ Emits a change event for the async throttler instance. Mostly useful for devtool cancel(): void ``` -Defined in: [async-throttler.ts:436](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L436) +Defined in: [async-throttler.ts:443](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L443) Cancels any pending execution or aborts any execution in progress @@ -165,7 +165,7 @@ Cancels any pending execution or aborts any execution in progress flush(): Promise> ``` -Defined in: [async-throttler.ts:385](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L385) +Defined in: [async-throttler.ts:392](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L392) Processes the current pending execution immediately @@ -181,7 +181,7 @@ Processes the current pending execution immediately maybeExecute(...args): Promise> ``` -Defined in: [async-throttler.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L295) +Defined in: [async-throttler.ts:302](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L302) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -223,7 +223,7 @@ await throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [async-throttler.ts:444](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L444) +Defined in: [async-throttler.ts:451](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L451) Resets the debouncer state to its default values @@ -239,7 +239,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [async-throttler.ts:227](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L227) +Defined in: [async-throttler.ts:234](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L234) Updates the async throttler options diff --git a/docs/reference/classes/batcher.md b/docs/reference/classes/batcher.md index e7416364..b945d2f3 100644 --- a/docs/reference/classes/batcher.md +++ b/docs/reference/classes/batcher.md @@ -133,7 +133,7 @@ Defined in: [batcher.ts:145](https://github.com/TanStack/pacer/blob/main/package _emit(): void ``` -Defined in: [batcher.ts:167](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L167) +Defined in: [batcher.ts:174](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L174) Emits a change event for the batcher instance. Mostly useful for devtools. @@ -149,7 +149,7 @@ Emits a change event for the batcher instance. Mostly useful for devtools. addItem(item): void ``` -Defined in: [batcher.ts:203](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L203) +Defined in: [batcher.ts:210](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L210) Adds an item to the batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -172,7 +172,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [batcher.ts:273](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L273) +Defined in: [batcher.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L280) Removes all items from the batcher @@ -188,7 +188,7 @@ Removes all items from the batcher flush(): void ``` -Defined in: [batcher.ts:251](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L251) +Defined in: [batcher.ts:258](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L258) Processes the current batch of items immediately @@ -204,7 +204,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [batcher.ts:259](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L259) +Defined in: [batcher.ts:266](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L266) Returns a copy of all items in the batcher @@ -220,7 +220,7 @@ Returns a copy of all items in the batcher reset(): void ``` -Defined in: [batcher.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L280) +Defined in: [batcher.ts:287](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L287) Resets the batcher state to its default values @@ -236,7 +236,7 @@ Resets the batcher state to its default values setOptions(newOptions): void ``` -Defined in: [batcher.ts:172](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L172) +Defined in: [batcher.ts:179](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L179) Updates the batcher options diff --git a/docs/reference/classes/debouncer.md b/docs/reference/classes/debouncer.md index 03055b97..6aab3c59 100644 --- a/docs/reference/classes/debouncer.md +++ b/docs/reference/classes/debouncer.md @@ -116,7 +116,7 @@ Defined in: [debouncer.ts:125](https://github.com/TanStack/pacer/blob/main/packa _emit(): void ``` -Defined in: [debouncer.ts:147](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L147) +Defined in: [debouncer.ts:154](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L154) Emits a change event for the debouncer instance. Mostly useful for devtools. @@ -132,7 +132,7 @@ Emits a change event for the debouncer instance. Mostly useful for devtools. cancel(): void ``` -Defined in: [debouncer.ts:257](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L257) +Defined in: [debouncer.ts:264](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L264) Cancels any pending execution @@ -148,7 +148,7 @@ Cancels any pending execution flush(): void ``` -Defined in: [debouncer.ts:240](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L240) +Defined in: [debouncer.ts:247](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L247) Processes the current pending execution immediately @@ -164,7 +164,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [debouncer.ts:198](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L198) +Defined in: [debouncer.ts:205](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L205) Attempts to execute the debounced function If a call is already in progress, it will be queued @@ -187,7 +187,7 @@ If a call is already in progress, it will be queued reset(): void ``` -Defined in: [debouncer.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L268) +Defined in: [debouncer.ts:275](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L275) Resets the debouncer state to its default values @@ -203,7 +203,7 @@ Resets the debouncer state to its default values setOptions(newOptions): void ``` -Defined in: [debouncer.ts:152](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L152) +Defined in: [debouncer.ts:159](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L159) Updates the debouncer options diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index 14402b81..afaca037 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -166,7 +166,7 @@ Defined in: [queuer.ts:251](https://github.com/TanStack/pacer/blob/main/packages _emit(): void ``` -Defined in: [queuer.ts:290](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L290) +Defined in: [queuer.ts:296](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L296) Emits a change event for the queuer instance. Mostly useful for devtools. @@ -185,7 +185,7 @@ addItem( runOnItemsChange): boolean ``` -Defined in: [queuer.ts:379](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L379) +Defined in: [queuer.ts:385](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L385) Adds an item to the queue. If the queue is full, the item is rejected and onReject is called. Items can be inserted based on priority or at the front/back depending on configuration. @@ -224,7 +224,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [queuer.ts:652](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L652) +Defined in: [queuer.ts:659](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L659) Removes all pending items from the queue. Does not affect items being processed. @@ -240,7 +240,7 @@ Removes all pending items from the queue. Does not affect items being processed. execute(position?): undefined | TValue ``` -Defined in: [queuer.ts:506](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L506) +Defined in: [queuer.ts:512](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L512) Removes and returns the next item from the queue and processes it using the provided function. @@ -269,7 +269,7 @@ queuer.execute('back'); flush(numberOfItems, position?): void ``` -Defined in: [queuer.ts:522](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L522) +Defined in: [queuer.ts:528](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L528) Processes a specified number of items to execute immediately with no wait time If no numberOfItems is provided, all items will be processed @@ -296,7 +296,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [queuer.ts:537](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L537) +Defined in: [queuer.ts:544](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L544) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -319,7 +319,7 @@ The queue is cleared after processing getNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:459](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L459) +Defined in: [queuer.ts:465](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L465) Removes and returns the next item from the queue without executing the function. Use for manual queue management. Normally, use execute() to process items. @@ -350,7 +350,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [queuer.ts:620](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L620) +Defined in: [queuer.ts:627](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L627) Returns a copy of all items in the queue. @@ -366,7 +366,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:610](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L610) +Defined in: [queuer.ts:617](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L617) Returns the next item in the queue without removing it. @@ -394,7 +394,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [queuer.ts:660](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L660) +Defined in: [queuer.ts:667](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L667) Resets the queuer state to its default values @@ -410,7 +410,7 @@ Resets the queuer state to its default values setOptions(newOptions): void ``` -Defined in: [queuer.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L295) +Defined in: [queuer.ts:301](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L301) Updates the queuer options. New options are merged with existing options. @@ -432,7 +432,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [queuer.ts:627](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L627) +Defined in: [queuer.ts:634](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L634) Starts processing items in the queue. If already isRunning, does nothing. @@ -448,7 +448,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [queuer.ts:637](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L637) +Defined in: [queuer.ts:644](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L644) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/classes/ratelimiter.md b/docs/reference/classes/ratelimiter.md index eb985ec1..e56c7c81 100644 --- a/docs/reference/classes/ratelimiter.md +++ b/docs/reference/classes/ratelimiter.md @@ -129,7 +129,7 @@ Defined in: [rate-limiter.ts:139](https://github.com/TanStack/pacer/blob/main/pa _emit(): void ``` -Defined in: [rate-limiter.ts:163](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L163) +Defined in: [rate-limiter.ts:170](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L170) Emits a change event for the rate limiter instance. Mostly useful for devtools. @@ -145,7 +145,7 @@ Emits a change event for the rate limiter instance. Mostly useful for devtools. getMsUntilNextWindow(): number ``` -Defined in: [rate-limiter.ts:331](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L331) +Defined in: [rate-limiter.ts:338](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L338) Returns the number of milliseconds until the next execution will be possible @@ -161,7 +161,7 @@ Returns the number of milliseconds until the next execution will be possible getRemainingInWindow(): number ``` -Defined in: [rate-limiter.ts:323](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L323) +Defined in: [rate-limiter.ts:330](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L330) Returns the number of remaining executions allowed in the current window @@ -177,7 +177,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): boolean ``` -Defined in: [rate-limiter.ts:229](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L229) +Defined in: [rate-limiter.ts:236](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L236) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -212,7 +212,7 @@ rateLimiter.maybeExecute('arg1', 'arg2'); // false reset(): void ``` -Defined in: [rate-limiter.ts:342](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L342) +Defined in: [rate-limiter.ts:349](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L349) Resets the rate limiter state @@ -228,7 +228,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [rate-limiter.ts:168](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L168) +Defined in: [rate-limiter.ts:175](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L175) Updates the rate limiter options diff --git a/docs/reference/classes/throttler.md b/docs/reference/classes/throttler.md index 8829be02..52c3551d 100644 --- a/docs/reference/classes/throttler.md +++ b/docs/reference/classes/throttler.md @@ -120,7 +120,7 @@ Defined in: [throttler.ts:133](https://github.com/TanStack/pacer/blob/main/packa _emit(): void ``` -Defined in: [throttler.ts:155](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L155) +Defined in: [throttler.ts:162](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L162) Emits a change event for the throttler instance. Mostly useful for devtools. @@ -136,7 +136,7 @@ Emits a change event for the throttler instance. Mostly useful for devtools. cancel(): void ``` -Defined in: [throttler.ts:295](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L295) +Defined in: [throttler.ts:302](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L302) Cancels any pending trailing execution and clears internal state. @@ -158,7 +158,7 @@ Has no effect if there is no pending execution. flush(): void ``` -Defined in: [throttler.ts:273](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L273) +Defined in: [throttler.ts:280](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L280) Processes the current pending execution immediately @@ -174,7 +174,7 @@ Processes the current pending execution immediately maybeExecute(...args): void ``` -Defined in: [throttler.ts:218](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L218) +Defined in: [throttler.ts:225](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L225) Attempts to execute the throttled function. The execution behavior depends on the throttler options: @@ -216,7 +216,7 @@ throttled.maybeExecute('c', 'd'); reset(): void ``` -Defined in: [throttler.ts:306](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L306) +Defined in: [throttler.ts:313](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L313) Resets the throttler state to its default values @@ -232,7 +232,7 @@ Resets the throttler state to its default values setOptions(newOptions): void ``` -Defined in: [throttler.ts:160](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L160) +Defined in: [throttler.ts:167](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L167) Updates the throttler options diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index 63dd5c44..6be8eae8 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -11,7 +11,7 @@ title: asyncBatch function asyncBatch(fn, options): (item) => void ``` -Defined in: [async-batcher.ts:459](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L459) +Defined in: [async-batcher.ts:466](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L466) Creates an async batcher that processes items in batches diff --git a/docs/reference/functions/asyncdebounce.md b/docs/reference/functions/asyncdebounce.md index 24c4ceda..b7e56452 100644 --- a/docs/reference/functions/asyncdebounce.md +++ b/docs/reference/functions/asyncdebounce.md @@ -11,7 +11,7 @@ title: asyncDebounce function asyncDebounce(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-debouncer.ts:459](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L459) +Defined in: [async-debouncer.ts:466](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-debouncer.ts#L466) Creates an async debounced function that delays execution until after a specified wait time. The debounced function will only execute once the wait period has elapsed without any new calls. diff --git a/docs/reference/functions/asyncqueue.md b/docs/reference/functions/asyncqueue.md index 6b00fe41..8e0b335b 100644 --- a/docs/reference/functions/asyncqueue.md +++ b/docs/reference/functions/asyncqueue.md @@ -11,7 +11,7 @@ title: asyncQueue function asyncQueue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [async-queuer.ts:766](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L766) +Defined in: [async-queuer.ts:773](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-queuer.ts#L773) Creates a new AsyncQueuer instance and returns a bound addItem function for adding tasks. The queuer is started automatically and ready to process items. diff --git a/docs/reference/functions/asyncratelimit.md b/docs/reference/functions/asyncratelimit.md index 49704cdd..6ed57e2f 100644 --- a/docs/reference/functions/asyncratelimit.md +++ b/docs/reference/functions/asyncratelimit.md @@ -11,7 +11,7 @@ title: asyncRateLimit function asyncRateLimit(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-rate-limiter.ts:529](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L529) +Defined in: [async-rate-limiter.ts:536](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L536) Creates an async rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/asyncthrottle.md b/docs/reference/functions/asyncthrottle.md index 7b45875e..9c77d0b8 100644 --- a/docs/reference/functions/asyncthrottle.md +++ b/docs/reference/functions/asyncthrottle.md @@ -11,7 +11,7 @@ title: asyncThrottle function asyncThrottle(fn, initialOptions): (...args) => Promise> ``` -Defined in: [async-throttler.ts:492](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L492) +Defined in: [async-throttler.ts:499](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-throttler.ts#L499) Creates an async throttled function that limits how often the function can execute. The throttled function will execute at most once per wait period, even if called multiple times. diff --git a/docs/reference/functions/batch.md b/docs/reference/functions/batch.md index 26b75d6d..66fe74e3 100644 --- a/docs/reference/functions/batch.md +++ b/docs/reference/functions/batch.md @@ -11,7 +11,7 @@ title: batch function batch(fn, options): (item) => void ``` -Defined in: [batcher.ts:304](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L304) +Defined in: [batcher.ts:311](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/batcher.ts#L311) Creates a batcher that processes items in batches diff --git a/docs/reference/functions/debounce.md b/docs/reference/functions/debounce.md index 46ced8d6..7af67e6a 100644 --- a/docs/reference/functions/debounce.md +++ b/docs/reference/functions/debounce.md @@ -11,7 +11,7 @@ title: debounce function debounce(fn, initialOptions): (...args) => void ``` -Defined in: [debouncer.ts:301](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L301) +Defined in: [debouncer.ts:308](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/debouncer.ts#L308) Creates a debounced function that delays invoking the provided function until after a specified wait time. Multiple calls during the wait period will cancel previous pending invocations and reset the timer. diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 35a7bafe..0583dbdc 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [queuer.ts:703](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L703) +Defined in: [queuer.ts:710](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L710) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. diff --git a/docs/reference/functions/ratelimit.md b/docs/reference/functions/ratelimit.md index 82410092..8209527c 100644 --- a/docs/reference/functions/ratelimit.md +++ b/docs/reference/functions/ratelimit.md @@ -11,7 +11,7 @@ title: rateLimit function rateLimit(fn, initialOptions): (...args) => boolean ``` -Defined in: [rate-limiter.ts:394](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L394) +Defined in: [rate-limiter.ts:401](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/rate-limiter.ts#L401) Creates a rate-limited function that will execute the provided function up to a maximum number of times within a time window. diff --git a/docs/reference/functions/throttle.md b/docs/reference/functions/throttle.md index 3e5d08f4..7521d6f6 100644 --- a/docs/reference/functions/throttle.md +++ b/docs/reference/functions/throttle.md @@ -11,7 +11,7 @@ title: throttle function throttle(fn, initialOptions): (...args) => void ``` -Defined in: [throttler.ts:345](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L345) +Defined in: [throttler.ts:352](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/throttler.ts#L352) Creates a throttled function that limits how often the provided function can execute. diff --git a/docs/reference/interfaces/pacereventmap.md b/docs/reference/interfaces/pacereventmap.md index 81236178..c3b2c862 100644 --- a/docs/reference/interfaces/pacereventmap.md +++ b/docs/reference/interfaces/pacereventmap.md @@ -11,100 +11,200 @@ Defined in: [event-client.ts:13](https://github.com/TanStack/pacer/blob/main/pac ## Properties -### pacer:async-batcher +### pacer:AsyncBatcher ```ts -pacer:async-batcher: AsyncBatcher; +pacer:AsyncBatcher: AsyncBatcher; +``` + +Defined in: [event-client.ts:24](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L24) + +*** + +### pacer:AsyncDebouncer + +```ts +pacer:AsyncDebouncer: AsyncDebouncer; +``` + +Defined in: [event-client.ts:25](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L25) + +*** + +### pacer:AsyncQueuer + +```ts +pacer:AsyncQueuer: AsyncQueuer; +``` + +Defined in: [event-client.ts:26](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L26) + +*** + +### pacer:AsyncRateLimiter + +```ts +pacer:AsyncRateLimiter: AsyncRateLimiter; +``` + +Defined in: [event-client.ts:27](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L27) + +*** + +### pacer:AsyncThrottler + +```ts +pacer:AsyncThrottler: AsyncThrottler; +``` + +Defined in: [event-client.ts:28](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L28) + +*** + +### pacer:Batcher + +```ts +pacer:Batcher: Batcher; +``` + +Defined in: [event-client.ts:29](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L29) + +*** + +### pacer:d-AsyncBatcher + +```ts +pacer:d-AsyncBatcher: AsyncBatcher; ``` Defined in: [event-client.ts:14](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L14) *** -### pacer:async-debouncer +### pacer:d-AsyncDebouncer ```ts -pacer:async-debouncer: AsyncDebouncer; +pacer:d-AsyncDebouncer: AsyncDebouncer; ``` Defined in: [event-client.ts:15](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L15) *** -### pacer:async-queuer +### pacer:d-AsyncQueuer ```ts -pacer:async-queuer: AsyncQueuer; +pacer:d-AsyncQueuer: AsyncQueuer; ``` Defined in: [event-client.ts:16](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L16) *** -### pacer:async-rate-limiter +### pacer:d-AsyncRateLimiter ```ts -pacer:async-rate-limiter: AsyncRateLimiter; +pacer:d-AsyncRateLimiter: AsyncRateLimiter; ``` Defined in: [event-client.ts:17](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L17) *** -### pacer:async-throttler +### pacer:d-AsyncThrottler ```ts -pacer:async-throttler: AsyncThrottler; +pacer:d-AsyncThrottler: AsyncThrottler; ``` Defined in: [event-client.ts:18](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L18) *** -### pacer:batcher +### pacer:d-Batcher ```ts -pacer:batcher: Batcher; +pacer:d-Batcher: Batcher; ``` Defined in: [event-client.ts:19](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L19) *** -### pacer:debouncer +### pacer:d-Debouncer ```ts -pacer:debouncer: Debouncer; +pacer:d-Debouncer: Debouncer; ``` Defined in: [event-client.ts:20](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L20) *** -### pacer:queuer +### pacer:d-Queuer ```ts -pacer:queuer: Queuer; +pacer:d-Queuer: Queuer; ``` Defined in: [event-client.ts:21](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L21) *** -### pacer:rate-limiter +### pacer:d-RateLimiter ```ts -pacer:rate-limiter: RateLimiter; +pacer:d-RateLimiter: RateLimiter; ``` Defined in: [event-client.ts:22](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L22) *** -### pacer:throttler +### pacer:d-Throttler ```ts -pacer:throttler: Throttler; +pacer:d-Throttler: Throttler; ``` Defined in: [event-client.ts:23](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L23) + +*** + +### pacer:Debouncer + +```ts +pacer:Debouncer: Debouncer; +``` + +Defined in: [event-client.ts:30](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L30) + +*** + +### pacer:Queuer + +```ts +pacer:Queuer: Queuer; +``` + +Defined in: [event-client.ts:31](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L31) + +*** + +### pacer:RateLimiter + +```ts +pacer:RateLimiter: RateLimiter; +``` + +Defined in: [event-client.ts:32](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L32) + +*** + +### pacer:Throttler + +```ts +pacer:Throttler: Throttler; +``` + +Defined in: [event-client.ts:33](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L33) diff --git a/docs/reference/variables/pacereventclient.md b/docs/reference/variables/pacereventclient.md index 0f01f688..8fde7e62 100644 --- a/docs/reference/variables/pacereventclient.md +++ b/docs/reference/variables/pacereventclient.md @@ -11,4 +11,4 @@ title: pacerEventClient const pacerEventClient: PacerEventClient; ``` -Defined in: [event-client.ts:49](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L49) +Defined in: [event-client.ts:59](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/event-client.ts#L59) diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index a47c1adf..da835006 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { OptionalKeys } from './types' export interface AsyncBatcherState { @@ -246,6 +246,13 @@ export class AsyncBatcher { throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } this.#setState(this.options.initialState ?? {}) + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-AsyncBatcher') { + this.#setState(event.payload.store.state as AsyncBatcherState) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index dcf2c650..f8ce26a4 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncDebouncerState { @@ -203,6 +203,13 @@ export class AsyncDebouncer { throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } this.#setState(this.options.initialState ?? {}) + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-AsyncDebouncer') { + this.#setState(event.payload.store.state as AsyncDebouncerState) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index 149c5dd8..000c048c 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { OptionalKeys } from './types' import type { QueuePosition } from './queuer' @@ -299,6 +299,13 @@ export class AsyncQueuer { this.addItem(item, this.options.addItemsTo ?? 'back', isLast) } } + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-AsyncQueuer') { + this.#setState(event.payload.store.state) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index fb9d0464..e7f58a44 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { AnyAsyncFunction } from './types' export interface AsyncRateLimiterState { @@ -230,6 +230,13 @@ export class AsyncRateLimiter { for (const executionTime of this.#getExecutionTimesInWindow()) { this.#setCleanupTimeout(executionTime) } + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-AsyncRateLimiter') { + this.#setState(event.payload.store.state as AsyncRateLimiterState) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index 16d726db..0eccea83 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncThrottlerState { @@ -214,6 +214,13 @@ export class AsyncThrottler { throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } this.#setState(this.options.initialState ?? {}) + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-AsyncThrottler') { + this.#setState(event.payload.store.state as AsyncThrottlerState) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/batcher.ts b/packages/pacer/src/batcher.ts index 3e74d461..2608f49d 100644 --- a/packages/pacer/src/batcher.ts +++ b/packages/pacer/src/batcher.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { OptionalKeys } from './types' export interface BatcherState { @@ -159,6 +159,13 @@ export class Batcher { ...initialOptions, } this.#setState(this.options.initialState ?? {}) + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-Batcher') { + this.#setState(event.payload.store.state as BatcherState) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/debouncer.ts b/packages/pacer/src/debouncer.ts index ba364138..b6328be7 100644 --- a/packages/pacer/src/debouncer.ts +++ b/packages/pacer/src/debouncer.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { AnyFunction } from './types' export interface DebouncerState { @@ -139,6 +139,13 @@ export class Debouncer { ...initialOptions, } this.#setState(this.options.initialState ?? {}) + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-Debouncer') { + this.#setState(event.payload.store.state as DebouncerState) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/rate-limiter.ts b/packages/pacer/src/rate-limiter.ts index 0e56e739..7af9a086 100644 --- a/packages/pacer/src/rate-limiter.ts +++ b/packages/pacer/src/rate-limiter.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { AnyFunction } from './types' export interface RateLimiterState { @@ -155,6 +155,13 @@ export class RateLimiter { for (const executionTime of this.#getExecutionTimesInWindow()) { this.#setCleanupTimeout(executionTime) } + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-RateLimiter') { + this.#setState(event.payload.store.state as RateLimiterState) + this.setOptions(event.payload.options) + } + }) } /** diff --git a/packages/pacer/src/throttler.ts b/packages/pacer/src/throttler.ts index 0705ade8..c58b5c60 100644 --- a/packages/pacer/src/throttler.ts +++ b/packages/pacer/src/throttler.ts @@ -1,6 +1,6 @@ import { Store } from '@tanstack/store' import { createKey, parseFunctionOrValue } from './utils' -import { emitChange } from './event-client' +import { emitChange, pacerEventClient } from './event-client' import type { AnyFunction } from './types' export interface ThrottlerState { @@ -147,6 +147,13 @@ export class Throttler { ...initialOptions, } this.#setState(this.options.initialState ?? {}) + + pacerEventClient.onAllPluginEvents((event) => { + if (event.type === 'pacer:d-Throttler') { + this.#setState(event.payload.store.state as ThrottlerState) + this.setOptions(event.payload.options) + } + }) } /** From 2a50176524c09e86cd4659feabb0516e52d9c340 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Thu, 14 Aug 2025 19:33:32 -0500 Subject: [PATCH 27/44] remove console log --- packages/pacer/src/queuer.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index 66d4cd00..8fa3a0d8 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -529,7 +529,6 @@ export class Queuer { numberOfItems: number = this.store.state.items.length, position?: QueuePosition, ): void => { - console.log('flush from queuer') this.#clearTimeout() // clear any pending timeout for (let i = 0; i < numberOfItems; i++) { this.execute(position) From fa451f3211b615ae0bdc1051d8bfb239b57b3225 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 15 Aug 2025 00:34:35 +0000 Subject: [PATCH 28/44] ci: apply automated fixes --- docs/reference/classes/queuer.md | 14 +++++++------- docs/reference/functions/queue.md | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index afaca037..3ca7d57f 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -224,7 +224,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [queuer.ts:659](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L659) +Defined in: [queuer.ts:658](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L658) Removes all pending items from the queue. Does not affect items being processed. @@ -296,7 +296,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [queuer.ts:544](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L544) +Defined in: [queuer.ts:543](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L543) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -350,7 +350,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [queuer.ts:627](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L627) +Defined in: [queuer.ts:626](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L626) Returns a copy of all items in the queue. @@ -366,7 +366,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:617](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L617) +Defined in: [queuer.ts:616](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L616) Returns the next item in the queue without removing it. @@ -394,7 +394,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [queuer.ts:667](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L667) +Defined in: [queuer.ts:666](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L666) Resets the queuer state to its default values @@ -432,7 +432,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [queuer.ts:634](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L634) +Defined in: [queuer.ts:633](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L633) Starts processing items in the queue. If already isRunning, does nothing. @@ -448,7 +448,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [queuer.ts:644](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L644) +Defined in: [queuer.ts:643](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L643) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 0583dbdc..63433437 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [queuer.ts:710](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L710) +Defined in: [queuer.ts:709](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L709) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. From 75414d21714d421c2284398b1b662766e0ed6610 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Thu, 14 Aug 2025 19:35:10 -0500 Subject: [PATCH 29/44] sync package versions --- examples/react/useAsyncRetryer/package.json | 6 +-- pnpm-lock.yaml | 45 +++++++++++++++++---- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/examples/react/useAsyncRetryer/package.json b/examples/react/useAsyncRetryer/package.json index 99d2327e..3d07f61c 100644 --- a/examples/react/useAsyncRetryer/package.json +++ b/examples/react/useAsyncRetryer/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.9", + "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^7.0.6" + "@vitejs/plugin-react": "^5.0.0", + "vite": "^7.1.2" }, "browserslist": { "production": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29c971db..c1506cd3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -612,7 +612,7 @@ importers: dependencies: '@tanstack/react-pacer': specifier: ^0.14.0 - version: link:../../../packages/react-pacer + version: 0.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -621,17 +621,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.9 - version: 19.1.9 + specifier: ^19.1.10 + version: 19.1.10 '@types/react-dom': specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.9) + version: 19.1.7(@types/react@19.1.10) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.0 + version: 5.0.0(vite@7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.0.6 - version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.2 + version: 7.1.2(@types/node@24.2.1)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncThrottler: dependencies: @@ -2708,6 +2708,10 @@ packages: resolution: {integrity: sha512-7OsrYscWEPojIRqh9byyyv2W+jm/3WaDckVnuQgf7a86YPhtN93fHa3hsKquJE/IbMX/FK0EDHi+DPAXwvZ5ZA==} engines: {node: '>=18'} + '@tanstack/pacer@0.13.0': + resolution: {integrity: sha512-eCV3BIn+If4YGMgRbB315CvhyggmBhV85NmBH4uAA2kop6fOJh5GAWsvgsQOqYt0EFhHcjUwQ1eIhqw9aohuOQ==} + engines: {node: '>=18'} + '@tanstack/persister@0.1.1': resolution: {integrity: sha512-XUewm2+D0K84ZSuWm1oMHfqw/flmO7IzCc+316php/XChgbMe30DStp1cF2Uc4IV0cI0G4hDq2RX3+NTxTIvWg==} engines: {node: '>=18'} @@ -2731,6 +2735,13 @@ packages: react: '>=16.8' react-dom: '>=16.8' + '@tanstack/react-pacer@0.14.0': + resolution: {integrity: sha512-K5wR61esBjnO+o5XnagE4twOUtNmNb6WF0+ARQRs68tViq4mNGwKuDHm0OuqAN+7Vq8k41horjiVAj24d6V1vw==} + engines: {node: '>=18'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + '@tanstack/react-persister@0.1.1': resolution: {integrity: sha512-bERMba9+dDOWKJLV5dR6+pKq+xRYyuCsK1Te5Ygs2WiXdvAVLMnNjJIOkIhZ9uihbQvyBIbYPAlb9sCfSgvYWg==} engines: {node: '>=18'} @@ -6502,6 +6513,10 @@ snapshots: - supports-color - typescript + '@tanstack/pacer@0.13.0': + dependencies: + '@tanstack/store': 0.7.2 + '@tanstack/persister@0.1.1': {} '@tanstack/publish-config@0.2.0': @@ -6530,6 +6545,13 @@ snapshots: - solid-js - utf-8-validate + '@tanstack/react-pacer@0.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/pacer': 0.13.0 + '@tanstack/react-store': 0.7.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + '@tanstack/react-persister@0.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/persister': 0.1.1 @@ -6554,6 +6576,13 @@ snapshots: react-dom: 19.1.0(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) + '@tanstack/react-store@0.7.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/store': 0.7.2 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) + '@tanstack/solid-store@0.7.3(solid-js@1.9.9)': dependencies: '@tanstack/store': 0.7.2 From 5c5d6c91bdde5a6fbbc7604a5e8ab6715cc2c49b Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 15 Aug 2025 00:36:15 +0000 Subject: [PATCH 30/44] ci: apply automated fixes --- docs/reference/classes/queuer.md | 14 +++++++------- docs/reference/functions/queue.md | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/reference/classes/queuer.md b/docs/reference/classes/queuer.md index afaca037..3ca7d57f 100644 --- a/docs/reference/classes/queuer.md +++ b/docs/reference/classes/queuer.md @@ -224,7 +224,7 @@ queuer.addItem('task2', 'front'); clear(): void ``` -Defined in: [queuer.ts:659](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L659) +Defined in: [queuer.ts:658](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L658) Removes all pending items from the queue. Does not affect items being processed. @@ -296,7 +296,7 @@ If no numberOfItems is provided, all items will be processed flushAsBatch(batchFunction): void ``` -Defined in: [queuer.ts:544](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L544) +Defined in: [queuer.ts:543](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L543) Processes all items in the queue as a batch using the provided function as an argument The queue is cleared after processing @@ -350,7 +350,7 @@ queuer.getNextItem('back'); peekAllItems(): TValue[] ``` -Defined in: [queuer.ts:627](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L627) +Defined in: [queuer.ts:626](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L626) Returns a copy of all items in the queue. @@ -366,7 +366,7 @@ Returns a copy of all items in the queue. peekNextItem(position): undefined | TValue ``` -Defined in: [queuer.ts:617](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L617) +Defined in: [queuer.ts:616](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L616) Returns the next item in the queue without removing it. @@ -394,7 +394,7 @@ queuer.peekNextItem('back'); // back reset(): void ``` -Defined in: [queuer.ts:667](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L667) +Defined in: [queuer.ts:666](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L666) Resets the queuer state to its default values @@ -432,7 +432,7 @@ Updates the queuer options. New options are merged with existing options. start(): void ``` -Defined in: [queuer.ts:634](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L634) +Defined in: [queuer.ts:633](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L633) Starts processing items in the queue. If already isRunning, does nothing. @@ -448,7 +448,7 @@ Starts processing items in the queue. If already isRunning, does nothing. stop(): void ``` -Defined in: [queuer.ts:644](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L644) +Defined in: [queuer.ts:643](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L643) Stops processing items in the queue. Does not clear the queue. diff --git a/docs/reference/functions/queue.md b/docs/reference/functions/queue.md index 0583dbdc..63433437 100644 --- a/docs/reference/functions/queue.md +++ b/docs/reference/functions/queue.md @@ -11,7 +11,7 @@ title: queue function queue(fn, initialOptions): (item, position, runOnItemsChange) => boolean ``` -Defined in: [queuer.ts:710](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L710) +Defined in: [queuer.ts:709](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/queuer.ts#L709) Creates a queue that processes items immediately upon addition. Items are processed sequentially in FIFO order by default. From 6b372da8b9558df27231febae34fc3d875b48bbe Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Sat, 16 Aug 2025 17:20:32 -0500 Subject: [PATCH 31/44] break up devtools components --- packages/pacer-devtools/package.json | 1 + packages/pacer-devtools/src/PacerDevtools.tsx | 339 +----------------- .../src/components/ActionButtons.tsx | 147 ++++++++ .../src/components/DetailsPanel.tsx | 61 ++++ .../pacer-devtools/src/components/Shell.tsx | 108 ++++++ .../src/components/StateHeader.tsx | 57 +++ .../src/components/UtilList.tsx | 49 +++ .../src/components/util-groups.ts | 54 +++ .../pacer-devtools/src/styles/use-styles.ts | 60 +++- pnpm-lock.yaml | 8 + 10 files changed, 538 insertions(+), 346 deletions(-) create mode 100644 packages/pacer-devtools/src/components/ActionButtons.tsx create mode 100644 packages/pacer-devtools/src/components/DetailsPanel.tsx create mode 100644 packages/pacer-devtools/src/components/Shell.tsx create mode 100644 packages/pacer-devtools/src/components/StateHeader.tsx create mode 100644 packages/pacer-devtools/src/components/UtilList.tsx create mode 100644 packages/pacer-devtools/src/components/util-groups.ts diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 573a27c4..5fad6239 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -63,6 +63,7 @@ "dependencies": { "@tanstack/devtools-ui": "^0.3.0", "clsx": "^2.1.1", + "dayjs": "^1.11.13", "goober": "^2.1.16", "solid-js": "^1.9.9" }, diff --git a/packages/pacer-devtools/src/PacerDevtools.tsx b/packages/pacer-devtools/src/PacerDevtools.tsx index c2ae3539..83a8a614 100644 --- a/packages/pacer-devtools/src/PacerDevtools.tsx +++ b/packages/pacer-devtools/src/PacerDevtools.tsx @@ -1,340 +1,5 @@ -import { For, createMemo, createSignal } from 'solid-js' -import clsx from 'clsx' -import { JsonTree } from '@tanstack/devtools-ui' -import { pacerEventClient } from '@tanstack/pacer' -import { - PacerContextProvider, - usePacerDevtoolsState, -} from './PacerContextProvider' -import { useStyles } from './styles/use-styles' - -type StateKey = - | 'asyncBatchers' - | 'asyncDebouncers' - | 'asyncQueuers' - | 'asyncRateLimiters' - | 'asyncThrottlers' - | 'batchers' - | 'debouncers' - | 'queuers' - | 'rateLimiters' - | 'throttlers' - -type UtilGroup = { - key: StateKey - label: string - displayName: string -} - -const UTIL_GROUPS: Array = [ - { key: 'debouncers', label: 'Debouncers', displayName: 'Debouncer' }, - { key: 'throttlers', label: 'Throttlers', displayName: 'Throttler' }, - { key: 'batchers', label: 'Batchers', displayName: 'Batcher' }, - { key: 'queuers', label: 'Queuers', displayName: 'Queuer' }, - { - key: 'rateLimiters', - label: 'Rate Limiters', - displayName: 'Rate Limiter', - }, - { - key: 'asyncDebouncers', - label: 'Async Debouncers', - displayName: 'Async Debouncer', - }, - { - key: 'asyncThrottlers', - label: 'Async Throttlers', - displayName: 'Async Throttler', - }, - { - key: 'asyncBatchers', - label: 'Async Batchers', - displayName: 'Async Batcher', - }, - { - key: 'asyncQueuers', - label: 'Async Queuers', - displayName: 'Async Queuer', - }, - { - key: 'asyncRateLimiters', - label: 'Async Rate Limiters', - displayName: 'Async Rate Limiter', - }, -] - -function Shell() { - const styles = useStyles() - const state = usePacerDevtoolsState() - const [selectedKey, setSelectedKey] = createSignal(null) - const getGroupItems = (key: StateKey) => - (state as unknown as Record>)[key] - - // Find the selected instance - const selectedInstance = createMemo(() => { - const key = selectedKey() - if (!key) return null - for (const group of UTIL_GROUPS) { - const instance = getGroupItems(group.key).find((inst) => inst.key === key) - if (instance) return { instance, type: group.displayName } - } - return null - }) - - const getStatus = (inst: any) => { - try { - return inst.store?.state?.status ?? 'unknown' - } catch { - return 'unknown' - } - } - - return ( -
-
TanStack Pacer
- -
- {/* Left Panel - Util List */} -
-
- - {(group) => ( - <> - {getGroupItems(group.key).length > 0 && ( -
-
{group.label}
- - {(instance) => ( -
setSelectedKey(instance.key ?? null)} - > -
{instance.key}
-
- {getStatus(instance)} -
-
- )} -
-
- )} - - )} -
-
-
- - {/* Right Panel - State Details */} -
-
Details
-
- {(() => { - const entry = selectedInstance() - return entry !== null ? ( - <> -
-
{entry.type}
-
-
Key
-
- {entry.instance.key} -
-
Last Updated
-
- {new Date( - (state.lastUpdatedByKey as any)[entry.instance.key] ?? - Date.now(), - ).toLocaleTimeString()} -
-
-
-
-
-
Actions
- {(() => { - const util = entry.instance - const utilName = entry.type - const emitName = `d-${utilName}` as any - const inst: any = util - const state = inst?.store?.state - const hasPending = state && 'isPending' in state - const hasEmpty = state && 'isEmpty' in state - const isPending = hasPending ? !!state.isPending : false - const isEmpty = hasEmpty ? state.isEmpty : undefined - - // Check which methods are available - const hasFlush = typeof inst.flush === 'function' - const hasCancel = typeof inst.cancel === 'function' - const hasReset = typeof inst.reset === 'function' - const hasClear = typeof inst.clear === 'function' - const hasStart = typeof inst.start === 'function' - const hasStop = typeof inst.stop === 'function' - const hasStartStop = hasStart && hasStop - - // Get running state if available - const isRunning = state?.isRunning ?? true - - // Determine if this is a debouncer/throttler (has isPending) - - // No actions if no methods available - if ( - !hasPending && - !hasFlush && - !hasCancel && - !hasReset && - !hasClear - ) { - return ( -
- No actions available for this util -
- ) - } - - const togglePending = () => { - const next = !isPending - inst.store.setState((prev: any) => ({ - ...prev, - isPending: next, - })) - } - - return ( -
- {hasPending && ( - - )} - {hasFlush && ( - - )} - {hasCancel && ( - - )} - {hasReset && ( - - )} - {hasClear && ( - - )} - {hasStartStop && ( - - )} -
- ) - })()} -
- -
-
Options
-
- -
-
- -
-
State
-
- -
-
-
- - ) : ( -
- Select a util from the left panel to view its state -
- ) - })()} -
-
-
-
- ) -} +import { PacerContextProvider } from './PacerContextProvider' +import { Shell } from './components/Shell' export default function PacerDevtools() { return ( diff --git a/packages/pacer-devtools/src/components/ActionButtons.tsx b/packages/pacer-devtools/src/components/ActionButtons.tsx new file mode 100644 index 00000000..babde0e8 --- /dev/null +++ b/packages/pacer-devtools/src/components/ActionButtons.tsx @@ -0,0 +1,147 @@ +import { pacerEventClient } from '@tanstack/pacer' +import { useStyles } from '../styles/use-styles' + +type ActionButtonsProps = { + instance: any + utilName: string +} + +export function ActionButtons(props: ActionButtonsProps) { + const styles = useStyles() + const utilInstance = props.instance + const utilState = utilInstance?.store?.state + const hasPending = utilState && 'isPending' in utilState + const hasEmpty = utilState && 'isEmpty' in utilState + const isPending = hasPending ? !!utilState.isPending : false + const isEmpty = hasEmpty ? utilState.isEmpty : undefined + + const hasFlush = typeof utilInstance.flush === 'function' + const hasCancel = typeof utilInstance.cancel === 'function' + const hasReset = typeof utilInstance.reset === 'function' + const hasClear = typeof utilInstance.clear === 'function' + const hasStart = typeof utilInstance.start === 'function' + const hasStop = typeof utilInstance.stop === 'function' + const hasStartStop = hasStart && hasStop + + const isRunning = utilState?.isRunning ?? true + + if (!hasPending && !hasFlush && !hasCancel && !hasReset && !hasClear) { + return ( +
+ No actions available for this util +
+ ) + } + + const emitName = `d-${props.utilName}` as any + + return ( +
+ {hasPending && ( + + )} + {hasFlush && ( + + )} + {hasCancel && ( + + )} + {hasReset && ( + + )} + {hasClear && ( + + )} + {hasStartStop && ( + + )} +
+ ) +} diff --git a/packages/pacer-devtools/src/components/DetailsPanel.tsx b/packages/pacer-devtools/src/components/DetailsPanel.tsx new file mode 100644 index 00000000..a3329687 --- /dev/null +++ b/packages/pacer-devtools/src/components/DetailsPanel.tsx @@ -0,0 +1,61 @@ +import { JsonTree } from '@tanstack/devtools-ui' +import { useStyles } from '../styles/use-styles' +import { ActionButtons } from './ActionButtons' +import { StateHeader } from './StateHeader' + +type DetailsPanelProps = { + selectedInstance: () => { instance: any; type: string } | null + lastUpdatedByKey: () => Record +} + +export function DetailsPanel(props: DetailsPanelProps) { + const styles = useStyles() + + return ( +
+ {(() => { + const entry = props.selectedInstance() + if (!entry) { + return ( +
+ Select a util from the left panel to view its state +
+ ) + } + + return ( + <> + + +
+
+
Actions
+ +
+ +
+
State
+
+ +
+
+ +
+
Options
+
+ +
+
+
+ + ) + })()} +
+ ) +} diff --git a/packages/pacer-devtools/src/components/Shell.tsx b/packages/pacer-devtools/src/components/Shell.tsx new file mode 100644 index 00000000..2f9c0cd5 --- /dev/null +++ b/packages/pacer-devtools/src/components/Shell.tsx @@ -0,0 +1,108 @@ +import { createMemo, createSignal, onCleanup, onMount } from 'solid-js' +import { useStyles } from '../styles/use-styles' +import { usePacerDevtoolsState } from '../PacerContextProvider' +import { UTIL_GROUPS } from './util-groups' +import { UtilList } from './UtilList' +import { DetailsPanel } from './DetailsPanel' +import type { StateKey } from './util-groups' + +export function Shell() { + const styles = useStyles() + const state = usePacerDevtoolsState() + const [selectedKey, setSelectedKey] = createSignal(null) + const [leftPanelWidth, setLeftPanelWidth] = createSignal(300) + const [isDragging, setIsDragging] = createSignal(false) + + const getGroupItems = (key: StateKey) => + (state as unknown as Record>)[key] + + const selectedInstance = createMemo(() => { + const key = selectedKey() + if (!key) return null + for (const group of UTIL_GROUPS) { + const instance = getGroupItems(group.key).find((inst) => inst.key === key) + if (instance) return { instance, type: group.displayName } + } + return null + }) + + const getStatus = (inst: any) => { + try { + return inst.store?.state?.status ?? 'unknown' + } catch { + return 'unknown' + } + } + + let dragStartX = 0 + let dragStartWidth = 0 + + const handleMouseDown = (e: MouseEvent) => { + e.preventDefault() + setIsDragging(true) + document.body.style.cursor = 'col-resize' + dragStartX = e.clientX + dragStartWidth = leftPanelWidth() + } + + const handleMouseMove = (e: MouseEvent) => { + if (!isDragging()) return + + const deltaX = e.clientX - dragStartX + const newWidth = Math.max(150, Math.min(800, dragStartWidth + deltaX)) + setLeftPanelWidth(newWidth) + } + + const handleMouseUp = () => { + setIsDragging(false) + document.body.style.cursor = '' + } + + onMount(() => { + document.addEventListener('mousemove', handleMouseMove) + document.addEventListener('mouseup', handleMouseUp) + }) + + onCleanup(() => { + document.removeEventListener('mousemove', handleMouseMove) + document.removeEventListener('mouseup', handleMouseUp) + }) + + return ( +
+
TanStack Pacer
+ +
+
+
Utils
+ +
+ +
+ +
+
Details
+ state.lastUpdatedByKey} + /> +
+
+
+ ) +} diff --git a/packages/pacer-devtools/src/components/StateHeader.tsx b/packages/pacer-devtools/src/components/StateHeader.tsx new file mode 100644 index 00000000..71090db0 --- /dev/null +++ b/packages/pacer-devtools/src/components/StateHeader.tsx @@ -0,0 +1,57 @@ +import dayjs from 'dayjs' +import relativeTime from 'dayjs/plugin/relativeTime' +import { createSignal, onCleanup, onMount } from 'solid-js' +import { useStyles } from '../styles/use-styles' + +dayjs.extend(relativeTime) + +type StateHeaderProps = { + selectedInstance: () => { instance: any; type: string } | null + lastUpdatedByKey: () => Record +} + +export function StateHeader(props: StateHeaderProps) { + const styles = useStyles() + const [now, setNow] = createSignal(Date.now()) + + onMount(() => { + const interval = setInterval(() => { + setNow(Date.now()) + }, 1000) + + onCleanup(() => { + clearInterval(interval) + }) + }) + + const entry = props.selectedInstance() + if (!entry) return null + + const key = entry.instance.key as string + const updatedAt = props.lastUpdatedByKey()[key] ?? Date.now() + + const getRelativeTime = () => { + const diffMs = now() - updatedAt + const diffSeconds = Math.floor(diffMs / 1000) + + if (diffSeconds < 60) { + return `${diffSeconds} second${diffSeconds !== 1 ? 's' : ''} ago` + } + + return dayjs(updatedAt).fromNow() + } + + return ( +
+
{entry.type}
+
+
Key
+
{key}
+
Last Updated
+
+ {new Date(updatedAt).toLocaleTimeString()} ({getRelativeTime()}) +
+
+
+ ) +} diff --git a/packages/pacer-devtools/src/components/UtilList.tsx b/packages/pacer-devtools/src/components/UtilList.tsx new file mode 100644 index 00000000..791598ab --- /dev/null +++ b/packages/pacer-devtools/src/components/UtilList.tsx @@ -0,0 +1,49 @@ +import { For } from 'solid-js' +import clsx from 'clsx' +import { useStyles } from '../styles/use-styles' +import { UTIL_GROUPS } from './util-groups' +import type { StateKey } from './util-groups' + +type UtilListProps = { + selectedKey: () => string | null + setSelectedKey: (key: string | null) => void + getGroupItems: (key: StateKey) => Array + getStatus: (inst: any) => string +} + +export function UtilList(props: UtilListProps) { + const styles = useStyles() + + return ( +
+ + {(group) => ( + <> + {props.getGroupItems(group.key).length > 0 && ( +
+
{group.label}
+ + {(instance) => ( +
props.setSelectedKey(instance.key ?? null)} + > +
{instance.key}
+
+ {props.getStatus(instance)} +
+
+ )} +
+
+ )} + + )} +
+
+ ) +} diff --git a/packages/pacer-devtools/src/components/util-groups.ts b/packages/pacer-devtools/src/components/util-groups.ts new file mode 100644 index 00000000..f7f8dacc --- /dev/null +++ b/packages/pacer-devtools/src/components/util-groups.ts @@ -0,0 +1,54 @@ +export type StateKey = + | 'asyncBatchers' + | 'asyncDebouncers' + | 'asyncQueuers' + | 'asyncRateLimiters' + | 'asyncThrottlers' + | 'batchers' + | 'debouncers' + | 'queuers' + | 'rateLimiters' + | 'throttlers' + +type UtilGroup = { + key: StateKey + label: string + displayName: string +} + +export const UTIL_GROUPS: Array = [ + { key: 'debouncers', label: 'Debouncers', displayName: 'Debouncer' }, + { key: 'throttlers', label: 'Throttlers', displayName: 'Throttler' }, + { key: 'batchers', label: 'Batchers', displayName: 'Batcher' }, + { key: 'queuers', label: 'Queuers', displayName: 'Queuer' }, + { + key: 'rateLimiters', + label: 'Rate Limiters', + displayName: 'Rate Limiter', + }, + { + key: 'asyncDebouncers', + label: 'Async Debouncers', + displayName: 'Async Debouncer', + }, + { + key: 'asyncThrottlers', + label: 'Async Throttlers', + displayName: 'Async Throttler', + }, + { + key: 'asyncBatchers', + label: 'Async Batchers', + displayName: 'Async Batcher', + }, + { + key: 'asyncQueuers', + label: 'Async Queuers', + displayName: 'Async Queuer', + }, + { + key: 'asyncRateLimiters', + label: 'Async Rate Limiters', + displayName: 'Async Rate Limiter', + }, +] diff --git a/packages/pacer-devtools/src/styles/use-styles.ts b/packages/pacer-devtools/src/styles/use-styles.ts index 6fa84943..251f8f7b 100644 --- a/packages/pacer-devtools/src/styles/use-styles.ts +++ b/packages/pacer-devtools/src/styles/use-styles.ts @@ -13,14 +13,11 @@ const stylesFactory = () => { color: ${colors.gray[100]}; font-family: ${fontFamily.sans}; font-size: ${fontSize.sm}; - min-height: 100vh; - padding: ${size[2]}; box-sizing: border-box; display: flex; flex-direction: column; - gap: ${size[3]}; width: 100%; - height: 100vh; + height: 100%; overflow: hidden; `, stickyHeader: css` @@ -28,8 +25,7 @@ const stylesFactory = () => { top: 0; z-index: 10; background: ${colors.darkGray[900]}; - padding-bottom: ${size[2]}; - margin-bottom: ${size[1]}; + padding: ${size[2]}; font-size: ${fontSize.lg}; font-weight: ${font.weight.bold}; color: #84cc16; @@ -37,14 +33,49 @@ const stylesFactory = () => { text-transform: uppercase; border-bottom: 1px solid ${colors.darkGray[700]}; box-shadow: 0 2px 8px 0 ${colors.black + alpha[40]}; + flex-shrink: 0; `, mainContainer: css` - display: grid; - grid-template-columns: 1fr 1fr; - gap: ${size[2]}; + display: flex; flex: 1; min-height: 0; overflow: hidden; + gap: ${size[2]}; + padding: ${size[2]}; + padding-top: 0; + `, + dragHandle: css` + width: 4px; + background: ${colors.darkGray[600]}; + cursor: col-resize; + position: relative; + transition: background 0.2s ease; + user-select: none; + + &:hover { + background: ${colors.blue[500]}; + } + + &.dragging { + background: ${colors.blue[600]}; + } + + &::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 2px; + height: 20px; + background: ${colors.darkGray[400]}; + border-radius: 1px; + } + + &:hover::after, + &.dragging::after { + background: ${colors.blue[300]}; + } `, leftPanel: css` background: ${colors.darkGray[800]}; @@ -54,6 +85,7 @@ const stylesFactory = () => { flex-direction: column; overflow: hidden; min-height: 0; + flex: 1; `, rightPanel: css` background: ${colors.darkGray[800]}; @@ -63,6 +95,7 @@ const stylesFactory = () => { flex-direction: column; overflow: hidden; min-height: 0; + flex: 1; `, panelHeader: css` font-size: ${fontSize.md}; @@ -71,6 +104,7 @@ const stylesFactory = () => { padding: ${size[2]}; border-bottom: 1px solid ${colors.darkGray[700]}; background: ${colors.darkGray[800]}; + flex-shrink: 0; `, utilList: css` flex: 1; @@ -206,6 +240,14 @@ const stylesFactory = () => { background: ${colors.darkGray[500]}; border-color: ${colors.darkGray[400]}; } + &:disabled { + opacity: 0.5; + cursor: not-allowed; + &:hover { + background: ${colors.darkGray[600]}; + border-color: ${colors.darkGray[500]}; + } + } `, actionDotBlue: css` width: 6px; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb7731cd..d7d807f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1571,6 +1571,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + dayjs: + specifier: ^1.11.13 + version: 1.11.13 goober: specifier: ^2.1.16 version: 2.1.16(csstype@3.1.3) @@ -3362,6 +3365,9 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -7249,6 +7255,8 @@ snapshots: dataloader@1.4.0: {} + dayjs@1.11.13: {} + de-indent@1.0.2: {} debug@3.2.7: From 05a046a5326febf974bd9ee319b2d1ed2113f896 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Mon, 18 Aug 2025 07:59:50 -0500 Subject: [PATCH 32/44] default options --- examples/react/useAsyncBatcher/src/index.tsx | 2 +- .../react/useAsyncDebouncer/src/index.tsx | 46 ++++++++----------- examples/react/useAsyncQueuer/src/index.tsx | 2 +- .../react/useAsyncRateLimiter/src/index.tsx | 4 +- .../react/useAsyncThrottler/src/index.tsx | 4 +- examples/react/useBatcher/src/index.tsx | 2 +- examples/react/useDebouncer/src/index.tsx | 2 +- examples/react/useQueuer/src/index.tsx | 2 +- examples/react/useRateLimiter/src/index.tsx | 2 +- examples/react/useThrottler/src/index.tsx | 2 +- .../src/provider/PacerProvider.tsx | 13 ++++-- 11 files changed, 38 insertions(+), 43 deletions(-) diff --git a/examples/react/useAsyncBatcher/src/index.tsx b/examples/react/useAsyncBatcher/src/index.tsx index af588817..7ebff2dc 100644 --- a/examples/react/useAsyncBatcher/src/index.tsx +++ b/examples/react/useAsyncBatcher/src/index.tsx @@ -219,7 +219,7 @@ const root = ReactDOM.createRoot(document.getElementById('root')!) root.render( // optionally, provide default options to an optional PacerProvider + + + ) : null, + ) +} + let mounted = true -root.render( - // optionally, provide default options to an optional PacerProvider - - - , -) +renderApp(mounted) -// demo unmounting and cancellation document.addEventListener('keydown', (e) => { if (e.shiftKey && e.key === 'Enter') { mounted = !mounted - root.render( - mounted ? ( - // optionally, provide default options to an optional PacerProvider - - - - ) : null, - ) + renderApp(mounted) } }) diff --git a/examples/react/useAsyncQueuer/src/index.tsx b/examples/react/useAsyncQueuer/src/index.tsx index 6ae40ca7..b59f23a0 100644 --- a/examples/react/useAsyncQueuer/src/index.tsx +++ b/examples/react/useAsyncQueuer/src/index.tsx @@ -146,7 +146,7 @@ const root = ReactDOM.createRoot(document.getElementById('root')!) root.render( // optionally, provide default options to an optional PacerProvider { mounted ? ( // optionally, provide default options to an optional PacerProvider { mounted ? ( // optionally, provide default options to an optional PacerProvider (null) export interface PacerProviderProps { children: ReactNode - options?: PacerProviderOptions + defaultOptions?: PacerProviderOptions } -export function PacerProvider({ children, options = {} }: PacerProviderProps) { +export function PacerProvider({ + children, + defaultOptions = {}, +}: PacerProviderProps) { const contextValue: PacerContextValue = { - options, + defaultOptions, } return ( @@ -58,5 +61,5 @@ export function usePacerContext() { export function useDefaultPacerOptions() { const context = useContext(PacerContext) - return context?.options ?? {} + return context?.defaultOptions ?? {} } From e42387e8a72449bec3f7c75130a0405f966f03ff Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 13:00:56 +0000 Subject: [PATCH 33/44] ci: apply automated fixes --- .../react/reference/functions/usedefaultpaceroptions.md | 2 +- docs/framework/react/reference/functions/usepacercontext.md | 2 +- .../react/reference/interfaces/pacerproviderprops.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/framework/react/reference/functions/usedefaultpaceroptions.md b/docs/framework/react/reference/functions/usedefaultpaceroptions.md index 532cd830..a5fb75f6 100644 --- a/docs/framework/react/reference/functions/usedefaultpaceroptions.md +++ b/docs/framework/react/reference/functions/usedefaultpaceroptions.md @@ -11,7 +11,7 @@ title: useDefaultPacerOptions function useDefaultPacerOptions(): PacerProviderOptions ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:59](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L59) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:62](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L62) ## Returns diff --git a/docs/framework/react/reference/functions/usepacercontext.md b/docs/framework/react/reference/functions/usepacercontext.md index 4937efd5..f5b38619 100644 --- a/docs/framework/react/reference/functions/usepacercontext.md +++ b/docs/framework/react/reference/functions/usepacercontext.md @@ -11,7 +11,7 @@ title: usePacerContext function usePacerContext(): null | PacerContextValue ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:55](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L55) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:58](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L58) ## Returns diff --git a/docs/framework/react/reference/interfaces/pacerproviderprops.md b/docs/framework/react/reference/interfaces/pacerproviderprops.md index 49380176..5841e9d6 100644 --- a/docs/framework/react/reference/interfaces/pacerproviderprops.md +++ b/docs/framework/react/reference/interfaces/pacerproviderprops.md @@ -21,10 +21,10 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:39](https://github.com/T *** -### options? +### defaultOptions? ```ts -optional options: PacerProviderOptions; +optional defaultOptions: PacerProviderOptions; ``` Defined in: [react-pacer/src/provider/PacerProvider.tsx:40](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L40) From 471337b39ed95a8ecb47924d912f532608e18c4d Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 00:16:35 +0000 Subject: [PATCH 34/44] ci: apply automated fixes --- packages/pacer/src/queuer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pacer/src/queuer.ts b/packages/pacer/src/queuer.ts index 77319564..fe3277a2 100644 --- a/packages/pacer/src/queuer.ts +++ b/packages/pacer/src/queuer.ts @@ -287,7 +287,7 @@ export class Queuer { this.addItem(item, this.options.addItemsTo ?? 'back', isLast) } } - + pacerEventClient.on('d-Queuer', (event) => { if (event.payload.key !== this.key) return this.#setState(event.payload.store.state) From 4eabc6ca184c8a20037164301f45a070ca46fa24 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Thu, 28 Aug 2025 13:49:32 -0500 Subject: [PATCH 35/44] package upgrades --- examples/react/asyncBatch/package.json | 6 +- examples/react/asyncDebounce/package.json | 6 +- examples/react/asyncRateLimit/package.json | 6 +- examples/react/asyncThrottle/package.json | 6 +- examples/react/batch/package.json | 6 +- examples/react/debounce/package.json | 6 +- examples/react/queue/package.json | 8 +- examples/react/rateLimit/package.json | 6 +- .../package.json | 6 +- .../react-query-queued-prefetch/package.json | 6 +- .../package.json | 6 +- examples/react/throttle/package.json | 6 +- .../useAsyncBatchedCallback/package.json | 6 +- examples/react/useAsyncBatcher/package.json | 6 +- .../useAsyncDebouncedCallback/package.json | 6 +- examples/react/useAsyncDebouncer/package.json | 6 +- .../react/useAsyncQueuedState/package.json | 6 +- examples/react/useAsyncQueuer/package.json | 6 +- .../react/useAsyncRateLimiter/package.json | 6 +- .../package.json | 6 +- examples/react/useAsyncRetryer/package.json | 8 +- examples/react/useAsyncThrottler/package.json | 6 +- .../react/useBatchedCallback/package.json | 6 +- examples/react/useBatcher/package.json | 6 +- .../react/useDebouncedCallback/package.json | 6 +- examples/react/useDebouncedState/package.json | 6 +- examples/react/useDebouncedValue/package.json | 6 +- examples/react/useDebouncer/package.json | 6 +- examples/react/useQueuedState/package.json | 6 +- examples/react/useQueuedValue/package.json | 6 +- examples/react/useQueuer/package.json | 8 +- .../react/useQueuerWithPersister/package.json | 6 +- .../react/useRateLimitedCallback/package.json | 6 +- .../react/useRateLimitedState/package.json | 6 +- .../react/useRateLimitedValue/package.json | 6 +- examples/react/useRateLimiter/package.json | 6 +- .../useRateLimiterWithPersister/package.json | 6 +- .../react/useThrottledCallback/package.json | 6 +- examples/react/useThrottledState/package.json | 6 +- examples/react/useThrottledValue/package.json | 6 +- examples/react/useThrottler/package.json | 6 +- examples/react/util-comparison/package.json | 8 +- examples/solid/createQueuer/package.json | 2 +- examples/solid/queue/package.json | 2 +- package.json | 12 +- packages/pacer-devtools/package.json | 6 +- packages/pacer/package.json | 2 +- packages/react-pacer-devtools/package.json | 2 +- packages/react-pacer/package.json | 6 +- packages/solid-pacer/package.json | 2 +- pnpm-lock.yaml | 1895 +++++++++-------- 51 files changed, 1109 insertions(+), 1080 deletions(-) diff --git a/examples/react/asyncBatch/package.json b/examples/react/asyncBatch/package.json index 16e13205..3e54a5f0 100644 --- a/examples/react/asyncBatch/package.json +++ b/examples/react/asyncBatch/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/asyncDebounce/package.json b/examples/react/asyncDebounce/package.json index d3a18f55..02ba7574 100644 --- a/examples/react/asyncDebounce/package.json +++ b/examples/react/asyncDebounce/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/asyncRateLimit/package.json b/examples/react/asyncRateLimit/package.json index a04d3829..accd0d56 100644 --- a/examples/react/asyncRateLimit/package.json +++ b/examples/react/asyncRateLimit/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/asyncThrottle/package.json b/examples/react/asyncThrottle/package.json index 04fd3aef..f607de15 100644 --- a/examples/react/asyncThrottle/package.json +++ b/examples/react/asyncThrottle/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/batch/package.json b/examples/react/batch/package.json index 29e37042..382648ae 100644 --- a/examples/react/batch/package.json +++ b/examples/react/batch/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/debounce/package.json b/examples/react/debounce/package.json index 27173a30..20dacc97 100644 --- a/examples/react/debounce/package.json +++ b/examples/react/debounce/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index 20a14331..b84e2114 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -14,11 +14,11 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-devtools": "0.4.2", + "@tanstack/react-devtools": "0.5.3", "@tanstack/react-pacer-devtools": "0.1.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/rateLimit/package.json b/examples/react/rateLimit/package.json index ff03c2d1..9e8a9a86 100644 --- a/examples/react/rateLimit/package.json +++ b/examples/react/rateLimit/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/react-query-debounced-prefetch/package.json b/examples/react/react-query-debounced-prefetch/package.json index 75ca5296..5e3fca49 100644 --- a/examples/react/react-query-debounced-prefetch/package.json +++ b/examples/react/react-query-debounced-prefetch/package.json @@ -16,9 +16,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/react-query-queued-prefetch/package.json b/examples/react/react-query-queued-prefetch/package.json index fcade7e6..0ce4c1a2 100644 --- a/examples/react/react-query-queued-prefetch/package.json +++ b/examples/react/react-query-queued-prefetch/package.json @@ -16,9 +16,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/react-query-throttled-prefetch/package.json b/examples/react/react-query-throttled-prefetch/package.json index c7561a4a..70db5024 100644 --- a/examples/react/react-query-throttled-prefetch/package.json +++ b/examples/react/react-query-throttled-prefetch/package.json @@ -16,9 +16,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/throttle/package.json b/examples/react/throttle/package.json index 808d1ab4..4b972eb0 100644 --- a/examples/react/throttle/package.json +++ b/examples/react/throttle/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncBatchedCallback/package.json b/examples/react/useAsyncBatchedCallback/package.json index be0167ff..08d6d98d 100644 --- a/examples/react/useAsyncBatchedCallback/package.json +++ b/examples/react/useAsyncBatchedCallback/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncBatcher/package.json b/examples/react/useAsyncBatcher/package.json index 9320c02a..9f554d90 100644 --- a/examples/react/useAsyncBatcher/package.json +++ b/examples/react/useAsyncBatcher/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncDebouncedCallback/package.json b/examples/react/useAsyncDebouncedCallback/package.json index 2fa61048..2a66c44a 100644 --- a/examples/react/useAsyncDebouncedCallback/package.json +++ b/examples/react/useAsyncDebouncedCallback/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncDebouncer/package.json b/examples/react/useAsyncDebouncer/package.json index 7679fe28..fa79aab7 100644 --- a/examples/react/useAsyncDebouncer/package.json +++ b/examples/react/useAsyncDebouncer/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncQueuedState/package.json b/examples/react/useAsyncQueuedState/package.json index 4eb8d40c..5a5acbb2 100644 --- a/examples/react/useAsyncQueuedState/package.json +++ b/examples/react/useAsyncQueuedState/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncQueuer/package.json b/examples/react/useAsyncQueuer/package.json index b58d5c1c..d91bdfcb 100644 --- a/examples/react/useAsyncQueuer/package.json +++ b/examples/react/useAsyncQueuer/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncRateLimiter/package.json b/examples/react/useAsyncRateLimiter/package.json index 25c03aa1..8d2e5583 100644 --- a/examples/react/useAsyncRateLimiter/package.json +++ b/examples/react/useAsyncRateLimiter/package.json @@ -15,9 +15,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncRateLimiterWithPersister/package.json b/examples/react/useAsyncRateLimiterWithPersister/package.json index 81a8a9c2..aa4ab283 100644 --- a/examples/react/useAsyncRateLimiterWithPersister/package.json +++ b/examples/react/useAsyncRateLimiterWithPersister/package.json @@ -15,9 +15,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useAsyncRetryer/package.json b/examples/react/useAsyncRetryer/package.json index 3d07f61c..ecf59fbb 100644 --- a/examples/react/useAsyncRetryer/package.json +++ b/examples/react/useAsyncRetryer/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.0", - "vite": "^7.1.2" + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", + "vite": "^7.1.3" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncThrottler/package.json b/examples/react/useAsyncThrottler/package.json index dd863a0e..090cb5a8 100644 --- a/examples/react/useAsyncThrottler/package.json +++ b/examples/react/useAsyncThrottler/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useBatchedCallback/package.json b/examples/react/useBatchedCallback/package.json index f92a0cff..8236bc13 100644 --- a/examples/react/useBatchedCallback/package.json +++ b/examples/react/useBatchedCallback/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useBatcher/package.json b/examples/react/useBatcher/package.json index 890e4bee..28b62d11 100644 --- a/examples/react/useBatcher/package.json +++ b/examples/react/useBatcher/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useDebouncedCallback/package.json b/examples/react/useDebouncedCallback/package.json index 0dd02e67..226260ad 100644 --- a/examples/react/useDebouncedCallback/package.json +++ b/examples/react/useDebouncedCallback/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useDebouncedState/package.json b/examples/react/useDebouncedState/package.json index c0005405..03bc7bfc 100644 --- a/examples/react/useDebouncedState/package.json +++ b/examples/react/useDebouncedState/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useDebouncedValue/package.json b/examples/react/useDebouncedValue/package.json index 33a957f6..7c732aeb 100644 --- a/examples/react/useDebouncedValue/package.json +++ b/examples/react/useDebouncedValue/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useDebouncer/package.json b/examples/react/useDebouncer/package.json index 6ef0fadd..b8599e2a 100644 --- a/examples/react/useDebouncer/package.json +++ b/examples/react/useDebouncer/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useQueuedState/package.json b/examples/react/useQueuedState/package.json index 38d171b4..d495ad9c 100644 --- a/examples/react/useQueuedState/package.json +++ b/examples/react/useQueuedState/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useQueuedValue/package.json b/examples/react/useQueuedValue/package.json index 17b45ee6..551f8df3 100644 --- a/examples/react/useQueuedValue/package.json +++ b/examples/react/useQueuedValue/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useQueuer/package.json b/examples/react/useQueuer/package.json index bbceb6e3..066be2d1 100644 --- a/examples/react/useQueuer/package.json +++ b/examples/react/useQueuer/package.json @@ -15,11 +15,11 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-devtools": "0.4.2", + "@tanstack/react-devtools": "0.5.3", "@tanstack/react-pacer-devtools": "0.1.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useQueuerWithPersister/package.json b/examples/react/useQueuerWithPersister/package.json index 9dbf63d0..516fc792 100644 --- a/examples/react/useQueuerWithPersister/package.json +++ b/examples/react/useQueuerWithPersister/package.json @@ -15,9 +15,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useRateLimitedCallback/package.json b/examples/react/useRateLimitedCallback/package.json index 6e63c54f..0d3a9447 100644 --- a/examples/react/useRateLimitedCallback/package.json +++ b/examples/react/useRateLimitedCallback/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useRateLimitedState/package.json b/examples/react/useRateLimitedState/package.json index 01129a3b..fe82e792 100644 --- a/examples/react/useRateLimitedState/package.json +++ b/examples/react/useRateLimitedState/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useRateLimitedValue/package.json b/examples/react/useRateLimitedValue/package.json index 335a4c28..8e40ef6d 100644 --- a/examples/react/useRateLimitedValue/package.json +++ b/examples/react/useRateLimitedValue/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useRateLimiter/package.json b/examples/react/useRateLimiter/package.json index 356c313d..45eb2199 100644 --- a/examples/react/useRateLimiter/package.json +++ b/examples/react/useRateLimiter/package.json @@ -15,9 +15,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useRateLimiterWithPersister/package.json b/examples/react/useRateLimiterWithPersister/package.json index 1d5148e8..ecb2ce04 100644 --- a/examples/react/useRateLimiterWithPersister/package.json +++ b/examples/react/useRateLimiterWithPersister/package.json @@ -15,9 +15,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useThrottledCallback/package.json b/examples/react/useThrottledCallback/package.json index 63277343..81ae2abc 100644 --- a/examples/react/useThrottledCallback/package.json +++ b/examples/react/useThrottledCallback/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useThrottledState/package.json b/examples/react/useThrottledState/package.json index 17ad4a1c..c7ce12ad 100644 --- a/examples/react/useThrottledState/package.json +++ b/examples/react/useThrottledState/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useThrottledValue/package.json b/examples/react/useThrottledValue/package.json index ee654bed..f8b8fec3 100644 --- a/examples/react/useThrottledValue/package.json +++ b/examples/react/useThrottledValue/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/useThrottler/package.json b/examples/react/useThrottler/package.json index cc4fb43b..270cbb50 100644 --- a/examples/react/useThrottler/package.json +++ b/examples/react/useThrottler/package.json @@ -14,9 +14,9 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/react/util-comparison/package.json b/examples/react/util-comparison/package.json index 6739e383..baf1dd9a 100644 --- a/examples/react/util-comparison/package.json +++ b/examples/react/util-comparison/package.json @@ -14,11 +14,11 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-devtools": "0.4.2", + "@tanstack/react-devtools": "0.5.3", "@tanstack/react-pacer-devtools": "0.1.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.2", "vite": "^7.1.3" }, "browserslist": { diff --git a/examples/solid/createQueuer/package.json b/examples/solid/createQueuer/package.json index 7ee2ccd1..425a0ae1 100644 --- a/examples/solid/createQueuer/package.json +++ b/examples/solid/createQueuer/package.json @@ -9,7 +9,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.4.2", + "@tanstack/solid-devtools": "0.5.3", "@tanstack/solid-pacer": "^0.14.1", "@tanstack/solid-pacer-devtools": "0.1.0", "solid-js": "^1.9.9" diff --git a/examples/solid/queue/package.json b/examples/solid/queue/package.json index f8fc5ac9..9582bddc 100644 --- a/examples/solid/queue/package.json +++ b/examples/solid/queue/package.json @@ -9,7 +9,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.4.2", + "@tanstack/solid-devtools": "0.5.3", "@tanstack/solid-pacer": "^0.14.1", "@tanstack/solid-pacer-devtools": "0.1.0", "solid-js": "^1.9.9" diff --git a/package.json b/package.json index 4cfaf518..115ddd93 100644 --- a/package.json +++ b/package.json @@ -53,19 +53,19 @@ ], "devDependencies": { "@changesets/cli": "^2.29.6", - "@faker-js/faker": "^9.9.0", + "@faker-js/faker": "^10.0.0", "@size-limit/preset-small-lib": "^11.2.0", "@svitejs/changesets-changelog-github-compact": "^1.2.0", - "@tanstack/config": "0.20.0", - "@testing-library/jest-dom": "^6.7.0", + "@tanstack/config": "0.20.1", + "@testing-library/jest-dom": "^6.8.0", "@types/node": "^24.3.0", - "eslint": "^9.33.0", + "eslint": "^9.34.0", "eslint-plugin-unused-imports": "^4.2.0", "fast-glob": "^3.3.3", "jsdom": "^26.1.0", - "knip": "^5.62.0", + "knip": "^5.63.0", "markdown-link-extractor": "^4.0.2", - "nx": "^21.4.0", + "nx": "^21.4.1", "premove": "^4.0.0", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 756dc6c9..118fa829 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -71,10 +71,10 @@ "@tanstack/pacer": ">=0.15.0" }, "dependencies": { - "@tanstack/devtools-ui": "^0.3.1", - "@tanstack/solid-store": "^0.7.3", + "@tanstack/devtools-ui": "^0.3.2", + "@tanstack/solid-store": "^0.7.4", "clsx": "^2.1.1", - "dayjs": "^1.11.13", + "dayjs": "^1.11.15", "goober": "^2.1.16", "solid-js": "^1.9.9" }, diff --git a/packages/pacer/package.json b/packages/pacer/package.json index 74d05667..4a497cf5 100644 --- a/packages/pacer/package.json +++ b/packages/pacer/package.json @@ -192,6 +192,6 @@ }, "dependencies": { "@tanstack/devtools-event-client": "^0.2.2", - "@tanstack/store": "^0.7.2" + "@tanstack/store": "^0.7.4" } } diff --git a/packages/react-pacer-devtools/package.json b/packages/react-pacer-devtools/package.json index 554ab5b8..c6a4add0 100644 --- a/packages/react-pacer-devtools/package.json +++ b/packages/react-pacer-devtools/package.json @@ -78,7 +78,7 @@ }, "devDependencies": { "@eslint-react/eslint-plugin": "^1.52.6", - "@vitejs/plugin-react": "^5.0.1", + "@vitejs/plugin-react": "^5.0.2", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0" } diff --git a/packages/react-pacer/package.json b/packages/react-pacer/package.json index 5536b654..6381f3d4 100644 --- a/packages/react-pacer/package.json +++ b/packages/react-pacer/package.json @@ -192,12 +192,12 @@ }, "dependencies": { "@tanstack/pacer": "workspace:*", - "@tanstack/react-store": "^0.7.3" + "@tanstack/react-store": "^0.7.4" }, "devDependencies": { "@eslint-react/eslint-plugin": "^1.52.6", - "@types/react": "^19.1.10", - "@vitejs/plugin-react": "^5.0.1", + "@types/react": "^19.1.12", + "@vitejs/plugin-react": "^5.0.2", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", "react": "^19.1.1" diff --git a/packages/solid-pacer/package.json b/packages/solid-pacer/package.json index 6ac4d77e..a407c7b5 100644 --- a/packages/solid-pacer/package.json +++ b/packages/solid-pacer/package.json @@ -172,7 +172,7 @@ }, "dependencies": { "@tanstack/pacer": "workspace:*", - "@tanstack/solid-store": "^0.7.3" + "@tanstack/solid-store": "^0.7.4" }, "devDependencies": { "solid-js": "^1.9.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26189fe2..865bf747 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^2.29.6 version: 2.29.6(@types/node@24.3.0) '@faker-js/faker': - specifier: ^9.9.0 - version: 9.9.0 + specifier: ^10.0.0 + version: 10.0.0 '@size-limit/preset-small-lib': specifier: ^11.2.0 version: 11.2.0(size-limit@11.2.0) @@ -21,20 +21,20 @@ importers: specifier: ^1.2.0 version: 1.2.0 '@tanstack/config': - specifier: 0.20.0 - version: 0.20.0(@types/node@24.3.0)(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: 0.20.1 + version: 0.20.1(@types/node@24.3.0)(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) '@testing-library/jest-dom': - specifier: ^6.7.0 - version: 6.7.0 + specifier: ^6.8.0 + version: 6.8.0 '@types/node': specifier: ^24.3.0 version: 24.3.0 eslint: - specifier: ^9.33.0 - version: 9.33.0(jiti@2.4.2) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) eslint-plugin-unused-imports: specifier: ^4.2.0 - version: 4.2.0(@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2)) + version: 4.2.0(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)) fast-glob: specifier: ^3.3.3 version: 3.3.3 @@ -42,14 +42,14 @@ importers: specifier: ^26.1.0 version: 26.1.0 knip: - specifier: ^5.62.0 - version: 5.62.0(@types/node@24.3.0)(typescript@5.9.2) + specifier: ^5.63.0 + version: 5.63.0(@types/node@24.3.0)(typescript@5.9.2) markdown-link-extractor: specifier: ^4.0.2 version: 4.0.2 nx: - specifier: ^21.4.0 - version: 21.4.0 + specifier: ^21.4.1 + version: 21.4.1 premove: specifier: ^4.0.0 version: 4.0.0 @@ -73,10 +73,10 @@ importers: version: 5.9.2 vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.3.0)(jiti@2.4.2)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0) + version: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncBatch: dependencies: @@ -91,17 +91,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncDebounce: dependencies: @@ -116,17 +116,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncRateLimit: dependencies: @@ -141,17 +141,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncThrottle: dependencies: @@ -166,17 +166,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/batch: dependencies: @@ -191,17 +191,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/debounce: dependencies: @@ -216,17 +216,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/queue: dependencies: @@ -241,23 +241,23 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@tanstack/react-devtools': - specifier: 0.4.2 - version: 0.4.2(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + specifier: 0.5.3 + version: 0.5.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.1.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/rateLimit: dependencies: @@ -272,17 +272,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-debounced-prefetch: dependencies: @@ -303,17 +303,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-queued-prefetch: dependencies: @@ -334,17 +334,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-throttled-prefetch: dependencies: @@ -365,17 +365,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/throttle: dependencies: @@ -390,17 +390,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatchedCallback: dependencies: @@ -415,17 +415,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatcher: dependencies: @@ -440,17 +440,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncedCallback: dependencies: @@ -465,17 +465,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncer: dependencies: @@ -490,17 +490,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuedState: dependencies: @@ -515,17 +515,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuer: dependencies: @@ -540,17 +540,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiter: dependencies: @@ -568,17 +568,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiterWithPersister: dependencies: @@ -596,17 +596,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRetryer: dependencies: @@ -621,17 +621,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.0 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.2 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.3 + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncThrottler: dependencies: @@ -646,17 +646,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatchedCallback: dependencies: @@ -671,17 +671,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatcher: dependencies: @@ -696,17 +696,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedCallback: dependencies: @@ -721,17 +721,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedState: dependencies: @@ -746,17 +746,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedValue: dependencies: @@ -771,17 +771,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncer: dependencies: @@ -796,17 +796,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedState: dependencies: @@ -821,17 +821,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedValue: dependencies: @@ -846,17 +846,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuer: dependencies: @@ -874,23 +874,23 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@tanstack/react-devtools': - specifier: 0.4.2 - version: 0.4.2(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + specifier: 0.5.3 + version: 0.5.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.1.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuerWithPersister: dependencies: @@ -908,17 +908,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedCallback: dependencies: @@ -933,17 +933,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedState: dependencies: @@ -958,17 +958,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedValue: dependencies: @@ -983,17 +983,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiter: dependencies: @@ -1011,17 +1011,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiterWithPersister: dependencies: @@ -1039,17 +1039,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledCallback: dependencies: @@ -1064,17 +1064,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledState: dependencies: @@ -1089,17 +1089,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledValue: dependencies: @@ -1114,17 +1114,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottler: dependencies: @@ -1139,17 +1139,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/react/util-comparison: dependencies: @@ -1164,23 +1164,23 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@tanstack/react-devtools': - specifier: 0.4.2 - version: 0.4.2(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + specifier: 0.5.3 + version: 0.5.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.1.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@types/react-dom': - specifier: ^19.1.7 - version: 19.1.7(@types/react@19.1.10) + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) examples/solid/asyncBatch: dependencies: @@ -1193,10 +1193,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncDebounce: dependencies: @@ -1209,10 +1209,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncRateLimit: dependencies: @@ -1225,10 +1225,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncThrottle: dependencies: @@ -1241,10 +1241,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/batch: dependencies: @@ -1257,10 +1257,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncBatcher: dependencies: @@ -1273,10 +1273,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncDebouncer: dependencies: @@ -1289,10 +1289,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncQueuer: dependencies: @@ -1305,10 +1305,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncRateLimiter: dependencies: @@ -1321,10 +1321,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncThrottler: dependencies: @@ -1337,10 +1337,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createBatcher: dependencies: @@ -1353,10 +1353,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedSignal: dependencies: @@ -1369,10 +1369,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedValue: dependencies: @@ -1385,10 +1385,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncer: dependencies: @@ -1401,16 +1401,16 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createQueuer: dependencies: '@tanstack/solid-devtools': - specifier: 0.4.2 - version: 0.4.2(csstype@3.1.3)(solid-js@1.9.9) + specifier: 0.5.3 + version: 0.5.3(csstype@3.1.3)(solid-js@1.9.9) '@tanstack/solid-pacer': specifier: ^0.14.1 version: link:../../../packages/solid-pacer @@ -1423,10 +1423,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedSignal: dependencies: @@ -1439,10 +1439,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedValue: dependencies: @@ -1455,10 +1455,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimiter: dependencies: @@ -1471,10 +1471,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledSignal: dependencies: @@ -1487,10 +1487,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledValue: dependencies: @@ -1503,10 +1503,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottler: dependencies: @@ -1519,10 +1519,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/debounce: dependencies: @@ -1535,16 +1535,16 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/queue: dependencies: '@tanstack/solid-devtools': - specifier: 0.4.2 - version: 0.4.2(csstype@3.1.3)(solid-js@1.9.9) + specifier: 0.5.3 + version: 0.5.3(csstype@3.1.3)(solid-js@1.9.9) '@tanstack/solid-pacer': specifier: ^0.14.1 version: link:../../../packages/solid-pacer @@ -1557,10 +1557,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/rateLimit: dependencies: @@ -1573,10 +1573,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/throttle: dependencies: @@ -1589,10 +1589,10 @@ importers: devDependencies: vite: specifier: ^7.1.3 - version: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) packages/pacer: dependencies: @@ -1600,26 +1600,26 @@ importers: specifier: ^0.2.2 version: 0.2.2 '@tanstack/store': - specifier: ^0.7.2 - version: 0.7.2 + specifier: ^0.7.4 + version: 0.7.4 packages/pacer-devtools: dependencies: '@tanstack/devtools-ui': - specifier: ^0.3.1 - version: 0.3.1(csstype@3.1.3)(solid-js@1.9.9) + specifier: ^0.3.2 + version: 0.3.2(csstype@3.1.3)(solid-js@1.9.9) '@tanstack/pacer': specifier: '>=0.15.0' version: link:../pacer '@tanstack/solid-store': - specifier: ^0.7.3 - version: 0.7.3(solid-js@1.9.9) + specifier: ^0.7.4 + version: 0.7.4(solid-js@1.9.9) clsx: specifier: ^2.1.1 version: 2.1.1 dayjs: - specifier: ^1.11.13 - version: 1.11.13 + specifier: ^1.11.15 + version: 1.11.15 goober: specifier: ^2.1.16 version: 2.1.16(csstype@3.1.3) @@ -1629,7 +1629,7 @@ importers: devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) packages/react-pacer: dependencies: @@ -1637,27 +1637,27 @@ importers: specifier: workspace:* version: link:../pacer '@tanstack/react-store': - specifier: ^0.7.3 - version: 0.7.3(react-dom@19.1.0(react@19.1.1))(react@19.1.1) + specifier: ^0.7.4 + version: 0.7.4(react-dom@19.1.0(react@19.1.1))(react@19.1.1) react-dom: specifier: '>=16.8' version: 19.1.0(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': specifier: ^1.52.6 - version: 1.52.6(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + version: 1.52.6(eslint@9.34.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) '@types/react': - specifier: ^19.1.10 - version: 19.1.10 + specifier: ^19.1.12 + version: 19.1.12 '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.33.0(jiti@2.4.2)) + version: 19.1.0-rc.2(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.33.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.34.0(jiti@2.5.1)) react: specifier: ^19.1.1 version: 19.1.1 @@ -1682,16 +1682,16 @@ importers: devDependencies: '@eslint-react/eslint-plugin': specifier: ^1.52.6 - version: 1.52.6(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + version: 1.52.6(eslint@9.34.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) '@vitejs/plugin-react': - specifier: ^5.0.1 - version: 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.33.0(jiti@2.4.2)) + version: 19.1.0-rc.2(eslint@9.34.0(jiti@2.5.1)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.33.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.34.0(jiti@2.5.1)) packages/solid-pacer: dependencies: @@ -1699,15 +1699,15 @@ importers: specifier: workspace:* version: link:../pacer '@tanstack/solid-store': - specifier: ^0.7.3 - version: 0.7.3(solid-js@1.9.9) + specifier: ^0.7.4 + version: 0.7.4(solid-js@1.9.9) devDependencies: solid-js: specifier: ^1.9.9 version: 1.9.9 vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) packages/solid-pacer-devtools: dependencies: @@ -1720,7 +1720,7 @@ importers: devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.7)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.7)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) packages: @@ -2077,12 +2077,21 @@ packages: '@emnapi/core@1.4.3': resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/runtime@1.4.3': resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/wasi-threads@1.0.2': resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@esbuild/aix-ppc64@0.25.0': resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} engines: {node: '>=18'} @@ -2293,12 +2302,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.31.0': - resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.33.0': - resolution: {integrity: sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==} + '@eslint/js@9.34.0': + resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -2309,9 +2314,9 @@ packages: resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@faker-js/faker@9.9.0': - resolution: {integrity: sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==} - engines: {node: '>=18.0.0', npm: '>=9.0.0'} + '@faker-js/faker@10.0.0': + resolution: {integrity: sha512-UollFEUkVXutsaP+Vndjxar40Gs5JL2HeLcl8xO1QAjJgOdhc3OmBFWyEylS+RddWaaBiAzH+5/17PLQJwDiLw==} + engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} '@gerrit0/mini-shiki@1.27.2': resolution: {integrity: sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==} @@ -2406,15 +2411,15 @@ packages: '@microsoft/tsdoc@0.15.1': resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} - '@napi-rs/wasm-runtime@0.2.10': - resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} - '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} + '@napi-rs/wasm-runtime@1.0.3': + resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2427,118 +2432,148 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nx/nx-darwin-arm64@21.4.0': - resolution: {integrity: sha512-GDa/zycRzRA3jaaHNOBJGKoUFyylcWIv8ANf0OSdj4D92coSn8W1I2F95k9HSoACY4nLLp6hh9F9dLAaCw0GjQ==} + '@nx/nx-darwin-arm64@21.4.1': + resolution: {integrity: sha512-9BbkQnxGEDNX2ESbW4Zdrq1i09y6HOOgTuGbMJuy4e8F8rU/motMUqOpwmFgLHkLgPNZiOC2VXht3or/kQcpOg==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@21.4.0': - resolution: {integrity: sha512-MNE5Dr7E2eckapk9P/kMtBYZsUmPlnhAYphGTqn3cE8kbe4DdoNB+QPkXK13IgYq3isSyRu5GLyPPxgqz+E2iw==} + '@nx/nx-darwin-x64@21.4.1': + resolution: {integrity: sha512-dnkmap1kc6aLV8CW1ihjsieZyaDDjlIB5QA2reTCLNSdTV446K6Fh0naLdaoG4ZkF27zJA/qBOuAaLzRHFJp3g==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@21.4.0': - resolution: {integrity: sha512-2cMcAEqFsBXU8PoL0X7HWSoOhYchOcQ9pQ3W+TJ/r7FV9uwavwKQxzNXfK95Bx33T6D4AY0/vCAeOpaqFFrt0A==} + '@nx/nx-freebsd-x64@21.4.1': + resolution: {integrity: sha512-RpxDBGOPeDqJjpbV7F3lO/w1aIKfLyG/BM0OpJfTgFVpUIl50kMj5M1m4W9A8kvYkfOD9pDbUaWszom7d57yjg==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@21.4.0': - resolution: {integrity: sha512-zoc7hBcTS2fmBdbhWCGwlDaTZA7+w/Gb7f6GcAUl4NOx1gT99nuFrQ8XtrmTkIq/YzOhVok/4K82O3CHV7N4qw==} + '@nx/nx-linux-arm-gnueabihf@21.4.1': + resolution: {integrity: sha512-2OyBoag2738XWmWK3ZLBuhaYb7XmzT3f8HzomggLDJoDhwDekjgRoNbTxogAAj6dlXSeuPjO81BSlIfXQcth3w==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@21.4.0': - resolution: {integrity: sha512-IgHuZyPoAXFYKodjpgb47Dtec6eg1FKKWyZyybn4RvPfp42DlofMASNjUZtjDOilK0vq5FWNOu0C8F3jeGSjqA==} + '@nx/nx-linux-arm64-gnu@21.4.1': + resolution: {integrity: sha512-2pg7/zjBDioUWJ3OY8Ixqy64eokKT5sh4iq1bk22bxOCf676aGrAu6khIxy4LBnPIdO0ZOK7KCJ7xOFP4phZqA==} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@21.4.0': - resolution: {integrity: sha512-Q4RE4rXiH0n+KO71l2V6b5U8sVX24p+81BK0Hi93HgR7WSSMtikTZ3RO8JO3zCIRSJxbjyS8xNiw7F2W3OzmPQ==} + '@nx/nx-linux-arm64-musl@21.4.1': + resolution: {integrity: sha512-whNxh12au/inQtkZju1ZfXSqDS0hCh/anzVCXfLYWFstdwv61XiRmFCSHeN0gRDthlncXFdgKoT1bGG5aMYLtA==} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@21.4.0': - resolution: {integrity: sha512-xdKpl0SI+ILqzwd2TAuSH6tA5WHoYRhdbBO3J8NvLga/3b8NxdEN/vLb2FzfsWMu81O0IOJ6pMxGE7N6zps9sg==} + '@nx/nx-linux-x64-gnu@21.4.1': + resolution: {integrity: sha512-UHw57rzLio0AUDXV3l+xcxT3LjuXil7SHj+H8aYmXTpXktctQU2eYGOs5ATqJ1avVQRSejJugHF0i8oLErC28A==} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@21.4.0': - resolution: {integrity: sha512-p0Enow79yrdvF3djXohQx8fxp86f8LpQxD0ec4Y0VGT+3xQWSVsnehhiYkPQp3doEj2u/rBJjop6ITfE/Z09Sw==} + '@nx/nx-linux-x64-musl@21.4.1': + resolution: {integrity: sha512-qqE2Gy/DwOLIyePjM7GLHp/nDLZJnxHmqTeCiTQCp/BdbmqjRkSUz5oL+Uua0SNXaTu5hjAfvjXAhSTgBwVO6g==} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@21.4.0': - resolution: {integrity: sha512-nrl89vb/0k8h04hhakzU57cs/dDl9K8xncKBsKKbIDxgd8gRO/KYzEEU/H+QE/jDB/vavm3Q7uxmUpJ5ysIitw==} + '@nx/nx-win32-arm64-msvc@21.4.1': + resolution: {integrity: sha512-NtEzMiRrSm2DdL4ntoDdjeze8DBrfZvLtx3Dq6+XmOhwnigR6umfWfZ6jbluZpuSQcxzQNVifqirdaQKYaYwDQ==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@21.4.0': - resolution: {integrity: sha512-LaPLZjFy59+oIgZm0zSlhcMI8ZICAxEvm0A9VUexxeIj/Od6jmW9BV1tmIpQ0x1G8tN6sFGBt8hBxHNeLFfh1w==} + '@nx/nx-win32-x64-msvc@21.4.1': + resolution: {integrity: sha512-gpG+Y4G/mxGrfkUls6IZEuuBxRaKLMSEoVFLMb9JyyaLEDusn+HJ1m90XsOedjNLBHGMFigsd/KCCsXfFn4njg==} cpu: [x64] os: [win32] - '@oxc-resolver/binding-darwin-arm64@11.1.0': - resolution: {integrity: sha512-n9y3Lb1+BwsOtm3BmXSUPu3iDtTq7Sf0gX4e+izFTfNrj+u6uTKqbmlq8ggV8CRdg1zGUaCvKNvg/9q3C/19gg==} + '@oxc-resolver/binding-android-arm-eabi@11.7.1': + resolution: {integrity: sha512-K0gF1mD6CYMAuX0dMWe6XW1Js00xCOBh/+ZAAJReQMa4+jmAk3bIeitsc8VnDthDbzOOKp3riizP3o/tBvNpgw==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.7.1': + resolution: {integrity: sha512-O1XEX/KxKX7baPgYHahP+3vT+9f4gasPA0px4DYrjy1mN9wWQqJPLLo/PO3cBw3qI3qRaaiAGT3eJSs8rKu8mA==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.7.1': + resolution: {integrity: sha512-OSCJlXUTvGoal5dTMkdacmXL2R3YQ+97R7NMSdjkUVnh3TxvGBhoF9OebqY3PR7w2gQaY5LX+Ju+dYeHGBCGgw==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.1.0': - resolution: {integrity: sha512-2aJTPN9/lTmq0xw1YYsy5GDPkTyp92EoYRtw9nVgGErwMvA87duuLnIdoztYk66LGa3g5y4RgOaEapZbK7132A==} + '@oxc-resolver/binding-darwin-x64@11.7.1': + resolution: {integrity: sha512-d0jKwK4r4Yw19xSijyt7wHZT77xh3v4GnJSbvEiPavLms27zqc//BqYJUSp9XgOTOkyFQ+oHno47JNiLTnsSnQ==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.1.0': - resolution: {integrity: sha512-GoPEd9GvEyuS1YyqvAhAlccZeBEyHFkrHPEhS/+UTPcrzDzZ16ckJSmZtwOPhci5FWHK/th4L6NPiOnDLGFrqQ==} + '@oxc-resolver/binding-freebsd-x64@11.7.1': + resolution: {integrity: sha512-oNch5OpAnxFjukDZ5GJkuEDEPPYDirm10q2cJcbK0SETVM0rY+ou1cLqJAJC9R/dULbqGKC9fv2kuyuw9M6Fig==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.1.0': - resolution: {integrity: sha512-mQdQDTbw2/RcJKvMi8RAmDECuEC4waM5jeUBn8Cz1pLVddH8MfYJgKbZJUATBNNaHjw/u+Sq9Q1tcJbm8dhpYQ==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.1': + resolution: {integrity: sha512-ldUPUfV/0L56fTSfzUo86Bmgov8SAfau8Q4Y3WiAiQi6WHLA239abTZZViLZuXvrC+4RQF/kD0ySqKfBjW/X9g==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.7.1': + resolution: {integrity: sha512-M+ORXlPV0dXCHleqOYLjKHwxn9kDmcJqnJ7zGZ07vggaxOCnpM6zqyGS92YTTyeYre2AqO3Xrx1D4rnUeozI8g==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.1.0': - resolution: {integrity: sha512-HDFQiPl7cX2DVXFlulWOinjqXa5Rj4ydFY9xJCwWAHGx2LmqwLDD8MI0UrHVUaHhLLWn54vjGtwsJK94dtkCwg==} + '@oxc-resolver/binding-linux-arm64-gnu@11.7.1': + resolution: {integrity: sha512-ukHZp9Vm07AlxqdOLFf8Bj4inzpt+ISbbODvwwHxX32GfcMLWYYJGAYWc13IGhWoElvWnI7D1M9ifDGyTNRGzg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-arm64-musl@11.1.0': - resolution: {integrity: sha512-0TFcZSVUQPV1r6sFUf7U2fz0mFCaqh5qMlb2zCioZj0C+xUJghC8bz88/qQUc5SA5K4gqg0WEOXzdqz/mXCLLA==} + '@oxc-resolver/binding-linux-arm64-musl@11.7.1': + resolution: {integrity: sha512-atkZ1OIt6t90kjQz1iqq6cN3OpfPG5zUJlO64Vd1ieYeqHRkOFeRgnWEobTePUHi34NlYr7mNZqIaAg7gjPUFg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-gnu@11.1.0': - resolution: {integrity: sha512-crG0iy5U9ac99Xkt9trWo5YvtCoSpPUrNZMeUVDkIy1qy1znfv66CveOgCm0G5TwooIIWLJrtFUqi0AkazS3fw==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.7.1': + resolution: {integrity: sha512-HGgV4z3JwVF4Qvg2a1GhDnqn8mKLihy5Gp4rMfqNIAlERPSyIxo8oPQIL1XQKLYyyrkEEO99uwM+4cQGwhtbpQ==} + cpu: [ppc64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.7.1': + resolution: {integrity: sha512-+vCO7iOR1s6VGefV02R2a702IASNWhSNm/MrR8RcWjKChmU0G+d1iC0oToUrGC4ovAEfstx2/O8EkROnfcLgrA==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-musl@11.7.1': + resolution: {integrity: sha512-3folNmS5gYNFy/9HYzLcdeThqAGvDJU0gQKrhHn7RPWQa58yZ0ZPpBMk6KRSSO61+wkchkL+0sdcLsoe5wZW8g==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-s390x-gnu@11.1.0': - resolution: {integrity: sha512-aPemnsn/FXADFu7/VnSprO8uVb9UhNVdBdrIlAREh3s7LoW1QksKyP8/DlFe0o2E79MRQ3XF1ONOgW5zLcUmzA==} + '@oxc-resolver/binding-linux-s390x-gnu@11.7.1': + resolution: {integrity: sha512-Ceo4z6g8vqPUKADROFL0b7MoyXlUdOBYCxTDu/fhd/5I3Ydk2S6bxkjJdzpBdlu+h2Z+eS9lTHFvkwkaORMPzw==} cpu: [s390x] os: [linux] - '@oxc-resolver/binding-linux-x64-gnu@11.1.0': - resolution: {integrity: sha512-eMQ0Iue4Bs0jabCIHiEJbZMPoczdx1oBGOiNS/ykCE76Oos/Hb5uD1FB+Vw4agP2cAxzcp8zHO7MpEW450yswg==} + '@oxc-resolver/binding-linux-x64-gnu@11.7.1': + resolution: {integrity: sha512-QyFW5e43imQLxiBpCImhOiP4hY9coWGjroEm8elDqGNNaA7vXooaMQS2N3avMQawSaKhsb/3RemxaZ852XG38Q==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-linux-x64-musl@11.1.0': - resolution: {integrity: sha512-5IjxRv0vWiGb102QmwF+ljutUWA1+BZbdW+58lFOVzVVo29L+m5PrEtijY5kK0FMTDvwb/xFXpGq3/vQx+bpSg==} + '@oxc-resolver/binding-linux-x64-musl@11.7.1': + resolution: {integrity: sha512-JhuCqCqktqQyQVc37V+eDiP3buCIuyCLpb92tUEyAP8nY3dy2b/ojMrH1ZNnJUlfY/67AqoZPL6nQGAB2WA3Sg==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-wasm32-wasi@11.1.0': - resolution: {integrity: sha512-+yz7LYHKW1GK+fJoHh9JibgIWDeBHf5wiu1tgDD92y5eLFEBxP+CjJ2caTZnVRREH74l03twOfcTR9EaLsEidQ==} + '@oxc-resolver/binding-wasm32-wasi@11.7.1': + resolution: {integrity: sha512-sMXm5Z2rfBwkCUespZBJCPhCVbgh/fpYQ23BQs0PmnvWoXrGQHWvnvg1p/GYmleN+nwe8strBjfutirZFiC5lA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.1.0': - resolution: {integrity: sha512-aTF/1TIq9v86Qy3++YFhKJVKXYSTO54yRRWIXwzpgGvZu41acjN/UsNOG7C2QFy/xdkitrZf1awYgawSqNox3g==} + '@oxc-resolver/binding-win32-arm64-msvc@11.7.1': + resolution: {integrity: sha512-C/Sam1RJi/h/F618IB/H3pCOhTf+2ArdTqrqQolN8ARV35iWTSezgy6qPjQGj7aWn/9M5vgtCInfS2SwnkBJ4w==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.1.0': - resolution: {integrity: sha512-CxalsPMU4oSoZviLMaw01RhLglyN7jrUUhTDRv4pYGcsRxxt5S7e/wO9P/lm5BYgAAq4TtP5MkGuGuMrm//a0g==} + '@oxc-resolver/binding-win32-ia32-msvc@11.7.1': + resolution: {integrity: sha512-iNRgJxOkfmxeq9DiF9S4jtw3vq5kkAm6dsP4RPxoAO/WsShPPHOSlTpOqyB8bSj5Bt9DBLRoI43XcNfDKgM+jA==} + cpu: [ia32] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.7.1': + resolution: {integrity: sha512-MXS81efp8pu2MkjEPu+nDhgoyHwdWUygXYSzIh3gV2A8/qF0PVEzH+EpmKR7Pl8dEZIaG1YXA+CO6bmNZT8oSw==} cpu: [x64] os: [win32] @@ -2546,8 +2581,8 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} - '@rolldown/pluginutils@1.0.0-beta.32': - resolution: {integrity: sha512-QReCdvxiUZAPkvp1xpAg62IeNzykOFA6syH2CnClif4YmALN1XKpB39XneL80008UbtMShthSVDKmrx05N1q/g==} + '@rolldown/pluginutils@1.0.0-beta.34': + resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} @@ -2729,8 +2764,8 @@ packages: peerDependencies: solid-js: ^1.6.12 - '@stylistic/eslint-plugin@5.2.0': - resolution: {integrity: sha512-RCEdbREv9EBiToUBQTlRhVYKG093I6ZnnQ990j08eJ6uRZh71DXkOnoxtTLfDQ6utVCVQzrhZFHZP0zfrfOIjA==} + '@stylistic/eslint-plugin@5.2.3': + resolution: {integrity: sha512-oY7GVkJGVMI5benlBDCaRrSC1qPasafyv5dOBLLv5MTilMGnErKhO6ziEfodDDIZbo5QxPUNW360VudJOFODMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -2744,32 +2779,32 @@ packages: resolution: {integrity: sha512-08eKiDAjj4zLug1taXSIJ0kGL5cawjVCyJkBb6EWSg5fEPX6L+Wtr0CH2If4j5KYylz85iaZiFlUItvgJvll5g==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} - '@tanstack/config@0.20.0': - resolution: {integrity: sha512-q6P0aYj7X65biWDKkKFQ4feQoxF8Bcxd3U3CU5zjBt9sgUrc/w8kEfHoGy0cHtgsTSMLfPrzaAtvp6hTbofZmw==} + '@tanstack/config@0.20.1': + resolution: {integrity: sha512-fvhOAY0FMw8F7O4RLVSje7thdKM0R1Es6k4wPkDG4m518UJijgL9ysZO8L+YmeEeldK81jZtMdRcGUOc0goa2g==} engines: {node: '>=18'} - '@tanstack/devtools-event-bus@0.2.1': - resolution: {integrity: sha512-JMq3AmrQR2LH9P8Rcj1MTq8Iq/mPk/PyuqSw1L0hO2Wl8G1oz5ue31fS8u8lIgOCVR/mGdJah18p+Pj5OosRJA==} + '@tanstack/devtools-event-bus@0.3.0': + resolution: {integrity: sha512-fPeJPL1sNee7haVfR+hItXJvCdU9dxm/oa/NDwiM25k8sSMe8OsVIuzluYNWfM0URQVRUZ1yzOeOeB8ssmEA8w==} engines: {node: '>=18'} '@tanstack/devtools-event-client@0.2.2': resolution: {integrity: sha512-EnVT9P4H8Z6wX9Z2WUT1K29AcRsDAo0GuOsJPgWi2khP/DB7ZUmQ+OUBO9xBbxYeHBJk6/nvMuucJgyYBwhYhA==} engines: {node: '>=18'} - '@tanstack/devtools-ui@0.3.1': - resolution: {integrity: sha512-vTbdo7aXm0tHYXTiRamee/73OHHahmMg/I4sxrmJWBscMP/NER234qrjPCHzAfzq/w4ddcJIVvXQjGJmBE0bfw==} + '@tanstack/devtools-ui@0.3.2': + resolution: {integrity: sha512-aCIZG3gojPpogApg15VUsZRw8WX048ipLBlvJ7kaCIZl68zxjrd6PGv/l7E6gfZpVPrs5QtFzx8SDziRUamx/A==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' - '@tanstack/devtools@0.4.1': - resolution: {integrity: sha512-5Yym7c2BC0QJy4qP2ERkbgYwQVbpWflmcLWAv7Alt6rE1y66p9Fon3KtLvMDuZpfXcrM0W82bBp5PfplKfa8rg==} + '@tanstack/devtools@0.6.1': + resolution: {integrity: sha512-zjwGqWAG2lMTdM6Bmh+VZ4K2HB/atGEWBYeq6nAwIs0fMC48EufDj4UIektKHiuzNng4b/BUoncKT4XwuefwiA==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' - '@tanstack/eslint-config@0.3.0': - resolution: {integrity: sha512-7OsrYscWEPojIRqh9byyyv2W+jm/3WaDckVnuQgf7a86YPhtN93fHa3hsKquJE/IbMX/FK0EDHi+DPAXwvZ5ZA==} + '@tanstack/eslint-config@0.3.1': + resolution: {integrity: sha512-t9A1epZWk0iUmLQxuLfo0MaBVmvtrpg3E7Y9N6+8InVlqdYOHaGLRqjwZ/nbzXkScqobei2nNXtjBZmkioJuhQ==} engines: {node: '>=18'} '@tanstack/pacer@0.13.0': @@ -2790,8 +2825,8 @@ packages: '@tanstack/query-devtools@5.84.0': resolution: {integrity: sha512-fbF3n+z1rqhvd9EoGp5knHkv3p5B2Zml1yNRjh7sNXklngYI5RVIWUrUjZ1RIcEoscarUb0+bOvIs5x9dwzOXQ==} - '@tanstack/react-devtools@0.4.2': - resolution: {integrity: sha512-DySdBOA7lJ6TYSwVlCJV+uWoNns827KhrO0fFwzTHB+wuwb3O/tdt65jHUryDGukAOhr5SAsWSfkQZzCNL1x9A==} + '@tanstack/react-devtools@0.5.3': + resolution: {integrity: sha512-x3A4Zk+D2+A0aMR+iITTTZGXrxX7atRgSVyyN0NtIMkr/K8UdNVcSRwnx/vhw5Z6nWjcFbu6OCRSD+l7UXaIBw==} engines: {node: '>=18'} peerDependencies: '@types/react': '>=16.8' @@ -2830,20 +2865,29 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/solid-devtools@0.4.2': - resolution: {integrity: sha512-G8IoDusAyuPMEszfN/9B4NWwSPAn3Ao/5E2uCafS9Ev223j1uqcllr/2dZ0mnUx4bnNH+1pbFMT+YP87lj8e2A==} + '@tanstack/react-store@0.7.4': + resolution: {integrity: sha512-DyG1e5Qz/c1cNLt/NdFbCA7K1QGuFXQYT6EfUltYMJoQ4LzBOGnOl5IjuxepNcRtmIKkGpmdMzdFZEkevgU9bQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/solid-devtools@0.5.3': + resolution: {integrity: sha512-zQ30E4mhC8QYXOJsi5NJms0ftxpeMZGam1ZVdLfdEHr6Br843fkcOYKDx8U89qGadKvJkzdVypIahLYsKNBGxg==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' - '@tanstack/solid-store@0.7.3': - resolution: {integrity: sha512-fEdiGQdlzG/eS4lOaIWvKp94hopVZiDZ2IgrQ9ntu5QtLPXOABq/2VDSQI7jkx43e3AdLdvlXVrljxw2BVB9tw==} + '@tanstack/solid-store@0.7.4': + resolution: {integrity: sha512-PoR8zUf48L9ACFSwlem6x28251cWyxGAUKu9VlsObnjaKRwWvgbT2XOU9FIprOPxmWtZc8gF1zThg5O0xQnAEw==} peerDependencies: solid-js: ^1.6.0 '@tanstack/store@0.7.2': resolution: {integrity: sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==} + '@tanstack/store@0.7.4': + resolution: {integrity: sha512-F1XqZQici1Aq6WigEfcxJSml92nW+85Om8ElBMokPNg5glCYVOmPkZGIQeieYFxcPiKTfwo0MTOQpUyJtwncrg==} + '@tanstack/typedoc-config@0.2.0': resolution: {integrity: sha512-1ak0ZirlLRxd3dNNOFnMoYORBeC83nK4C+OiXpE0dxsO8ZVrBqCtNCKr8SG+W9zICXcWGiFu9qYLsgNKTayOqw==} engines: {node: '>=18'} @@ -2852,8 +2896,8 @@ packages: resolution: {integrity: sha512-WpL1C9iR5/U7g3GpvHIssN5QvKnDnWhW05BQhaD6bAqoPCkQyBepxUF8ZRO4IGZRGVAZeMVqTbUA05BAQH/88g==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.7.0': - resolution: {integrity: sha512-RI2e97YZ7MRa+vxP4UUnMuMFL2buSsf0ollxUbTgrbPLKhMn8KVTx7raS6DYjC7v1NDVrioOvaShxsguLNISCA==} + '@testing-library/jest-dom@6.8.0': + resolution: {integrity: sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@tybys/wasm-util@0.10.0': @@ -2906,8 +2950,13 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.10': - resolution: {integrity: sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==} + '@types/react-dom@19.1.9': + resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.1.12': + resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} '@types/react@19.1.9': resolution: {integrity: sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==} @@ -2915,26 +2964,20 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.37.0': - resolution: {integrity: sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==} + '@typescript-eslint/eslint-plugin@8.41.0': + resolution: {integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.37.0 + '@typescript-eslint/parser': ^8.41.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.37.0': - resolution: {integrity: sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==} + '@typescript-eslint/parser@8.41.0': + resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/project-service@8.37.0': - resolution: {integrity: sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/project-service@8.39.1': resolution: {integrity: sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==} @@ -2942,19 +2985,19 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.37.0': - resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} + '@typescript-eslint/project-service@8.41.0': + resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/scope-manager@8.39.1': resolution: {integrity: sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.37.0': - resolution: {integrity: sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==} + '@typescript-eslint/scope-manager@8.41.0': + resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' '@typescript-eslint/tsconfig-utils@8.39.1': resolution: {integrity: sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==} @@ -2962,12 +3005,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.37.0': - resolution: {integrity: sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==} + '@typescript-eslint/tsconfig-utils@8.41.0': + resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/type-utils@8.39.1': resolution: {integrity: sha512-gu9/ahyatyAdQbKeHnhT4R+y3YLtqqHyvkfDxaBYk97EcbfChSJXyaJnIL3ygUv7OuZatePHmQvuH5ru0lnVeA==} @@ -2976,19 +3018,20 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.37.0': - resolution: {integrity: sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==} + '@typescript-eslint/type-utils@8.41.0': + resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/types@8.39.1': resolution: {integrity: sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.37.0': - resolution: {integrity: sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==} + '@typescript-eslint/types@8.41.0': + resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' '@typescript-eslint/typescript-estree@8.39.1': resolution: {integrity: sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==} @@ -2996,12 +3039,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.37.0': - resolution: {integrity: sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==} + '@typescript-eslint/typescript-estree@8.41.0': + resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/utils@8.39.1': resolution: {integrity: sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==} @@ -3010,14 +3052,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.37.0': - resolution: {integrity: sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==} + '@typescript-eslint/utils@8.41.0': + resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/visitor-keys@8.39.1': resolution: {integrity: sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.41.0': + resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -3113,8 +3162,8 @@ packages: cpu: [x64] os: [win32] - '@vitejs/plugin-react@5.0.1': - resolution: {integrity: sha512-DE4UNaBXwtVoDJ0ccBdLVjFTWL70NRuWNCxEieTI3lrq9ORB9aOCQEKstwDXBl87NvFdbqh/p7eINGyj0BthJA==} + '@vitejs/plugin-react@5.0.2': + resolution: {integrity: sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -3468,8 +3517,8 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.15: + resolution: {integrity: sha512-MC+DfnSWiM9APs7fpiurHGCoeIx0Gdl6QZBy+5lu8MbYKN5FZEXqOgrundfibdfhGZ15o9hzmZ2xJjZnbvgKXQ==} de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -3662,17 +3711,12 @@ packages: eslint-import-resolver-node: optional: true - eslint-plugin-n@17.21.0: - resolution: {integrity: sha512-1+iZ8We4ZlwVMtb/DcHG3y5/bZOdazIpa/4TySo22MLKdwrLcfrX0hbadnCvykSQCCmkAnWmIP8jZVb2AAq29A==} + eslint-plugin-n@17.21.3: + resolution: {integrity: sha512-MtxYjDZhMQgsWRm/4xYLL0i2EhusWT7itDxlJ80l1NND2AL2Vi5Mvneqv/ikG9+zpran0VsVRXTEHrpLmUZRNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' - eslint-plugin-pnpm@1.0.0: - resolution: {integrity: sha512-tyEA10k7psB9HFCx8R4/bU4JS2tSKfXaCnrCcis+1R4FucfMIc6HgcFl4msZbwY2I0D9Vec3xAEkXV0aPechhQ==} - peerDependencies: - eslint: ^9.0.0 - eslint-plugin-react-compiler@19.1.0-rc.2: resolution: {integrity: sha512-oKalwDGcD+RX9mf3NEO4zOoUMeLvjSvcbbEOpquzmzqEEM2MQdp7/FY/Hx9NzmUwFzH1W9SKTz5fihfMldpEYw==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} @@ -3769,8 +3813,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.33.0: - resolution: {integrity: sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==} + eslint@9.34.0: + resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3786,10 +3830,6 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -3883,10 +3923,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -3919,8 +3955,8 @@ packages: resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} - formatly@0.2.4: - resolution: {integrity: sha512-lIN7GpcvX/l/i24r/L9bnJ0I8Qn01qijWpQpDDvTLL29nKqSaJJu4h20+7VJ6m2CAhQ2/En/GbxDiHCzq/0MyA==} + formatly@0.3.0: + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} engines: {node: '>=18.3.0'} hasBin: true @@ -4176,6 +4212,10 @@ packages: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -4224,10 +4264,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-eslint-parser@2.4.0: - resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -4244,8 +4280,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - knip@5.62.0: - resolution: {integrity: sha512-hfTUVzmrMNMT1khlZfAYmBABeehwWUUrizLQoLamoRhSFkygsGIXWx31kaWKBgEaIVL77T3Uz7IxGvSw+CvQ6A==} + knip@5.63.0: + resolution: {integrity: sha512-xIFIi/uvLW0S/AQqwggN6UVRKBOQ1Ya7jBfQzllswZplr2si5C616/5wCcWc/eoi1PLJgPgJQLxqYq1aiYpqwg==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: @@ -4447,8 +4483,8 @@ packages: nwsapi@2.2.18: resolution: {integrity: sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==} - nx@21.4.0: - resolution: {integrity: sha512-BRymw8B8qs24RvqfroUVIRcxvMf1euONpi5+OMqvjZOSy5LTFTggrLwEg6GYIb1lj5kO53TTnZ/Wxj0m8tPKxQ==} + nx@21.4.1: + resolution: {integrity: sha512-nD8NjJGYk5wcqiATzlsLauvyrSHV2S2YmM2HBIKqTTwVP2sey07MF3wDB9U2BwxIjboahiITQ6pfqFgB79TF2A==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -4481,8 +4517,8 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - oxc-resolver@11.1.0: - resolution: {integrity: sha512-/W/9O6m7lkDJMIXtXvNKXE6THIoNWwstsKpR/R8+yI9e7vC9wu92MDqLBxkgckZ2fTFmKEjozTxVibHBaRUgCA==} + oxc-resolver@11.7.1: + resolution: {integrity: sha512-PzbEnD6NKTCFVKkUZtmQcX69ajdfM33RqI5kyb8mH9EdIqEUS00cWSXN0lsgYrtdTMzwo0EKKoH7hnGg6EDraQ==} p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} @@ -4578,9 +4614,6 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pnpm-workspace-yaml@1.0.0: - resolution: {integrity: sha512-2RKg3khFgX/oeKIQnxxlj+OUoKbaZjBt7EsmQiLfl8AHZKMIpLmXLRPptZ5eq2Rlumh2gILs6OWNky5dzP+f8A==} - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -4833,8 +4866,8 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - smol-toml@1.3.4: - resolution: {integrity: sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==} + smol-toml@1.4.2: + resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} engines: {node: '>= 18'} solid-js@1.9.7: @@ -5065,12 +5098,12 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x - typescript-eslint@8.37.0: - resolution: {integrity: sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==} + typescript-eslint@8.41.0: + resolution: {integrity: sha512-n66rzs5OBXW3SFSnZHr2T685q1i4ODm2nulFJhMZBotaTavsS8TrI3d7bDlRSs9yWo7HmyWrN9qDu14Qv7Y0Dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} @@ -5344,15 +5377,6 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml-eslint-parser@1.3.0: - resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} - engines: {node: ^14.17.0 || >=16.0.0} - - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - yaml@2.8.0: resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} engines: {node: '>= 14.6'} @@ -5963,14 +5987,30 @@ snapshots: '@emnapi/wasi-threads': 1.0.2 tslib: 2.8.1 + '@emnapi/core@1.4.5': + dependencies: + '@emnapi/wasi-threads': 1.0.4 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.4.3': dependencies: tslib: 2.8.1 + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.0.2': dependencies: tslib: 2.8.1 + '@emnapi/wasi-threads@1.0.4': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.25.0': optional: true @@ -6046,19 +6086,19 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.33.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.5.1))': dependencies: - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/ast@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-react/eff': 1.52.6 '@typescript-eslint/types': 8.39.1 '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) string-ts: 2.2.1 ts-pattern: 5.8.0 transitivePeerDependencies: @@ -6066,17 +6106,17 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/core@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) birecord: 0.1.1 ts-pattern: 5.8.0 transitivePeerDependencies: @@ -6086,32 +6126,32 @@ snapshots: '@eslint-react/eff@1.52.6': {} - '@eslint-react/eslint-plugin@1.52.6(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2)': + '@eslint-react/eslint-plugin@1.52.6(eslint@9.34.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2)': dependencies: '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) - eslint-plugin-react-debug: 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-dom: 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-hooks-extra: 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-naming-convention: 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-web-api: 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-react-x: 1.52.6(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) + eslint-plugin-react-debug: 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-dom: 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-hooks-extra: 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-naming-convention: 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-web-api: 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-x: 1.52.6(eslint@9.34.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - ts-api-utils - '@eslint-react/kit@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/kit@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-react/eff': 1.52.6 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) ts-pattern: 5.8.0 zod: 4.0.17 transitivePeerDependencies: @@ -6119,11 +6159,11 @@ snapshots: - supports-color - typescript - '@eslint-react/shared@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/shared@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) ts-pattern: 5.8.0 zod: 4.0.17 transitivePeerDependencies: @@ -6131,13 +6171,13 @@ snapshots: - supports-color - typescript - '@eslint-react/var@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@eslint-react/var@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 '@typescript-eslint/scope-manager': 8.39.1 '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) string-ts: 2.2.1 ts-pattern: 5.8.0 transitivePeerDependencies: @@ -6173,9 +6213,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.31.0': {} - - '@eslint/js@9.33.0': {} + '@eslint/js@9.34.0': {} '@eslint/object-schema@2.1.6': {} @@ -6184,7 +6222,7 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 - '@faker-js/faker@9.9.0': {} + '@faker-js/faker@10.0.0': {} '@gerrit0/mini-shiki@1.27.2': dependencies: @@ -6306,13 +6344,6 @@ snapshots: '@microsoft/tsdoc@0.15.1': {} - '@napi-rs/wasm-runtime@0.2.10': - dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 - '@tybys/wasm-util': 0.9.0 - optional: true - '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.4.3 @@ -6326,6 +6357,13 @@ snapshots: '@emnapi/runtime': 1.4.3 '@tybys/wasm-util': 0.9.0 + '@napi-rs/wasm-runtime@1.0.3': + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.10.0 + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -6338,86 +6376,104 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@nx/nx-darwin-arm64@21.4.0': + '@nx/nx-darwin-arm64@21.4.1': + optional: true + + '@nx/nx-darwin-x64@21.4.1': + optional: true + + '@nx/nx-freebsd-x64@21.4.1': optional: true - '@nx/nx-darwin-x64@21.4.0': + '@nx/nx-linux-arm-gnueabihf@21.4.1': optional: true - '@nx/nx-freebsd-x64@21.4.0': + '@nx/nx-linux-arm64-gnu@21.4.1': optional: true - '@nx/nx-linux-arm-gnueabihf@21.4.0': + '@nx/nx-linux-arm64-musl@21.4.1': optional: true - '@nx/nx-linux-arm64-gnu@21.4.0': + '@nx/nx-linux-x64-gnu@21.4.1': optional: true - '@nx/nx-linux-arm64-musl@21.4.0': + '@nx/nx-linux-x64-musl@21.4.1': optional: true - '@nx/nx-linux-x64-gnu@21.4.0': + '@nx/nx-win32-arm64-msvc@21.4.1': optional: true - '@nx/nx-linux-x64-musl@21.4.0': + '@nx/nx-win32-x64-msvc@21.4.1': optional: true - '@nx/nx-win32-arm64-msvc@21.4.0': + '@oxc-resolver/binding-android-arm-eabi@11.7.1': optional: true - '@nx/nx-win32-x64-msvc@21.4.0': + '@oxc-resolver/binding-android-arm64@11.7.1': optional: true - '@oxc-resolver/binding-darwin-arm64@11.1.0': + '@oxc-resolver/binding-darwin-arm64@11.7.1': optional: true - '@oxc-resolver/binding-darwin-x64@11.1.0': + '@oxc-resolver/binding-darwin-x64@11.7.1': optional: true - '@oxc-resolver/binding-freebsd-x64@11.1.0': + '@oxc-resolver/binding-freebsd-x64@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.1.0': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.1.0': + '@oxc-resolver/binding-linux-arm-musleabihf@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.1.0': + '@oxc-resolver/binding-linux-arm64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.1.0': + '@oxc-resolver/binding-linux-arm64-musl@11.7.1': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.1.0': + '@oxc-resolver/binding-linux-ppc64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.1.0': + '@oxc-resolver/binding-linux-riscv64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.1.0': + '@oxc-resolver/binding-linux-riscv64-musl@11.7.1': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.1.0': + '@oxc-resolver/binding-linux-s390x-gnu@11.7.1': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.7.1': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.7.1': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.7.1': dependencies: - '@napi-rs/wasm-runtime': 0.2.10 + '@napi-rs/wasm-runtime': 1.0.3 optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.1.0': + '@oxc-resolver/binding-win32-arm64-msvc@11.7.1': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.1.0': + '@oxc-resolver/binding-win32-ia32-msvc@11.7.1': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.7.1': optional: true '@publint/pack@0.1.2': {} - '@rolldown/pluginutils@1.0.0-beta.32': {} + '@rolldown/pluginutils@1.0.0-beta.34': {} '@rollup/pluginutils@5.1.4(rollup@4.44.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.44.1 @@ -6566,11 +6622,11 @@ snapshots: dependencies: solid-js: 1.9.9 - '@stylistic/eslint-plugin@5.2.0(eslint@9.33.0(jiti@2.4.2))': + '@stylistic/eslint-plugin@5.2.3(eslint@9.34.0(jiti@2.5.1))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) - '@typescript-eslint/types': 8.37.0 - eslint: 9.33.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) + '@typescript-eslint/types': 8.39.1 + eslint: 9.34.0(jiti@2.5.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -6587,12 +6643,12 @@ snapshots: transitivePeerDependencies: - encoding - '@tanstack/config@0.20.0(@types/node@24.3.0)(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/config@0.20.1(@types/node@24.3.0)(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@tanstack/eslint-config': 0.3.0(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@tanstack/eslint-config': 0.3.1(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@tanstack/publish-config': 0.2.0 '@tanstack/typedoc-config': 0.2.0(typescript@5.9.2) - '@tanstack/vite-config': 0.2.0(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + '@tanstack/vite-config': 0.2.0(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - '@typescript-eslint/utils' @@ -6603,7 +6659,7 @@ snapshots: - typescript - vite - '@tanstack/devtools-event-bus@0.2.1': + '@tanstack/devtools-event-bus@0.3.0': dependencies: ws: 8.18.3 transitivePeerDependencies: @@ -6612,7 +6668,7 @@ snapshots: '@tanstack/devtools-event-client@0.2.2': {} - '@tanstack/devtools-ui@0.3.1(csstype@3.1.3)(solid-js@1.9.9)': + '@tanstack/devtools-ui@0.3.2(csstype@3.1.3)(solid-js@1.9.9)': dependencies: clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) @@ -6620,11 +6676,11 @@ snapshots: transitivePeerDependencies: - csstype - '@tanstack/devtools@0.4.1(csstype@3.1.3)(solid-js@1.9.9)': + '@tanstack/devtools@0.6.1(csstype@3.1.3)(solid-js@1.9.9)': dependencies: '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.9) - '@tanstack/devtools-event-bus': 0.2.1 - '@tanstack/devtools-ui': 0.3.1(csstype@3.1.3)(solid-js@1.9.9) + '@tanstack/devtools-event-bus': 0.3.0 + '@tanstack/devtools-ui': 0.3.2(csstype@3.1.3)(solid-js@1.9.9) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.9 @@ -6633,18 +6689,15 @@ snapshots: - csstype - utf-8-validate - '@tanstack/eslint-config@0.3.0(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@tanstack/eslint-config@0.3.1(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint/js': 9.31.0 - '@stylistic/eslint-plugin': 5.2.0(eslint@9.33.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2)) - eslint-plugin-n: 17.21.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint-plugin-pnpm: 1.0.0(eslint@9.33.0(jiti@2.4.2)) + '@eslint/js': 9.34.0 + '@stylistic/eslint-plugin': 5.2.3(eslint@9.34.0(jiti@2.5.1)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1)) + eslint-plugin-n: 17.21.3(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) globals: 16.3.0 - jsonc-eslint-parser: 2.4.0 - typescript-eslint: 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - vue-eslint-parser: 10.2.0(eslint@9.33.0(jiti@2.4.2)) - yaml-eslint-parser: 1.3.0 + typescript-eslint: 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + vue-eslint-parser: 10.2.0(eslint@9.34.0(jiti@2.5.1)) transitivePeerDependencies: - '@typescript-eslint/utils' - eslint @@ -6654,7 +6707,7 @@ snapshots: '@tanstack/pacer@0.13.0': dependencies: - '@tanstack/store': 0.7.2 + '@tanstack/store': 0.7.4 '@tanstack/persister@0.1.1': {} @@ -6671,11 +6724,11 @@ snapshots: '@tanstack/query-devtools@5.84.0': {} - '@tanstack/react-devtools@0.4.2(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)': + '@tanstack/react-devtools@0.5.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)': dependencies: - '@tanstack/devtools': 0.4.1(csstype@3.1.3)(solid-js@1.9.9) - '@types/react': 19.1.10 - '@types/react-dom': 19.1.7(@types/react@19.1.10) + '@tanstack/devtools': 0.6.1(csstype@3.1.3)(solid-js@1.9.9) + '@types/react': 19.1.12 + '@types/react-dom': 19.1.9(@types/react@19.1.12) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) transitivePeerDependencies: @@ -6708,36 +6761,38 @@ snapshots: '@tanstack/query-core': 5.85.5 react: 19.1.1 - '@tanstack/react-store@0.7.3(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': + '@tanstack/react-store@0.7.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/store': 0.7.2 react: 19.1.1 - react-dom: 19.1.0(react@19.1.1) + react-dom: 19.1.1(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/react-store@0.7.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@tanstack/react-store@0.7.4(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/store': 0.7.2 + '@tanstack/store': 0.7.4 react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + react-dom: 19.1.0(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/solid-devtools@0.4.2(csstype@3.1.3)(solid-js@1.9.9)': + '@tanstack/solid-devtools@0.5.3(csstype@3.1.3)(solid-js@1.9.9)': dependencies: - '@tanstack/devtools': 0.4.1(csstype@3.1.3)(solid-js@1.9.9) + '@tanstack/devtools': 0.6.1(csstype@3.1.3)(solid-js@1.9.9) solid-js: 1.9.9 transitivePeerDependencies: - bufferutil - csstype - utf-8-validate - '@tanstack/solid-store@0.7.3(solid-js@1.9.9)': + '@tanstack/solid-store@0.7.4(solid-js@1.9.9)': dependencies: - '@tanstack/store': 0.7.2 + '@tanstack/store': 0.7.4 solid-js: 1.9.9 '@tanstack/store@0.7.2': {} + '@tanstack/store@0.7.4': {} + '@tanstack/typedoc-config@0.2.0(typescript@5.9.2)': dependencies: typedoc: 0.27.9(typescript@5.9.2) @@ -6746,12 +6801,12 @@ snapshots: transitivePeerDependencies: - typescript - '@tanstack/vite-config@0.2.0(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/vite-config@0.2.0(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': dependencies: rollup-plugin-preserve-directives: 0.4.0(rollup@4.44.1) - vite-plugin-dts: 4.2.3(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) - vite-plugin-externalize-deps: 0.9.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) - vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-dts: 4.2.3(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-externalize-deps: 0.9.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - rollup @@ -6759,7 +6814,7 @@ snapshots: - typescript - vite - '@testing-library/jest-dom@6.7.0': + '@testing-library/jest-dom@6.8.0': dependencies: '@adobe/css-tools': 4.4.2 aria-query: 5.3.2 @@ -6824,15 +6879,15 @@ snapshots: dependencies: undici-types: 7.10.0 - '@types/react-dom@19.1.7(@types/react@19.1.10)': - dependencies: - '@types/react': 19.1.10 - '@types/react-dom@19.1.7(@types/react@19.1.9)': dependencies: '@types/react': 19.1.9 - '@types/react@19.1.10': + '@types/react-dom@19.1.9(@types/react@19.1.12)': + dependencies: + '@types/react': 19.1.12 + + '@types/react@19.1.12': dependencies: csstype: 3.1.3 @@ -6842,15 +6897,15 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/type-utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.37.0 - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.41.0 + '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.41.0 + eslint: 9.34.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -6859,98 +6914,82 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/scope-manager': 8.41.0 + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.41.0 debug: 4.4.1 - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.37.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.39.1(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.39.1(typescript@5.9.2)': + '@typescript-eslint/project-service@8.41.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) - '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) + '@typescript-eslint/types': 8.41.0 debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.37.0': - dependencies: - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 - '@typescript-eslint/scope-manager@8.39.1': dependencies: '@typescript-eslint/types': 8.39.1 '@typescript-eslint/visitor-keys': 8.39.1 - '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.2)': + '@typescript-eslint/scope-manager@8.41.0': dependencies: - typescript: 5.9.2 + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/visitor-keys': 8.41.0 '@typescript-eslint/tsconfig-utils@8.39.1(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - debug: 4.4.1 - eslint: 9.33.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.39.1 '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.37.0': {} - - '@typescript-eslint/types@8.39.1': {} - - '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.37.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.37.0(typescript@5.9.2) - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/visitor-keys': 8.37.0 + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 + eslint: 9.34.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/types@8.39.1': {} + + '@typescript-eslint/types@8.41.0': {} + '@typescript-eslint/typescript-estree@8.39.1(typescript@5.9.2)': dependencies: '@typescript-eslint/project-service': 8.39.1(typescript@5.9.2) @@ -6967,38 +7006,54 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.41.0(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.37.0 - '@typescript-eslint/types': 8.37.0 - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/project-service': 8.41.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/visitor-keys': 8.41.0 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2)': + '@typescript-eslint/utils@8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) '@typescript-eslint/scope-manager': 8.39.1 '@typescript-eslint/types': 8.39.1 '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.37.0': + '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.37.0 - eslint-visitor-keys: 4.2.1 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.41.0 + '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color '@typescript-eslint/visitor-keys@8.39.1': dependencies: '@typescript-eslint/types': 8.39.1 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.41.0': + dependencies: + '@typescript-eslint/types': 8.41.0 + eslint-visitor-keys: 4.2.1 + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -7058,15 +7113,15 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@vitejs/plugin-react@5.0.2(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.3 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.3) - '@rolldown/pluginutils': 1.0.0-beta.32 + '@rolldown/pluginutils': 1.0.0-beta.34 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -7078,13 +7133,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -7126,7 +7181,7 @@ snapshots: '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.3 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -7451,7 +7506,7 @@ snapshots: dataloader@1.4.0: {} - dayjs@1.11.13: {} + dayjs@1.11.15: {} de-indent@1.0.2: {} @@ -7604,9 +7659,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.33.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.34.0(jiti@2.5.1)): dependencies: - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) semver: 7.7.2 eslint-import-context@0.1.9(unrs-resolver@1.11.1): @@ -7625,19 +7680,19 @@ snapshots: - supports-color optional: true - eslint-plugin-es-x@7.8.0(eslint@9.33.0(jiti@2.4.2)): + eslint-plugin-es-x@7.8.0(eslint@9.34.0(jiti@2.5.1)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.33.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.33.0(jiti@2.4.2)) + eslint: 9.34.0(jiti@2.5.1) + eslint-compat-utils: 0.5.1(eslint@9.34.0(jiti@2.5.1)) - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.33.0(jiti@2.4.2)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.5.1)): dependencies: - '@typescript-eslint/types': 8.37.0 + '@typescript-eslint/types': 8.39.1 comment-parser: 1.4.1 debug: 4.4.1 - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 9.0.5 @@ -7645,61 +7700,51 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.21.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-n@17.21.3(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) enhanced-resolve: 5.18.1 - eslint: 9.33.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.33.0(jiti@2.4.2)) + eslint: 9.34.0(jiti@2.5.1) + eslint-plugin-es-x: 7.8.0(eslint@9.34.0(jiti@2.5.1)) get-tsconfig: 4.10.1 globals: 15.15.0 + globrex: 0.1.2 ignore: 5.3.2 - minimatch: 9.0.5 semver: 7.7.2 ts-declaration-location: 1.0.7(typescript@5.9.2) transitivePeerDependencies: - typescript - eslint-plugin-pnpm@1.0.0(eslint@9.33.0(jiti@2.4.2)): - dependencies: - eslint: 9.33.0(jiti@2.4.2) - find-up-simple: 1.0.1 - jsonc-eslint-parser: 2.4.0 - pathe: 2.0.3 - pnpm-workspace-yaml: 1.0.0 - tinyglobby: 0.2.14 - yaml-eslint-parser: 1.3.0 - - eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.33.0(jiti@2.4.2)): + eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.34.0(jiti@2.5.1)): dependencies: '@babel/core': 7.26.10 '@babel/parser': 7.27.0 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.10) - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) hermes-parser: 0.25.1 zod: 3.24.2 zod-validation-error: 3.4.0(zod@3.24.2) transitivePeerDependencies: - supports-color - eslint-plugin-react-debug@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-react-debug@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) string-ts: 2.2.1 ts-pattern: 5.8.0 optionalDependencies: @@ -7707,19 +7752,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-react-dom@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) compare-versions: 6.1.1 - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) string-ts: 2.2.1 ts-pattern: 5.8.0 optionalDependencies: @@ -7727,19 +7772,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-react-hooks-extra@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) string-ts: 2.2.1 ts-pattern: 5.8.0 optionalDependencies: @@ -7747,23 +7792,23 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@9.33.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.34.0(jiti@2.5.1)): dependencies: - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) - eslint-plugin-react-naming-convention@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-react-naming-convention@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) string-ts: 2.2.1 ts-pattern: 5.8.0 optionalDependencies: @@ -7771,18 +7816,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + eslint-plugin-react-web-api@1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) string-ts: 2.2.1 ts-pattern: 5.8.0 optionalDependencies: @@ -7790,21 +7835,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.52.6(eslint@9.33.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2): + eslint-plugin-react-x@1.52.6(eslint@9.34.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/core': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/ast': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@eslint-react/eff': 1.52.6 - '@eslint-react/kit': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/shared': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@eslint-react/var': 1.52.6(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@eslint-react/kit': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/shared': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 1.52.6(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) compare-versions: 6.1.1 - eslint: 9.33.0(jiti@2.4.2) - is-immutable-type: 5.0.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) + is-immutable-type: 5.0.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) string-ts: 2.2.1 ts-pattern: 5.8.0 optionalDependencies: @@ -7813,11 +7858,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2)): + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)): dependencies: - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) eslint-scope@8.4.0: dependencies: @@ -7828,15 +7873,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.33.0(jiti@2.4.2): + eslint@9.34.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.33.0 + '@eslint/js': 9.34.0 '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -7866,7 +7911,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.2 + jiti: 2.5.1 transitivePeerDependencies: - supports-color @@ -7878,12 +7923,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - espree@9.6.1: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} esquery@1.6.0: @@ -7958,8 +7997,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - find-up-simple@1.0.1: {} - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -7988,7 +8025,7 @@ snapshots: es-set-tostringtag: 2.1.0 mime-types: 2.1.35 - formatly@0.2.4: + formatly@0.3.0: dependencies: fd-package-json: 2.0.0 @@ -8168,10 +8205,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + is-immutable-type@5.0.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/type-utils': 8.39.1(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) ts-declaration-location: 1.0.7(typescript@5.9.2) typescript: 5.9.2 @@ -8219,6 +8256,8 @@ snapshots: jiti@2.4.2: {} + jiti@2.5.1: {} + jju@1.4.0: {} js-tokens@4.0.0: {} @@ -8273,13 +8312,6 @@ snapshots: json5@2.2.3: {} - jsonc-eslint-parser@2.4.0: - dependencies: - acorn: 8.15.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - semver: 7.7.2 - jsonc-parser@3.2.0: {} jsonfile@4.0.0: @@ -8298,19 +8330,19 @@ snapshots: dependencies: json-buffer: 3.0.1 - knip@5.62.0(@types/node@24.3.0)(typescript@5.9.2): + knip@5.63.0(@types/node@24.3.0)(typescript@5.9.2): dependencies: '@nodelib/fs.walk': 1.2.8 '@types/node': 24.3.0 fast-glob: 3.3.3 - formatly: 0.2.4 - jiti: 2.4.2 + formatly: 0.3.0 + jiti: 2.5.1 js-yaml: 4.1.0 minimist: 1.2.8 - oxc-resolver: 11.1.0 + oxc-resolver: 11.7.1 picocolors: 1.1.1 - picomatch: 4.0.2 - smol-toml: 1.3.4 + picomatch: 4.0.3 + smol-toml: 1.4.2 strip-json-comments: 5.0.2 typescript: 5.9.2 zod: 3.25.72 @@ -8481,7 +8513,7 @@ snapshots: nwsapi@2.2.18: {} - nx@21.4.0: + nx@21.4.1: dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -8519,16 +8551,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 21.4.0 - '@nx/nx-darwin-x64': 21.4.0 - '@nx/nx-freebsd-x64': 21.4.0 - '@nx/nx-linux-arm-gnueabihf': 21.4.0 - '@nx/nx-linux-arm64-gnu': 21.4.0 - '@nx/nx-linux-arm64-musl': 21.4.0 - '@nx/nx-linux-x64-gnu': 21.4.0 - '@nx/nx-linux-x64-musl': 21.4.0 - '@nx/nx-win32-arm64-msvc': 21.4.0 - '@nx/nx-win32-x64-msvc': 21.4.0 + '@nx/nx-darwin-arm64': 21.4.1 + '@nx/nx-darwin-x64': 21.4.1 + '@nx/nx-freebsd-x64': 21.4.1 + '@nx/nx-linux-arm-gnueabihf': 21.4.1 + '@nx/nx-linux-arm64-gnu': 21.4.1 + '@nx/nx-linux-arm64-musl': 21.4.1 + '@nx/nx-linux-x64-gnu': 21.4.1 + '@nx/nx-linux-x64-musl': 21.4.1 + '@nx/nx-win32-arm64-msvc': 21.4.1 + '@nx/nx-win32-x64-msvc': 21.4.1 transitivePeerDependencies: - debug @@ -8568,21 +8600,29 @@ snapshots: outdent@0.5.0: {} - oxc-resolver@11.1.0: + oxc-resolver@11.7.1: + dependencies: + napi-postinstall: 0.3.2 optionalDependencies: - '@oxc-resolver/binding-darwin-arm64': 11.1.0 - '@oxc-resolver/binding-darwin-x64': 11.1.0 - '@oxc-resolver/binding-freebsd-x64': 11.1.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.1.0 - '@oxc-resolver/binding-linux-arm64-gnu': 11.1.0 - '@oxc-resolver/binding-linux-arm64-musl': 11.1.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.1.0 - '@oxc-resolver/binding-linux-s390x-gnu': 11.1.0 - '@oxc-resolver/binding-linux-x64-gnu': 11.1.0 - '@oxc-resolver/binding-linux-x64-musl': 11.1.0 - '@oxc-resolver/binding-wasm32-wasi': 11.1.0 - '@oxc-resolver/binding-win32-arm64-msvc': 11.1.0 - '@oxc-resolver/binding-win32-x64-msvc': 11.1.0 + '@oxc-resolver/binding-android-arm-eabi': 11.7.1 + '@oxc-resolver/binding-android-arm64': 11.7.1 + '@oxc-resolver/binding-darwin-arm64': 11.7.1 + '@oxc-resolver/binding-darwin-x64': 11.7.1 + '@oxc-resolver/binding-freebsd-x64': 11.7.1 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.7.1 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.7.1 + '@oxc-resolver/binding-linux-arm64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-arm64-musl': 11.7.1 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-riscv64-musl': 11.7.1 + '@oxc-resolver/binding-linux-s390x-gnu': 11.7.1 + '@oxc-resolver/binding-linux-x64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-x64-musl': 11.7.1 + '@oxc-resolver/binding-wasm32-wasi': 11.7.1 + '@oxc-resolver/binding-win32-arm64-msvc': 11.7.1 + '@oxc-resolver/binding-win32-ia32-msvc': 11.7.1 + '@oxc-resolver/binding-win32-x64-msvc': 11.7.1 p-filter@2.1.0: dependencies: @@ -8661,10 +8701,6 @@ snapshots: mlly: 1.7.4 pathe: 2.0.3 - pnpm-workspace-yaml@1.0.0: - dependencies: - yaml: 2.8.0 - postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -8895,7 +8931,7 @@ snapshots: slash@3.0.0: {} - smol-toml@1.3.4: {} + smol-toml@1.4.2: {} solid-js@1.9.7: dependencies: @@ -9105,7 +9141,7 @@ snapshots: typedoc-plugin-frontmatter@1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2))): dependencies: typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.2)) - yaml: 2.7.0 + yaml: 2.8.0 typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2)): dependencies: @@ -9118,15 +9154,15 @@ snapshots: markdown-it: 14.1.0 minimatch: 9.0.5 typescript: 5.9.2 - yaml: 2.7.0 + yaml: 2.8.0 - typescript-eslint@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2): + typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.37.0(@typescript-eslint/parser@8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2))(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/parser': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.37.0(eslint@9.33.0(jiti@2.4.2))(typescript@5.9.2) - eslint: 9.33.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -9189,13 +9225,13 @@ snapshots: validate-html-nesting@1.2.2: {} - vite-node@3.2.4(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -9210,7 +9246,7 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.2.3(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-dts@4.2.3(@types/node@24.3.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@microsoft/api-extractor': 7.47.7(@types/node@24.3.0) '@rollup/pluginutils': 5.1.4(rollup@4.44.1) @@ -9223,17 +9259,17 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.2 optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.9.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-externalize-deps@0.9.0(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.7)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.7)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 @@ -9241,14 +9277,14 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.7 solid-refresh: 0.6.3(solid-js@1.9.7) - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: - '@testing-library/jest-dom': 6.7.0 + '@testing-library/jest-dom': 6.8.0 transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.7.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 @@ -9256,25 +9292,25 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.9 solid-refresh: 0.6.3(solid-js@1.9.9) - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: - '@testing-library/jest-dom': 6.7.0 + '@testing-library/jest-dom': 6.8.0 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.9.2) optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0): + vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0): dependencies: esbuild: 0.25.0 fdir: 6.5.0(picomatch@4.0.3) @@ -9285,19 +9321,19 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 - jiti: 2.4.2 + jiti: 2.5.1 tsx: 4.19.3 yaml: 2.8.0 - vitefu@1.0.6(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)): + vitefu@1.0.6(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) - vitest@3.2.4(@types/node@24.3.0)(jiti@2.4.2)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0): + vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -9315,8 +9351,8 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.3.0 @@ -9337,10 +9373,10 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.2.0(eslint@9.33.0(jiti@2.4.2)): + vue-eslint-parser@10.2.0(eslint@9.34.0(jiti@2.5.1)): dependencies: debug: 4.4.1 - eslint: 9.33.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.5.1) eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -9412,13 +9448,6 @@ snapshots: yallist@4.0.0: {} - yaml-eslint-parser@1.3.0: - dependencies: - eslint-visitor-keys: 3.4.3 - yaml: 2.7.0 - - yaml@2.7.0: {} - yaml@2.8.0: {} yargs-parser@21.1.1: {} From 2d065df6aa80f366b3f2760271c6b6d389c47cba Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Thu, 18 Sep 2025 21:45:08 -0500 Subject: [PATCH 36/44] update lock file --- pnpm-lock.yaml | 58 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ec669eb..078e9530 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -608,6 +608,31 @@ importers: specifier: ^7.1.5 version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + examples/react/useAsyncRetryer: + dependencies: + '@tanstack/react-pacer': + specifier: ^0.14.0 + version: 0.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: + specifier: ^19.1.1 + version: 19.1.1 + react-dom: + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) + devDependencies: + '@types/react': + specifier: ^19.1.12 + version: 19.1.12 + '@types/react-dom': + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.12) + '@vitejs/plugin-react': + specifier: ^5.0.2 + version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + vite: + specifier: ^7.1.3 + version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + examples/react/useAsyncThrottler: dependencies: '@tanstack/react-pacer': @@ -2788,6 +2813,10 @@ packages: resolution: {integrity: sha512-t9A1epZWk0iUmLQxuLfo0MaBVmvtrpg3E7Y9N6+8InVlqdYOHaGLRqjwZ/nbzXkScqobei2nNXtjBZmkioJuhQ==} engines: {node: '>=18'} + '@tanstack/pacer@0.13.0': + resolution: {integrity: sha512-eCV3BIn+If4YGMgRbB315CvhyggmBhV85NmBH4uAA2kop6fOJh5GAWsvgsQOqYt0EFhHcjUwQ1eIhqw9aohuOQ==} + engines: {node: '>=18'} + '@tanstack/persister@0.1.1': resolution: {integrity: sha512-XUewm2+D0K84ZSuWm1oMHfqw/flmO7IzCc+316php/XChgbMe30DStp1cF2Uc4IV0cI0G4hDq2RX3+NTxTIvWg==} engines: {node: '>=18'} @@ -2856,9 +2885,6 @@ packages: '@tanstack/store@0.7.5': resolution: {integrity: sha512-qd/OjkjaFRKqKU4Yjipaen/EOB9MyEg6Wr9fW103RBPACf1ZcKhbhcu2S5mj5IgdPib6xFIgCUti/mKVkl+fRw==} - '@tanstack/store@0.7.4': - resolution: {integrity: sha512-F1XqZQici1Aq6WigEfcxJSml92nW+85Om8ElBMokPNg5glCYVOmPkZGIQeieYFxcPiKTfwo0MTOQpUyJtwncrg==} - '@tanstack/typedoc-config@0.2.0': resolution: {integrity: sha512-1ak0ZirlLRxd3dNNOFnMoYORBeC83nK4C+OiXpE0dxsO8ZVrBqCtNCKr8SG+W9zICXcWGiFu9qYLsgNKTayOqw==} engines: {node: '>=18'} @@ -2998,10 +3024,6 @@ packages: resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.41.0': - resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -6643,7 +6665,7 @@ snapshots: '@tanstack/pacer@0.13.0': dependencies: - '@tanstack/store': 0.7.4 + '@tanstack/store': 0.7.5 '@tanstack/persister@0.1.1': {} @@ -6676,7 +6698,7 @@ snapshots: '@tanstack/react-pacer@0.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/pacer': 0.13.0 - '@tanstack/react-store': 0.7.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/react-store': 0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) @@ -6701,14 +6723,14 @@ snapshots: dependencies: '@tanstack/store': 0.7.5 react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + react-dom: 19.1.0(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/react-store@0.7.4(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': + '@tanstack/react-store@0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/store': 0.7.4 + '@tanstack/store': 0.7.5 react: 19.1.1 - react-dom: 19.1.0(react@19.1.1) + react-dom: 19.1.1(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) '@tanstack/solid-devtools@0.6.7(csstype@3.1.3)(solid-js@1.9.9)': @@ -6727,8 +6749,6 @@ snapshots: '@tanstack/store@0.7.5': {} - '@tanstack/store@0.7.4': {} - '@tanstack/typedoc-config@0.2.0(typescript@5.9.2)': dependencies: typedoc: 0.27.9(typescript@5.9.2) @@ -6867,7 +6887,6 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) '@typescript-eslint/types': 8.43.0 debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6890,6 +6909,8 @@ snapshots: eslint: 9.35.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 + transitivePeerDependencies: + - supports-color '@typescript-eslint/types@8.39.1': {} @@ -6927,11 +6948,6 @@ snapshots: '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.41.0': - dependencies: - '@typescript-eslint/types': 8.41.0 - eslint-visitor-keys: 4.2.1 - '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true From a179bb6ed633043e665a05f7f9432f8c25764df0 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Mon, 29 Sep 2025 15:30:30 -0500 Subject: [PATCH 37/44] delete --- .../react-pacer-devtools/src/devtools.tsx | 19 ------------------ .../solid-pacer-devtools/src/devtools.tsx | 20 ------------------- 2 files changed, 39 deletions(-) delete mode 100644 packages/react-pacer-devtools/src/devtools.tsx delete mode 100644 packages/solid-pacer-devtools/src/devtools.tsx diff --git a/packages/react-pacer-devtools/src/devtools.tsx b/packages/react-pacer-devtools/src/devtools.tsx deleted file mode 100644 index 6654e5df..00000000 --- a/packages/react-pacer-devtools/src/devtools.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React, { useEffect, useRef, useState } from 'react' -import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' - -interface PacerDevtoolsReactInit {} - -export const PacerDevtoolsPanel = (_props?: PacerDevtoolsReactInit) => { - const devToolRef = useRef(null) - - const [devtools] = useState(() => new PacerDevtoolsCore({})) - useEffect(() => { - if (devToolRef.current) { - devtools.mount(devToolRef.current) - } - - return () => devtools.unmount() - }, [devtools]) - - return
-} diff --git a/packages/solid-pacer-devtools/src/devtools.tsx b/packages/solid-pacer-devtools/src/devtools.tsx deleted file mode 100644 index 01266de1..00000000 --- a/packages/solid-pacer-devtools/src/devtools.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { PacerDevtoolsCore } from '@tanstack/pacer-devtools' -import { createSignal, onCleanup, onMount } from 'solid-js' - -interface PacerDevtoolsSolidInit {} - -export const PacerDevtoolsPanel = (_props?: PacerDevtoolsSolidInit) => { - let devToolRef: HTMLDivElement | undefined - const [devtools] = createSignal(new PacerDevtoolsCore({})) - onMount(() => { - if (devToolRef) { - devtools().mount(devToolRef) - - onCleanup(() => { - devtools().unmount() - }) - } - }) - - return
-} From 6daa67f7e2537440c3d63d3e8c3ae3f43010c3ba Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Tue, 30 Sep 2025 16:36:36 -0500 Subject: [PATCH 38/44] package upgrades --- examples/react/asyncBatch/package.json | 6 +- examples/react/asyncDebounce/package.json | 6 +- examples/react/asyncRateLimit/package.json | 6 +- examples/react/asyncThrottle/package.json | 6 +- examples/react/batch/package.json | 6 +- examples/react/debounce/package.json | 6 +- examples/react/queue/package.json | 8 +- examples/react/rateLimit/package.json | 6 +- .../package.json | 10 +- .../react-query-queued-prefetch/package.json | 10 +- .../package.json | 10 +- examples/react/throttle/package.json | 6 +- .../useAsyncBatchedCallback/package.json | 6 +- examples/react/useAsyncBatcher/package.json | 6 +- .../useAsyncDebouncedCallback/package.json | 6 +- examples/react/useAsyncDebouncer/package.json | 6 +- .../react/useAsyncQueuedState/package.json | 6 +- examples/react/useAsyncQueuer/package.json | 6 +- .../react/useAsyncRateLimiter/package.json | 6 +- .../package.json | 6 +- examples/react/useAsyncRetryer/package.json | 6 +- examples/react/useAsyncThrottler/package.json | 6 +- .../react/useBatchedCallback/package.json | 6 +- examples/react/useBatcher/package.json | 6 +- .../react/useDebouncedCallback/package.json | 6 +- examples/react/useDebouncedState/package.json | 6 +- examples/react/useDebouncedValue/package.json | 6 +- examples/react/useDebouncer/package.json | 6 +- examples/react/useQueuedState/package.json | 6 +- examples/react/useQueuedValue/package.json | 6 +- examples/react/useQueuer/package.json | 8 +- .../react/useQueuerWithPersister/package.json | 6 +- .../react/useRateLimitedCallback/package.json | 6 +- .../react/useRateLimitedState/package.json | 6 +- .../react/useRateLimitedValue/package.json | 6 +- examples/react/useRateLimiter/package.json | 6 +- .../useRateLimiterWithPersister/package.json | 6 +- .../react/useThrottledCallback/package.json | 6 +- examples/react/useThrottledState/package.json | 6 +- examples/react/useThrottledValue/package.json | 6 +- examples/react/useThrottler/package.json | 6 +- examples/react/util-comparison/package.json | 8 +- examples/solid/asyncBatch/package.json | 2 +- examples/solid/asyncDebounce/package.json | 2 +- examples/solid/asyncRateLimit/package.json | 2 +- examples/solid/asyncThrottle/package.json | 2 +- examples/solid/batch/package.json | 2 +- .../solid/createAsyncBatcher/package.json | 2 +- .../solid/createAsyncDebouncer/package.json | 2 +- examples/solid/createAsyncQueuer/package.json | 2 +- .../solid/createAsyncRateLimiter/package.json | 2 +- .../solid/createAsyncThrottler/package.json | 2 +- examples/solid/createBatcher/package.json | 2 +- .../solid/createDebouncedSignal/package.json | 2 +- .../solid/createDebouncedValue/package.json | 2 +- examples/solid/createDebouncer/package.json | 2 +- examples/solid/createQueuer/package.json | 4 +- .../createRateLimitedSignal/package.json | 2 +- .../solid/createRateLimitedValue/package.json | 2 +- examples/solid/createRateLimiter/package.json | 2 +- .../solid/createThrottledSignal/package.json | 2 +- .../solid/createThrottledValue/package.json | 2 +- examples/solid/createThrottler/package.json | 2 +- examples/solid/debounce/package.json | 2 +- examples/solid/queue/package.json | 4 +- examples/solid/rateLimit/package.json | 2 +- examples/solid/throttle/package.json | 2 +- package.json | 18 +- packages/pacer-devtools/package.json | 4 +- packages/pacer/package.json | 4 +- packages/react-pacer-devtools/package.json | 4 +- packages/react-pacer/package.json | 8 +- packages/solid-pacer/package.json | 2 +- pnpm-lock.yaml | 2447 +++++++++-------- 74 files changed, 1410 insertions(+), 1401 deletions(-) diff --git a/examples/react/asyncBatch/package.json b/examples/react/asyncBatch/package.json index 877a2302..a07c2507 100644 --- a/examples/react/asyncBatch/package.json +++ b/examples/react/asyncBatch/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/asyncDebounce/package.json b/examples/react/asyncDebounce/package.json index a2cdf372..08ca7289 100644 --- a/examples/react/asyncDebounce/package.json +++ b/examples/react/asyncDebounce/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/asyncRateLimit/package.json b/examples/react/asyncRateLimit/package.json index 1e70e216..278991aa 100644 --- a/examples/react/asyncRateLimit/package.json +++ b/examples/react/asyncRateLimit/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/asyncThrottle/package.json b/examples/react/asyncThrottle/package.json index 5bb32f28..6d5e18e5 100644 --- a/examples/react/asyncThrottle/package.json +++ b/examples/react/asyncThrottle/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/batch/package.json b/examples/react/batch/package.json index 77706f95..93e2c63b 100644 --- a/examples/react/batch/package.json +++ b/examples/react/batch/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/debounce/package.json b/examples/react/debounce/package.json index 3e79c101..f3a99863 100644 --- a/examples/react/debounce/package.json +++ b/examples/react/debounce/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index 4610cc80..77f37f69 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -14,12 +14,12 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-devtools": "0.6.7", + "@tanstack/react-devtools": "0.7.0", "@tanstack/react-pacer-devtools": "0.3.0", - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/rateLimit/package.json b/examples/react/rateLimit/package.json index 5935e439..3157ee2c 100644 --- a/examples/react/rateLimit/package.json +++ b/examples/react/rateLimit/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/react-query-debounced-prefetch/package.json b/examples/react/react-query-debounced-prefetch/package.json index ea36aeec..4e8c31a8 100644 --- a/examples/react/react-query-debounced-prefetch/package.json +++ b/examples/react/react-query-debounced-prefetch/package.json @@ -10,16 +10,16 @@ }, "dependencies": { "@tanstack/react-pacer": "^0.16.3", - "@tanstack/react-query": "^5.87.4", - "@tanstack/react-query-devtools": "^5.87.4", + "@tanstack/react-query": "^5.90.2", + "@tanstack/react-query-devtools": "^5.90.2", "react": "^19.1.1", "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/react-query-queued-prefetch/package.json b/examples/react/react-query-queued-prefetch/package.json index cb41987c..78d7cfa8 100644 --- a/examples/react/react-query-queued-prefetch/package.json +++ b/examples/react/react-query-queued-prefetch/package.json @@ -10,16 +10,16 @@ }, "dependencies": { "@tanstack/react-pacer": "^0.16.3", - "@tanstack/react-query": "^5.87.4", - "@tanstack/react-query-devtools": "^5.87.4", + "@tanstack/react-query": "^5.90.2", + "@tanstack/react-query-devtools": "^5.90.2", "react": "^19.1.1", "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/react-query-throttled-prefetch/package.json b/examples/react/react-query-throttled-prefetch/package.json index 40919dfe..16cd5035 100644 --- a/examples/react/react-query-throttled-prefetch/package.json +++ b/examples/react/react-query-throttled-prefetch/package.json @@ -10,16 +10,16 @@ }, "dependencies": { "@tanstack/react-pacer": "^0.16.3", - "@tanstack/react-query": "^5.87.4", - "@tanstack/react-query-devtools": "^5.87.4", + "@tanstack/react-query": "^5.90.2", + "@tanstack/react-query-devtools": "^5.90.2", "react": "^19.1.1", "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/throttle/package.json b/examples/react/throttle/package.json index c5742bbc..17b67b7c 100644 --- a/examples/react/throttle/package.json +++ b/examples/react/throttle/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncBatchedCallback/package.json b/examples/react/useAsyncBatchedCallback/package.json index cfc6cbbd..ce585583 100644 --- a/examples/react/useAsyncBatchedCallback/package.json +++ b/examples/react/useAsyncBatchedCallback/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncBatcher/package.json b/examples/react/useAsyncBatcher/package.json index f15fff26..0010d330 100644 --- a/examples/react/useAsyncBatcher/package.json +++ b/examples/react/useAsyncBatcher/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncDebouncedCallback/package.json b/examples/react/useAsyncDebouncedCallback/package.json index 71156115..f8a505ea 100644 --- a/examples/react/useAsyncDebouncedCallback/package.json +++ b/examples/react/useAsyncDebouncedCallback/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncDebouncer/package.json b/examples/react/useAsyncDebouncer/package.json index 1595e349..744e44c7 100644 --- a/examples/react/useAsyncDebouncer/package.json +++ b/examples/react/useAsyncDebouncer/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncQueuedState/package.json b/examples/react/useAsyncQueuedState/package.json index 03e90f08..05f012b6 100644 --- a/examples/react/useAsyncQueuedState/package.json +++ b/examples/react/useAsyncQueuedState/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncQueuer/package.json b/examples/react/useAsyncQueuer/package.json index 49f25b1c..110b2494 100644 --- a/examples/react/useAsyncQueuer/package.json +++ b/examples/react/useAsyncQueuer/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncRateLimiter/package.json b/examples/react/useAsyncRateLimiter/package.json index 99db56b3..a15e7505 100644 --- a/examples/react/useAsyncRateLimiter/package.json +++ b/examples/react/useAsyncRateLimiter/package.json @@ -15,10 +15,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncRateLimiterWithPersister/package.json b/examples/react/useAsyncRateLimiterWithPersister/package.json index 7d1d7523..0da4fa46 100644 --- a/examples/react/useAsyncRateLimiterWithPersister/package.json +++ b/examples/react/useAsyncRateLimiterWithPersister/package.json @@ -15,10 +15,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncRetryer/package.json b/examples/react/useAsyncRetryer/package.json index ecf59fbb..f99314ad 100644 --- a/examples/react/useAsyncRetryer/package.json +++ b/examples/react/useAsyncRetryer/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.3" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useAsyncThrottler/package.json b/examples/react/useAsyncThrottler/package.json index 9d15cab6..9a70bcaa 100644 --- a/examples/react/useAsyncThrottler/package.json +++ b/examples/react/useAsyncThrottler/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useBatchedCallback/package.json b/examples/react/useBatchedCallback/package.json index a103b0df..8bbd825e 100644 --- a/examples/react/useBatchedCallback/package.json +++ b/examples/react/useBatchedCallback/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useBatcher/package.json b/examples/react/useBatcher/package.json index 9f365adb..1f733f93 100644 --- a/examples/react/useBatcher/package.json +++ b/examples/react/useBatcher/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useDebouncedCallback/package.json b/examples/react/useDebouncedCallback/package.json index d583ed90..6b144cd4 100644 --- a/examples/react/useDebouncedCallback/package.json +++ b/examples/react/useDebouncedCallback/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useDebouncedState/package.json b/examples/react/useDebouncedState/package.json index ab64bf45..f797b005 100644 --- a/examples/react/useDebouncedState/package.json +++ b/examples/react/useDebouncedState/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useDebouncedValue/package.json b/examples/react/useDebouncedValue/package.json index 5251cb6b..56ec0d8e 100644 --- a/examples/react/useDebouncedValue/package.json +++ b/examples/react/useDebouncedValue/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useDebouncer/package.json b/examples/react/useDebouncer/package.json index cd0a7336..fef91d47 100644 --- a/examples/react/useDebouncer/package.json +++ b/examples/react/useDebouncer/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useQueuedState/package.json b/examples/react/useQueuedState/package.json index 557468d7..958b7d19 100644 --- a/examples/react/useQueuedState/package.json +++ b/examples/react/useQueuedState/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useQueuedValue/package.json b/examples/react/useQueuedValue/package.json index 4990ee15..d910f40f 100644 --- a/examples/react/useQueuedValue/package.json +++ b/examples/react/useQueuedValue/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useQueuer/package.json b/examples/react/useQueuer/package.json index 51d48e6d..7ef5ca55 100644 --- a/examples/react/useQueuer/package.json +++ b/examples/react/useQueuer/package.json @@ -15,12 +15,12 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-devtools": "0.6.7", + "@tanstack/react-devtools": "0.7.0", "@tanstack/react-pacer-devtools": "0.3.0", - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useQueuerWithPersister/package.json b/examples/react/useQueuerWithPersister/package.json index c18c7117..f8a5f070 100644 --- a/examples/react/useQueuerWithPersister/package.json +++ b/examples/react/useQueuerWithPersister/package.json @@ -15,10 +15,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useRateLimitedCallback/package.json b/examples/react/useRateLimitedCallback/package.json index aa7eead2..5fb192da 100644 --- a/examples/react/useRateLimitedCallback/package.json +++ b/examples/react/useRateLimitedCallback/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useRateLimitedState/package.json b/examples/react/useRateLimitedState/package.json index be93b3ab..67838db0 100644 --- a/examples/react/useRateLimitedState/package.json +++ b/examples/react/useRateLimitedState/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useRateLimitedValue/package.json b/examples/react/useRateLimitedValue/package.json index 3771b9ec..6e0e82c3 100644 --- a/examples/react/useRateLimitedValue/package.json +++ b/examples/react/useRateLimitedValue/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useRateLimiter/package.json b/examples/react/useRateLimiter/package.json index d2900eb4..2f25ca50 100644 --- a/examples/react/useRateLimiter/package.json +++ b/examples/react/useRateLimiter/package.json @@ -15,10 +15,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useRateLimiterWithPersister/package.json b/examples/react/useRateLimiterWithPersister/package.json index b41c23de..f4cce41f 100644 --- a/examples/react/useRateLimiterWithPersister/package.json +++ b/examples/react/useRateLimiterWithPersister/package.json @@ -15,10 +15,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useThrottledCallback/package.json b/examples/react/useThrottledCallback/package.json index ad0fbe16..d9b65fdb 100644 --- a/examples/react/useThrottledCallback/package.json +++ b/examples/react/useThrottledCallback/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useThrottledState/package.json b/examples/react/useThrottledState/package.json index 74221765..dfabb4f0 100644 --- a/examples/react/useThrottledState/package.json +++ b/examples/react/useThrottledState/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useThrottledValue/package.json b/examples/react/useThrottledValue/package.json index 59884fce..29cf9f86 100644 --- a/examples/react/useThrottledValue/package.json +++ b/examples/react/useThrottledValue/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/useThrottler/package.json b/examples/react/useThrottler/package.json index e2e9ac88..be7e81fd 100644 --- a/examples/react/useThrottler/package.json +++ b/examples/react/useThrottler/package.json @@ -14,10 +14,10 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/react/util-comparison/package.json b/examples/react/util-comparison/package.json index 0a6907f5..c12d3ce5 100644 --- a/examples/react/util-comparison/package.json +++ b/examples/react/util-comparison/package.json @@ -14,12 +14,12 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@tanstack/react-devtools": "0.6.7", + "@tanstack/react-devtools": "0.7.0", "@tanstack/react-pacer-devtools": "0.3.0", - "@types/react": "^19.1.12", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", - "@vitejs/plugin-react": "^5.0.2", - "vite": "^7.1.5" + "@vitejs/plugin-react": "^5.0.4", + "vite": "^7.1.7" }, "browserslist": { "production": [ diff --git a/examples/solid/asyncBatch/package.json b/examples/solid/asyncBatch/package.json index edf68d8e..bfc42159 100644 --- a/examples/solid/asyncBatch/package.json +++ b/examples/solid/asyncBatch/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/asyncDebounce/package.json b/examples/solid/asyncDebounce/package.json index 41a685dd..82785f33 100644 --- a/examples/solid/asyncDebounce/package.json +++ b/examples/solid/asyncDebounce/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/asyncRateLimit/package.json b/examples/solid/asyncRateLimit/package.json index b0a42da8..9971ac96 100644 --- a/examples/solid/asyncRateLimit/package.json +++ b/examples/solid/asyncRateLimit/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/asyncThrottle/package.json b/examples/solid/asyncThrottle/package.json index 1489b6d1..693dc9de 100644 --- a/examples/solid/asyncThrottle/package.json +++ b/examples/solid/asyncThrottle/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/batch/package.json b/examples/solid/batch/package.json index a7df42f3..e94d3714 100644 --- a/examples/solid/batch/package.json +++ b/examples/solid/batch/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createAsyncBatcher/package.json b/examples/solid/createAsyncBatcher/package.json index b3a2f960..43e2bf1a 100644 --- a/examples/solid/createAsyncBatcher/package.json +++ b/examples/solid/createAsyncBatcher/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createAsyncDebouncer/package.json b/examples/solid/createAsyncDebouncer/package.json index 964740fa..3199218f 100644 --- a/examples/solid/createAsyncDebouncer/package.json +++ b/examples/solid/createAsyncDebouncer/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createAsyncQueuer/package.json b/examples/solid/createAsyncQueuer/package.json index 4bfe0c40..3e24ef32 100644 --- a/examples/solid/createAsyncQueuer/package.json +++ b/examples/solid/createAsyncQueuer/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createAsyncRateLimiter/package.json b/examples/solid/createAsyncRateLimiter/package.json index ceb13fd5..51e0fd66 100644 --- a/examples/solid/createAsyncRateLimiter/package.json +++ b/examples/solid/createAsyncRateLimiter/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createAsyncThrottler/package.json b/examples/solid/createAsyncThrottler/package.json index 424ed013..bb1585a4 100644 --- a/examples/solid/createAsyncThrottler/package.json +++ b/examples/solid/createAsyncThrottler/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createBatcher/package.json b/examples/solid/createBatcher/package.json index 8694ce3b..64b726a3 100644 --- a/examples/solid/createBatcher/package.json +++ b/examples/solid/createBatcher/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createDebouncedSignal/package.json b/examples/solid/createDebouncedSignal/package.json index 44a39669..93bc24d2 100644 --- a/examples/solid/createDebouncedSignal/package.json +++ b/examples/solid/createDebouncedSignal/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createDebouncedValue/package.json b/examples/solid/createDebouncedValue/package.json index 248ff2d3..1f1bc033 100644 --- a/examples/solid/createDebouncedValue/package.json +++ b/examples/solid/createDebouncedValue/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createDebouncer/package.json b/examples/solid/createDebouncer/package.json index 77b8d54b..bb0a110a 100644 --- a/examples/solid/createDebouncer/package.json +++ b/examples/solid/createDebouncer/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createQueuer/package.json b/examples/solid/createQueuer/package.json index c20077da..5daea36d 100644 --- a/examples/solid/createQueuer/package.json +++ b/examples/solid/createQueuer/package.json @@ -9,13 +9,13 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.6.7", + "@tanstack/solid-devtools": "0.7.0", "@tanstack/solid-pacer": "^0.14.3", "@tanstack/solid-pacer-devtools": "0.3.0", "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createRateLimitedSignal/package.json b/examples/solid/createRateLimitedSignal/package.json index 93cafee7..79f5f507 100644 --- a/examples/solid/createRateLimitedSignal/package.json +++ b/examples/solid/createRateLimitedSignal/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createRateLimitedValue/package.json b/examples/solid/createRateLimitedValue/package.json index c532df1b..ea3db0fe 100644 --- a/examples/solid/createRateLimitedValue/package.json +++ b/examples/solid/createRateLimitedValue/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createRateLimiter/package.json b/examples/solid/createRateLimiter/package.json index ef649d6e..45fea341 100644 --- a/examples/solid/createRateLimiter/package.json +++ b/examples/solid/createRateLimiter/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createThrottledSignal/package.json b/examples/solid/createThrottledSignal/package.json index aa550bad..6c6ad9cf 100644 --- a/examples/solid/createThrottledSignal/package.json +++ b/examples/solid/createThrottledSignal/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createThrottledValue/package.json b/examples/solid/createThrottledValue/package.json index 712ba8e8..101f5f93 100644 --- a/examples/solid/createThrottledValue/package.json +++ b/examples/solid/createThrottledValue/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/createThrottler/package.json b/examples/solid/createThrottler/package.json index aa015d0f..4cb502a0 100644 --- a/examples/solid/createThrottler/package.json +++ b/examples/solid/createThrottler/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/debounce/package.json b/examples/solid/debounce/package.json index ab26d3b9..62ef735d 100644 --- a/examples/solid/debounce/package.json +++ b/examples/solid/debounce/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/queue/package.json b/examples/solid/queue/package.json index e7fa8d39..b97b8b28 100644 --- a/examples/solid/queue/package.json +++ b/examples/solid/queue/package.json @@ -9,13 +9,13 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.6.7", + "@tanstack/solid-devtools": "0.7.0", "@tanstack/solid-pacer": "^0.14.3", "@tanstack/solid-pacer-devtools": "0.3.0", "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/rateLimit/package.json b/examples/solid/rateLimit/package.json index 3fc32f5b..9f187bd3 100644 --- a/examples/solid/rateLimit/package.json +++ b/examples/solid/rateLimit/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/examples/solid/throttle/package.json b/examples/solid/throttle/package.json index c0ce2a81..4e1ca067 100644 --- a/examples/solid/throttle/package.json +++ b/examples/solid/throttle/package.json @@ -13,7 +13,7 @@ "solid-js": "^1.9.9" }, "devDependencies": { - "vite": "^7.1.5", + "vite": "^7.1.7", "vite-plugin-solid": "^2.11.8" }, "browserslist": { diff --git a/package.json b/package.json index dcb903d3..b8801b94 100644 --- a/package.json +++ b/package.json @@ -57,24 +57,24 @@ "@faker-js/faker": "^10.0.0", "@size-limit/preset-small-lib": "^11.2.0", "@svitejs/changesets-changelog-github-compact": "^1.2.0", - "@tanstack/config": "0.20.1", - "@testing-library/jest-dom": "^6.8.0", - "@types/node": "^24.3.1", - "eslint": "^9.35.0", + "@tanstack/config": "0.20.3", + "@testing-library/jest-dom": "^6.9.0", + "@types/node": "^24.6.0", + "eslint": "^9.36.0", "eslint-plugin-unused-imports": "^4.2.0", "fast-glob": "^3.3.3", - "jsdom": "^26.1.0", - "knip": "^5.63.1", + "jsdom": "^27.0.0", + "knip": "^5.64.1", "markdown-link-extractor": "^4.0.2", - "nx": "^21.5.2", + "nx": "^21.6.2", "premove": "^4.0.0", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", - "publint": "^0.3.12", + "publint": "^0.3.13", "sherif": "^1.6.1", "size-limit": "^11.2.0", "typescript": "5.9.2", - "vite": "^7.1.5", + "vite": "^7.1.7", "vitest": "^3.2.4" }, "overrides": { diff --git a/packages/pacer-devtools/package.json b/packages/pacer-devtools/package.json index 2e56be84..40edb8b6 100644 --- a/packages/pacer-devtools/package.json +++ b/packages/pacer-devtools/package.json @@ -62,8 +62,8 @@ "@tanstack/pacer": ">=0.15.0" }, "dependencies": { - "@tanstack/devtools-ui": "^0.3.4", - "@tanstack/solid-store": "^0.7.5", + "@tanstack/devtools-ui": "^0.3.5", + "@tanstack/solid-store": "^0.7.7", "clsx": "^2.1.1", "dayjs": "^1.11.18", "goober": "^2.1.16", diff --git a/packages/pacer/package.json b/packages/pacer/package.json index 52861bfb..86d83924 100644 --- a/packages/pacer/package.json +++ b/packages/pacer/package.json @@ -191,7 +191,7 @@ "build": "vite build" }, "dependencies": { - "@tanstack/devtools-event-client": "^0.2.5", - "@tanstack/store": "^0.7.5" + "@tanstack/devtools-event-client": "^0.3.2", + "@tanstack/store": "^0.7.7" } } diff --git a/packages/react-pacer-devtools/package.json b/packages/react-pacer-devtools/package.json index eda3994d..6cce5e8b 100644 --- a/packages/react-pacer-devtools/package.json +++ b/packages/react-pacer-devtools/package.json @@ -68,8 +68,8 @@ "@tanstack/pacer-devtools": "workspace:*" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.53.1", - "@vitejs/plugin-react": "^5.0.2", + "@eslint-react/eslint-plugin": "^2.0.3", + "@vitejs/plugin-react": "^5.0.4", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0" } diff --git a/packages/react-pacer/package.json b/packages/react-pacer/package.json index 6e1bee51..ca30a9c2 100644 --- a/packages/react-pacer/package.json +++ b/packages/react-pacer/package.json @@ -192,12 +192,12 @@ }, "dependencies": { "@tanstack/pacer": "workspace:*", - "@tanstack/react-store": "^0.7.5" + "@tanstack/react-store": "^0.7.7" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.53.1", - "@types/react": "^19.1.12", - "@vitejs/plugin-react": "^5.0.2", + "@eslint-react/eslint-plugin": "^2.0.3", + "@types/react": "^19.1.16", + "@vitejs/plugin-react": "^5.0.4", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", "react": "^19.1.1" diff --git a/packages/solid-pacer/package.json b/packages/solid-pacer/package.json index 89f87605..b08c38de 100644 --- a/packages/solid-pacer/package.json +++ b/packages/solid-pacer/package.json @@ -172,7 +172,7 @@ }, "dependencies": { "@tanstack/pacer": "workspace:*", - "@tanstack/solid-store": "^0.7.5" + "@tanstack/solid-store": "^0.7.7" }, "devDependencies": { "solid-js": "^1.9.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 078e9530..4cd6f30f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@changesets/cli': specifier: ^2.29.7 - version: 2.29.7(@types/node@24.3.1) + version: 2.29.7(@types/node@24.6.0) '@faker-js/faker': specifier: ^10.0.0 version: 10.0.0 @@ -21,35 +21,35 @@ importers: specifier: ^1.2.0 version: 1.2.0 '@tanstack/config': - specifier: 0.20.1 - version: 0.20.1(@types/node@24.3.1)(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: 0.20.3 + version: 0.20.3(@types/node@24.6.0)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) '@testing-library/jest-dom': - specifier: ^6.8.0 - version: 6.8.0 + specifier: ^6.9.0 + version: 6.9.0 '@types/node': - specifier: ^24.3.1 - version: 24.3.1 + specifier: ^24.6.0 + version: 24.6.0 eslint: - specifier: ^9.35.0 - version: 9.35.0(jiti@2.5.1) + specifier: ^9.36.0 + version: 9.36.0(jiti@2.6.0) eslint-plugin-unused-imports: specifier: ^4.2.0 - version: 4.2.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1)) + version: 4.2.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) fast-glob: specifier: ^3.3.3 version: 3.3.3 jsdom: - specifier: ^26.1.0 - version: 26.1.0 + specifier: ^27.0.0 + version: 27.0.0(postcss@8.5.6) knip: - specifier: ^5.63.1 - version: 5.63.1(@types/node@24.3.1)(typescript@5.9.2) + specifier: ^5.64.1 + version: 5.64.1(@types/node@24.6.0)(typescript@5.9.2) markdown-link-extractor: specifier: ^4.0.2 version: 4.0.2 nx: - specifier: ^21.5.2 - version: 21.5.2 + specifier: ^21.6.2 + version: 21.6.2 premove: specifier: ^4.0.0 version: 4.0.0 @@ -60,8 +60,8 @@ importers: specifier: ^3.4.0 version: 3.4.0(prettier@3.6.2)(svelte@5.22.6) publint: - specifier: ^0.3.12 - version: 0.3.12 + specifier: ^0.3.13 + version: 0.3.13 sherif: specifier: ^1.6.1 version: 1.6.1 @@ -72,11 +72,11 @@ importers: specifier: 5.9.2 version: 5.9.2 vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.3.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0) + version: 3.2.4(@types/node@24.6.0)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncBatch: dependencies: @@ -91,17 +91,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncDebounce: dependencies: @@ -116,17 +116,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncRateLimit: dependencies: @@ -141,17 +141,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncThrottle: dependencies: @@ -166,17 +166,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/batch: dependencies: @@ -191,17 +191,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/debounce: dependencies: @@ -216,17 +216,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/queue: dependencies: @@ -241,23 +241,23 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@tanstack/react-devtools': - specifier: 0.6.7 - version: 0.6.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + specifier: 0.7.0 + version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.3.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/rateLimit: dependencies: @@ -272,17 +272,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-debounced-prefetch: dependencies: @@ -290,11 +290,11 @@ importers: specifier: ^0.16.3 version: link:../../../packages/react-pacer '@tanstack/react-query': - specifier: ^5.87.4 - version: 5.87.4(react@19.1.1) + specifier: ^5.90.2 + version: 5.90.2(react@19.1.1) '@tanstack/react-query-devtools': - specifier: ^5.87.4 - version: 5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1) + specifier: ^5.90.2 + version: 5.90.2(@tanstack/react-query@5.90.2(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -303,17 +303,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-queued-prefetch: dependencies: @@ -321,11 +321,11 @@ importers: specifier: ^0.16.3 version: link:../../../packages/react-pacer '@tanstack/react-query': - specifier: ^5.87.4 - version: 5.87.4(react@19.1.1) + specifier: ^5.90.2 + version: 5.90.2(react@19.1.1) '@tanstack/react-query-devtools': - specifier: ^5.87.4 - version: 5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1) + specifier: ^5.90.2 + version: 5.90.2(@tanstack/react-query@5.90.2(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -334,17 +334,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-throttled-prefetch: dependencies: @@ -352,11 +352,11 @@ importers: specifier: ^0.16.3 version: link:../../../packages/react-pacer '@tanstack/react-query': - specifier: ^5.87.4 - version: 5.87.4(react@19.1.1) + specifier: ^5.90.2 + version: 5.90.2(react@19.1.1) '@tanstack/react-query-devtools': - specifier: ^5.87.4 - version: 5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1) + specifier: ^5.90.2 + version: 5.90.2(@tanstack/react-query@5.90.2(react@19.1.1))(react@19.1.1) react: specifier: ^19.1.1 version: 19.1.1 @@ -365,17 +365,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/throttle: dependencies: @@ -390,17 +390,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatchedCallback: dependencies: @@ -415,17 +415,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatcher: dependencies: @@ -440,17 +440,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncedCallback: dependencies: @@ -465,17 +465,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncer: dependencies: @@ -490,17 +490,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuedState: dependencies: @@ -515,17 +515,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuer: dependencies: @@ -540,17 +540,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiter: dependencies: @@ -568,17 +568,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiterWithPersister: dependencies: @@ -596,17 +596,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRetryer: dependencies: @@ -621,17 +621,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.3 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncThrottler: dependencies: @@ -646,17 +646,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatchedCallback: dependencies: @@ -671,17 +671,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatcher: dependencies: @@ -696,17 +696,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedCallback: dependencies: @@ -721,17 +721,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedState: dependencies: @@ -746,17 +746,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedValue: dependencies: @@ -771,17 +771,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncer: dependencies: @@ -796,17 +796,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedState: dependencies: @@ -821,17 +821,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedValue: dependencies: @@ -846,17 +846,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuer: dependencies: @@ -874,23 +874,23 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@tanstack/react-devtools': - specifier: 0.6.7 - version: 0.6.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + specifier: 0.7.0 + version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.3.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuerWithPersister: dependencies: @@ -908,17 +908,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedCallback: dependencies: @@ -933,17 +933,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedState: dependencies: @@ -958,17 +958,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedValue: dependencies: @@ -983,17 +983,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiter: dependencies: @@ -1011,17 +1011,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiterWithPersister: dependencies: @@ -1039,17 +1039,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledCallback: dependencies: @@ -1064,17 +1064,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledState: dependencies: @@ -1089,17 +1089,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledValue: dependencies: @@ -1114,17 +1114,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottler: dependencies: @@ -1139,17 +1139,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/util-comparison: dependencies: @@ -1164,23 +1164,23 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@tanstack/react-devtools': - specifier: 0.6.7 - version: 0.6.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + specifier: 0.7.0 + version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.3.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/solid/asyncBatch: dependencies: @@ -1192,11 +1192,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncDebounce: dependencies: @@ -1208,11 +1208,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncRateLimit: dependencies: @@ -1224,11 +1224,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncThrottle: dependencies: @@ -1240,11 +1240,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/batch: dependencies: @@ -1256,11 +1256,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncBatcher: dependencies: @@ -1272,11 +1272,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncDebouncer: dependencies: @@ -1288,11 +1288,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncQueuer: dependencies: @@ -1304,11 +1304,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncRateLimiter: dependencies: @@ -1320,11 +1320,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncThrottler: dependencies: @@ -1336,11 +1336,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createBatcher: dependencies: @@ -1352,11 +1352,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedSignal: dependencies: @@ -1368,11 +1368,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedValue: dependencies: @@ -1384,11 +1384,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncer: dependencies: @@ -1400,17 +1400,17 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createQueuer: dependencies: '@tanstack/solid-devtools': - specifier: 0.6.7 - version: 0.6.7(csstype@3.1.3)(solid-js@1.9.9) + specifier: 0.7.0 + version: 0.7.0(csstype@3.1.3)(solid-js@1.9.9) '@tanstack/solid-pacer': specifier: ^0.14.3 version: link:../../../packages/solid-pacer @@ -1422,11 +1422,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedSignal: dependencies: @@ -1438,11 +1438,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedValue: dependencies: @@ -1454,11 +1454,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimiter: dependencies: @@ -1470,11 +1470,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledSignal: dependencies: @@ -1486,11 +1486,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledValue: dependencies: @@ -1502,11 +1502,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottler: dependencies: @@ -1518,11 +1518,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/debounce: dependencies: @@ -1534,17 +1534,17 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/queue: dependencies: '@tanstack/solid-devtools': - specifier: 0.6.7 - version: 0.6.7(csstype@3.1.3)(solid-js@1.9.9) + specifier: 0.7.0 + version: 0.7.0(csstype@3.1.3)(solid-js@1.9.9) '@tanstack/solid-pacer': specifier: ^0.14.3 version: link:../../../packages/solid-pacer @@ -1556,11 +1556,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/rateLimit: dependencies: @@ -1572,11 +1572,11 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/throttle: dependencies: @@ -1588,32 +1588,32 @@ importers: version: 1.9.9 devDependencies: vite: - specifier: ^7.1.5 - version: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/pacer: dependencies: '@tanstack/devtools-event-client': - specifier: ^0.2.5 - version: 0.2.5 + specifier: ^0.3.2 + version: 0.3.2 '@tanstack/store': - specifier: ^0.7.5 - version: 0.7.5 + specifier: ^0.7.7 + version: 0.7.7 packages/pacer-devtools: dependencies: '@tanstack/devtools-ui': - specifier: ^0.3.4 - version: 0.3.4(csstype@3.1.3)(solid-js@1.9.9) + specifier: ^0.3.5 + version: 0.3.5(csstype@3.1.3)(solid-js@1.9.9) '@tanstack/pacer': specifier: '>=0.15.0' version: link:../pacer '@tanstack/solid-store': - specifier: ^0.7.5 - version: 0.7.5(solid-js@1.9.9) + specifier: ^0.7.7 + version: 0.7.7(solid-js@1.9.9) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -1629,7 +1629,7 @@ importers: devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/react-pacer: dependencies: @@ -1637,27 +1637,27 @@ importers: specifier: workspace:* version: link:../pacer '@tanstack/react-store': - specifier: ^0.7.5 - version: 0.7.5(react-dom@19.1.0(react@19.1.1))(react@19.1.1) + specifier: ^0.7.7 + version: 0.7.7(react-dom@19.1.0(react@19.1.1))(react@19.1.1) react-dom: specifier: '>=16.8' version: 19.1.0(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.53.1 - version: 1.53.1(eslint@9.35.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + specifier: ^2.0.3 + version: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@types/react': - specifier: ^19.1.12 - version: 19.1.12 + specifier: ^19.1.16 + version: 19.1.16 '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.35.0(jiti@2.5.1)) + version: 19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.35.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.36.0(jiti@2.6.0)) react: specifier: ^19.1.1 version: 19.1.1 @@ -1681,17 +1681,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.53.1 - version: 1.53.1(eslint@9.35.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + specifier: ^2.0.3 + version: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@vitejs/plugin-react': - specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 - version: 19.1.0-rc.2(eslint@9.35.0(jiti@2.5.1)) + version: 19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.35.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.36.0(jiti@2.6.0)) packages/solid-pacer: dependencies: @@ -1699,15 +1699,15 @@ importers: specifier: workspace:* version: link:../pacer '@tanstack/solid-store': - specifier: ^0.7.5 - version: 0.7.5(solid-js@1.9.9) + specifier: ^0.7.7 + version: 0.7.7(solid-js@1.9.9) devDependencies: solid-js: specifier: ^1.9.9 version: 1.9.9 vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/solid-pacer-devtools: dependencies: @@ -1720,7 +1720,7 @@ importers: devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.7)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages: @@ -1731,8 +1731,14 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@2.8.3': - resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} + '@asamuzakjp/css-color@4.0.5': + resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} + + '@asamuzakjp/dom-selector@6.5.6': + resolution: {integrity: sha512-Mj3Hu9ymlsERd7WOsUKNUZnJYL4IZ/I9wVVYgtvOsWYiEFbkQ4G7VRIh2USxTVW4BBDIsLG+gBUgqOqf2Kvqow==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} @@ -1758,8 +1764,8 @@ packages: resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.3': - resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} '@babel/generator@7.26.9': @@ -1888,8 +1894,8 @@ packages: resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.3': - resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} '@babel/parser@7.27.0': @@ -1907,6 +1913,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-proposal-private-methods@7.18.6': resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} @@ -1960,8 +1971,8 @@ packages: resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.3': - resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} '@babel/types@7.26.9': @@ -1980,6 +1991,10 @@ packages: resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + '@changesets/apply-release-plan@7.0.13': resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} @@ -2046,49 +2061,46 @@ packages: resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} engines: {node: '>=v18'} - '@csstools/color-helpers@5.0.2': - resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.2': - resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.8': - resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-syntax-patches-for-csstree@1.0.14': + resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 - '@emnapi/core@1.4.3': - resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} '@emnapi/core@1.5.0': resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/wasi-threads@1.0.2': - resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} - '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -2242,12 +2254,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2258,39 +2264,36 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.53.1': - resolution: {integrity: sha512-qvUC99ewtriJp9quVEOvZ6+RHcsMLfVQ0OhZ4/LupZUDhjW7GiX1dxJsFaxHdJ9rLNLhQyLSPmbAToeqUrSruQ==} - engines: {node: '>=18.18.0'} + '@eslint-react/ast@2.0.4': + resolution: {integrity: sha512-n05swQRVYbeAi0kLXrnrxHmfacptOOlZzpCKSt8L2fobVx+xgMc0w+trRnyrlwcjGnf3IC1ZYT8h/AuqE4OJdw==} + engines: {node: '>=20.19.0'} - '@eslint-react/core@1.53.1': - resolution: {integrity: sha512-8prroos5/Uvvh8Tjl1HHCpq4HWD3hV9tYkm7uXgKA6kqj0jHlgRcQzuO6ZPP7feBcK3uOeug7xrq03BuG8QKCA==} - engines: {node: '>=18.18.0'} + '@eslint-react/core@2.0.4': + resolution: {integrity: sha512-TJDvUdID0fUhXrOlgK992WhEV2qOvmYdjE+bPLVLPFU2eVk0li0L+G9w+KWKDzUdIS2OVjIxmDWdg98eqJOyfQ==} + engines: {node: '>=20.19.0'} - '@eslint-react/eff@1.53.1': - resolution: {integrity: sha512-uq20lPRAmsWRjIZm+mAV/2kZsU2nDqn5IJslxGWe3Vfdw23hoyhEw3S1KKlxbftwbTvsZjKvVP0iw3bZo/NUpg==} - engines: {node: '>=18.18.0'} + '@eslint-react/eff@2.0.4': + resolution: {integrity: sha512-5+cEbTkpjP+sEszzOEF4lW176uSaez7S0t1jqXBQ0RortHVrm9OGPY9zx2ehNozYa2hqvztQa6mgmRMZGeC8xg==} + engines: {node: '>=20.19.0'} - '@eslint-react/eslint-plugin@1.53.1': - resolution: {integrity: sha512-JZ2ciXNCC9CtBBAqYtwWH+Jy/7ZzLw+whei8atP4Fxsbh+Scs30MfEwBzuiEbNw6uF9eZFfPidchpr5RaEhqxg==} - engines: {node: '>=18.18.0'} + '@eslint-react/eslint-plugin@2.0.4': + resolution: {integrity: sha512-jrYOfOW5YYJMQfekn3SctF0QD2WhVrjqrJ1yw+FBEMgL3eie7Jxkm4OerDVGP5+M6kjAaEew89ifNsMJKKNRbQ==} + engines: {node: '>=20.19.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^9.36.0 + typescript: ^5.9.2 - '@eslint-react/kit@1.53.1': - resolution: {integrity: sha512-zOi2le9V4rMrJvQV4OeedGvMGvDT46OyFPOwXKs7m0tQu5vXVJ8qwIPaVQT1n/WIuvOg49OfmAVaHpGxK++xLQ==} - engines: {node: '>=18.18.0'} + '@eslint-react/kit@2.0.4': + resolution: {integrity: sha512-v/kG7X+vfMIfquKZOtXMgfZPp6+tVds97mBpmvQvpivd5XYLM3SrR/cODa0EpvOy6mF0XO4RCkJqjAptaJKKew==} + engines: {node: '>=20.19.0'} - '@eslint-react/shared@1.53.1': - resolution: {integrity: sha512-gomJQmFqQgQVI3Ra4vTMG/s6a4bx3JqeNiTBjxBJt4C9iGaBj458GkP4LJHX7TM6xUzX+fMSKOPX7eV3C/+UCw==} - engines: {node: '>=18.18.0'} + '@eslint-react/shared@2.0.4': + resolution: {integrity: sha512-nO1pO8GBNiFyoSFfplHG/cni0INs70OoKIgZtnKkm73L99h2sxX1S+ZH+f5p2vzltDYVaiJ41xzwMuuf+57ubA==} + engines: {node: '>=20.19.0'} - '@eslint-react/var@1.53.1': - resolution: {integrity: sha512-yzwopvPntcHU7mmDvWzRo1fb8QhjD8eDRRohD11rTV1u7nWO4QbJi0pOyugQakvte1/W11Y0Vr8Of0Ojk/A6zg==} - engines: {node: '>=18.18.0'} + '@eslint-react/var@2.0.4': + resolution: {integrity: sha512-lgw3Hv8vH3dh9e7FacX+IoBdfckvg1j77Nlei4T7kYzj4ziD0wziwQ6foLfKwfdvbgHbw2pBJmkwgs0iSC6w6w==} + engines: {node: '>=20.19.0'} '@eslint/config-array@0.21.0': resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} @@ -2308,8 +2311,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.35.0': - resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} + '@eslint/js@9.36.0': + resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -2375,6 +2378,9 @@ packages: resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -2423,8 +2429,8 @@ packages: '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@napi-rs/wasm-runtime@1.0.4': - resolution: {integrity: sha512-+ZEtJPp8EF8h4kN6rLQECRor00H7jtDgBVtttIUoxuDkXLiQMaSBqju3LV/IEsMvqVG5pviUvR4jYhIA1xNm8w==} + '@napi-rs/wasm-runtime@1.0.5': + resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2488,98 +2494,98 @@ packages: cpu: [x64] os: [win32] - '@oxc-resolver/binding-android-arm-eabi@11.7.2': - resolution: {integrity: sha512-ITflrd9l5pFPXW10w1gOGJqmyeO6LTO/yiXb3st4Uqr6bcPxCdsXZXAZop3QsSeE8DjjfGXv3Ws+Fb2KmYeCrA==} + '@oxc-resolver/binding-android-arm-eabi@11.8.4': + resolution: {integrity: sha512-6BjMji0TcvQfJ4EoSunOSyu/SiyHKficBD0V3Y0NxF0beaNnnZ7GYEi2lHmRNnRCuIPK8IuVqQ6XizYau+CkKw==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.7.2': - resolution: {integrity: sha512-mjEqCGOZHBpIkjSskW0jkhhVSnaREMmXYW5oDaJKBx86kFSiufEjo8duLTwjRekQ0JlwlEtWiXA759eO4TJ7/w==} + '@oxc-resolver/binding-android-arm64@11.8.4': + resolution: {integrity: sha512-SxF4X6rzCBS9XNPXKZGoIHIABjfGmtQpEgRBDzpDHx5VTuLAUmwLTHXnVBAZoX5bmnhF79RiMElavzFdJ2cA1A==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.7.2': - resolution: {integrity: sha512-sXgElUiNredwvWshUXKL7RbBr6ovSthg3fCTQViY8/jfWKnDRKhUFZiCwABma0CWXC1X2Ij6EkZj40cufRM0bA==} + '@oxc-resolver/binding-darwin-arm64@11.8.4': + resolution: {integrity: sha512-8zWeERrzgscAniE6kh1TQ4E7GJyglYsvdoKrHYLBCbHWD+0/soffiwAYxZuckKEQSc2RXMSPjcu+JTCALaY0Dw==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.7.2': - resolution: {integrity: sha512-EOqYSn1+L5KsShn5lZ303eU9MqjxHNzA7GOHthIcVXfCPtJ+zL89wXh25F+J7mSwiDilp444+rR1hc5Lh+eEWg==} + '@oxc-resolver/binding-darwin-x64@11.8.4': + resolution: {integrity: sha512-BUwggKz8Hi5uEQ0AeVTSun1+sp4lzNcItn+L7fDsHu5Cx0Zueuo10BtVm+dIwmYVVPL5oGYOeD0fS7MKAazKiw==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.7.2': - resolution: {integrity: sha512-Dyvdj++qc5ANVN3JzqJVAlb+IMUtYLPyLaiPFW4+JfvAQFf/iYkpFQv7maeXhhR+GK3rI+PUQXP2HSIiPsClRg==} + '@oxc-resolver/binding-freebsd-x64@11.8.4': + resolution: {integrity: sha512-fPO5TQhnn8gA6yP4o49lc4Gn8KeDwAp9uYd4PlE3Q00JVqU6cY9WecDhYHrWtiFcyoZ8UVBlIxuhRqT/DP4Z4A==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.2': - resolution: {integrity: sha512-wUSx/QqggWowrAiyTSci5YUdHvRFpeBbCn2pUwT8XwDoSY2CBuMYR5qzm68ijjzmrv/XyMhl9HxBLy8/UbczWQ==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.8.4': + resolution: {integrity: sha512-QuNbdUaVGiP0W0GrXsvCDZjqeL4lZGU7aXlx/S2tCvyTk3wh6skoiLJgqUf/eeqXfUPnzTfntYqyfolzCAyBYA==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.7.2': - resolution: {integrity: sha512-6w91XhCno0OMqv+UqiuMahasl87Ae8sdSSEFBLF2ic+ySZg+BPpFO5VYUBtdSFJ6gWy7R66JudB5HUJpMbMZlA==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.8.4': + resolution: {integrity: sha512-p/zLMfza8OsC4BDKxqeZ9Qel+4eA/oiMSyKLRkMrTgt6OWQq1d5nHntjfG35Abcw4ev6Q9lRU3NOW5hj0xlUbw==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.7.2': - resolution: {integrity: sha512-S2FQ4cYK7JgmTCy0ay5UIUiRTrQdtKUSaAoC+En9yqaoZwHxcQy9HJ53k5jiAPIJnDR0NgAaOl3q11PUxd58XQ==} + '@oxc-resolver/binding-linux-arm64-gnu@11.8.4': + resolution: {integrity: sha512-bvJF9wWxF1+a5YZATlS5JojpOMC7OsnTatA6sXVHoOb7MIigjledYB5ZMAeRrnWWexRMiEX3YSaA46oSfOzmOg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-arm64-musl@11.7.2': - resolution: {integrity: sha512-4Dq8KAJZ4RNe7uSISsoP2/O7fc/rZWqxgkch/5eqa0N0gHMrHd9moGzvdV9Hi9oRSnuTmHzRQTqy02S5L3Rc/g==} + '@oxc-resolver/binding-linux-arm64-musl@11.8.4': + resolution: {integrity: sha512-gf4nwGBfu+EFwOn5p7/T7VF4jmIdfodwJS9MRkOBHvuAm3LQgCX7O6d3Y80mm0TV7ZMRD/trfW628rHfd5++vQ==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-ppc64-gnu@11.7.2': - resolution: {integrity: sha512-/w0wJkrtcjvPUNthhmhbG269ySFgxr/DQCYzhBxICKWbiafmNvJTnmYGtEZKoI+wwnukFL8TT7LWbu7hzdp7mw==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.8.4': + resolution: {integrity: sha512-T120R5GIzRd41rYWWKCI6cSYrZjmRQzf3X4xeE1WX396Uabz5DX8KU7RnVHihSK+KDxccCVOFBxcH3ITd+IEpw==} cpu: [ppc64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-gnu@11.7.2': - resolution: {integrity: sha512-sFg880S4QCzBw4yqgPDi48sAxGT1iRW6Gd+C/FW2WYXsDK7dnHgWQ8f6Rp509fHGkPAe+G2ZypjrgPhZP4Btew==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.8.4': + resolution: {integrity: sha512-PVG7SxBFFjAaQ76p9O/0Xt5mTBlziRwpck+6cRNhy/hbWY/hSt8BFfPqw0EDSfnl40Uuh+NPsHFMnaWWyxbQEg==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-musl@11.7.2': - resolution: {integrity: sha512-dypXqqwA67fVVpVUedpmHNEYn5vRe/y6zoAvDTfy7Se8QIbkeRvrp1EOL+Q8tfxMM72tdMxgOrfyvJ5SPRgy9Q==} + '@oxc-resolver/binding-linux-riscv64-musl@11.8.4': + resolution: {integrity: sha512-L0OklUhM2qLGaKvPSyKmwWpoijfc++VJtPyVgz031ShOXyo0WjD0ZGzusyJMsA1a/gdulAmN6CQ/0Sf4LGXEcw==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-s390x-gnu@11.7.2': - resolution: {integrity: sha512-aYDSyViNixd3YpUNcPvfhxAYUiBIPNXfVriTTHEz1ftNg+PglYrOZl5IAssj9uveO6pn2PpNOp/zAezeTtlwmA==} + '@oxc-resolver/binding-linux-s390x-gnu@11.8.4': + resolution: {integrity: sha512-18Ajz5hqO4cRGuoHzLFUsIPod9GIaIRDiXFg2m6CS3NgVdHx7iCZscplYH7KtjdE42M8nGWYMyyq5BOk7QVgPw==} cpu: [s390x] os: [linux] - '@oxc-resolver/binding-linux-x64-gnu@11.7.2': - resolution: {integrity: sha512-/f5rmPZYeD2/d/siP6wvGGOQsupl074qtvPfSteQnWLIM5lWuUDa/53atjYMJHRHFhfQ7b4B3l84TaO8lszAkA==} + '@oxc-resolver/binding-linux-x64-gnu@11.8.4': + resolution: {integrity: sha512-uHvH4RyYBdQ/lFGV9H+R1ScHg6EBnAhE3mnX+u+mO/btnalvg7j80okuHf8Qw0tLQiP5P1sEBoVeE6zviXY9IA==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-linux-x64-musl@11.7.2': - resolution: {integrity: sha512-5x9CGGTZfGWtemVnkNu4ZjqH4X9Oy+Ovm4wSlQTiKgpwCrSDjj0s4tITqiMif0mkWgoErxpdzfD8+hKQkOIgtw==} + '@oxc-resolver/binding-linux-x64-musl@11.8.4': + resolution: {integrity: sha512-X5z44qh5DdJfVhcqXAQFTDFUpcxdpf6DT/lHL5CFcdQGIZxatjc7gFUy05IXPI9xwfq39RValjJBvFovUk9XBw==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-wasm32-wasi@11.7.2': - resolution: {integrity: sha512-UlUxMVChYfi8nmuT9h9I7rQOfini6b40Ud4zYSeel5Qk8GvUT6eysVXAb+AUCJHMnuFCo6jgGqtXYb3yB5CWEQ==} + '@oxc-resolver/binding-wasm32-wasi@11.8.4': + resolution: {integrity: sha512-z3906y+cd8RRhBGNwHRrRAFxnKjXsBeL3+rdQjZpBrUyrhhsaV5iKD/ROx64FNJ9GjL/9mfon8A5xx/McYIqHA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.7.2': - resolution: {integrity: sha512-9S/VfFcl/Tty7TI/ijXgoh05YUzCwP1ApDZxPU8OPFoVTOqnFPQzR8ysR3i/ajQEcEaiCop0aIqXd0xt7wTxNg==} + '@oxc-resolver/binding-win32-arm64-msvc@11.8.4': + resolution: {integrity: sha512-70vXFs74uA3X5iYOkpclbkWlQEF+MI325uAQ+Or2n8HJip2T0SEmuBlyw/sRL2E8zLC4oocb+1g25fmzlDVkmg==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-ia32-msvc@11.7.2': - resolution: {integrity: sha512-6ruLagAgDx2CCYWVTJJofee4Lq9Oo9wBmKKZowNPwLgurSTGPO0zQDjPvytQ1PjJuOGisqCVLARBsMwbM20mvA==} + '@oxc-resolver/binding-win32-ia32-msvc@11.8.4': + resolution: {integrity: sha512-SEOUAzTvr+nyMia3nx1dMtD7YUxZwuhQ3QAPnxy21261Lj0yT3JY4EIfwWH54lAWWfMdRSRRMFuGeF/dq7XjEw==} cpu: [ia32] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.7.2': - resolution: {integrity: sha512-gp4xNjGkeeNPxjutTSB1AkYm7JQQof6s7wswzzAKuVZO82L1q4HcOz8QYa5PKPP+r2VHUAJAI+FO/X0pNfWn3w==} + '@oxc-resolver/binding-win32-x64-msvc@11.8.4': + resolution: {integrity: sha512-1gARIQsOPOU7LJ7jvMyPmZEVMapL/PymeG3J7naOdLZDrIZKX6CTvgawJmETYKt+8icP8M6KbBinrVkKVqFd+A==} cpu: [x64] os: [win32] @@ -2587,8 +2593,8 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} - '@rolldown/pluginutils@1.0.0-beta.34': - resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} + '@rolldown/pluginutils@1.0.0-beta.38': + resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==} '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} @@ -2770,8 +2776,8 @@ packages: peerDependencies: solid-js: ^1.6.12 - '@stylistic/eslint-plugin@5.3.1': - resolution: {integrity: sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==} + '@stylistic/eslint-plugin@5.4.0': + resolution: {integrity: sha512-UG8hdElzuBDzIbjG1QDwnYH0MQ73YLXDFHgZzB4Zh/YJfnw8XNsloVtytqzx0I2Qky9THSdpTmi8Vjn/pf/Lew==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -2785,32 +2791,32 @@ packages: resolution: {integrity: sha512-08eKiDAjj4zLug1taXSIJ0kGL5cawjVCyJkBb6EWSg5fEPX6L+Wtr0CH2If4j5KYylz85iaZiFlUItvgJvll5g==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} - '@tanstack/config@0.20.1': - resolution: {integrity: sha512-fvhOAY0FMw8F7O4RLVSje7thdKM0R1Es6k4wPkDG4m518UJijgL9ysZO8L+YmeEeldK81jZtMdRcGUOc0goa2g==} + '@tanstack/config@0.20.3': + resolution: {integrity: sha512-RDz7vI1FSkocPda882nhEQoshU5F2bB5hTV/gXtB6krm/LTqMpK18ngvKtI1gbSd2RbsKCFtpJxqag3lvPgzgg==} engines: {node: '>=18'} '@tanstack/devtools-event-bus@0.3.2': resolution: {integrity: sha512-yJT2As/drc+Epu0nsqCsJaKaLcaNGufiNxSlp/+/oeTD0jsBxF9/PJBfh66XVpYXkKr97b8689mSu7QMef0Rrw==} engines: {node: '>=18'} - '@tanstack/devtools-event-client@0.2.5': - resolution: {integrity: sha512-iVdqw879KETXyyPHc3gQR5Ld0GjlPLk7bKenBUhzr3+z1FiQZvsbfgYfRRokTSPcgwANAV7aA2Uv05nx5xWT8A==} + '@tanstack/devtools-event-client@0.3.2': + resolution: {integrity: sha512-gkvph/YMCFUfAca75EsJBJnhbKitDGix7vdEcT/3lAV+eyGSv+uECYG43apVQN4yLJKnV6mzcNvGzOhDhb72gg==} engines: {node: '>=18'} - '@tanstack/devtools-ui@0.3.4': - resolution: {integrity: sha512-W3FnFhot91c30I/DyZUKSCd5gan5FRe35EvxUrZTxMN3qQ4kOtZSmYi8N8cAP4rmAp54ivv6pvT3LXlpjEeE0w==} + '@tanstack/devtools-ui@0.3.5': + resolution: {integrity: sha512-DU8OfLntngnph+Tb7ivQvh4F4w+rDu6r01fXlhjq/Nmgdr0gtsOox4kdmyq5rCs+C6aPgP3M7+BE+fv4dN+VvA==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' - '@tanstack/devtools@0.6.11': - resolution: {integrity: sha512-H0uxsVsZabx/iyVxSp/6JzP4TbuYpj5kbZXojHZYDzuw1wP5YmzSQvIHm+6ThrFEWKmLpmNdzX6cXY/lJlXKMw==} + '@tanstack/devtools@0.6.14': + resolution: {integrity: sha512-dOtHoeLjjcHeNscu+ZEf89EFboQsy0ggb6pf8Sha59qBUeQbjUsaAvwP8Ogwg89oJxFQbTP7DKYNBNw5CxlNEA==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' - '@tanstack/eslint-config@0.3.1': - resolution: {integrity: sha512-t9A1epZWk0iUmLQxuLfo0MaBVmvtrpg3E7Y9N6+8InVlqdYOHaGLRqjwZ/nbzXkScqobei2nNXtjBZmkioJuhQ==} + '@tanstack/eslint-config@0.3.2': + resolution: {integrity: sha512-2g+PuGR3GuvvCiR3xZs+IMqAvnYU9bvH+jRml0BFBSxHBj22xFCTNvJWhvgj7uICFF9IchDkFUto91xDPMu5cg==} engines: {node: '>=18'} '@tanstack/pacer@0.13.0': @@ -2821,18 +2827,18 @@ packages: resolution: {integrity: sha512-XUewm2+D0K84ZSuWm1oMHfqw/flmO7IzCc+316php/XChgbMe30DStp1cF2Uc4IV0cI0G4hDq2RX3+NTxTIvWg==} engines: {node: '>=18'} - '@tanstack/publish-config@0.2.0': - resolution: {integrity: sha512-RC0yRBFJvGuR58tKQUIkMXVEiATXgESIc+3/NTqoCC7D2YOF4fZGmHGYIanFEPQH7EGfQ5+Bwi+H6BOtKnymtw==} + '@tanstack/publish-config@0.2.1': + resolution: {integrity: sha512-URVXmXwlZXL75AFyvyOORef1tv2f16dEaFntwLYnBHoKLQMxyWYRzQrnXooxO1xf+GidJuDSZSC6Rc9UX1aK7g==} engines: {node: '>=18'} - '@tanstack/query-core@5.87.4': - resolution: {integrity: sha512-uNsg6zMxraEPDVO2Bn+F3/ctHi+Zsk+MMpcN8h6P7ozqD088F6mFY5TfGM7zuyIrL7HKpDyu6QHfLWiDxh3cuw==} + '@tanstack/query-core@5.90.2': + resolution: {integrity: sha512-k/TcR3YalnzibscALLwxeiLUub6jN5EDLwKDiO7q5f4ICEoptJ+n9+7vcEFy5/x/i6Q+Lb/tXrsKCggf5uQJXQ==} - '@tanstack/query-devtools@5.87.3': - resolution: {integrity: sha512-LkzxzSr2HS1ALHTgDmJH5eGAVsSQiuwz//VhFW5OqNk0OQ+Fsqba0Tsf+NzWRtXYvpgUqwQr4b2zdFZwxHcGvg==} + '@tanstack/query-devtools@5.90.1': + resolution: {integrity: sha512-GtINOPjPUH0OegJExZ70UahT9ykmAhmtNVcmtdnOZbxLwT7R5OmRztR5Ahe3/Cu7LArEmR6/588tAycuaWb1xQ==} - '@tanstack/react-devtools@0.6.7': - resolution: {integrity: sha512-XgBa6USm0xx3rpHE8KOaJMwEv4Pa6WEkHx7uA8mWNknY/i6SzX6o2FlrwbyJ/xeIRTTq3KzIM+APWXQiEUy3wg==} + '@tanstack/react-devtools@0.7.0': + resolution: {integrity: sha512-HJH+oNBYQotgsKWAQqvkY8KnfQbbZptHbrkPGVaIwj393vVFGT1BuXMYy+rlmOYxczyerb90ltRFgsQyUtJTuw==} engines: {node: '>=18'} peerDependencies: '@types/react': '>=16.8' @@ -2854,14 +2860,14 @@ packages: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/react-query-devtools@5.87.4': - resolution: {integrity: sha512-JYcnVJBBW1DCPyNGM0S2CyrLpe6KFiL2gpYd/k9tAp62Du7+Y27zkzd+dKFyxpFadYaTxsx4kUA7YvnkMLVUoQ==} + '@tanstack/react-query-devtools@5.90.2': + resolution: {integrity: sha512-vAXJzZuBXtCQtrY3F/yUNJCV4obT/A/n81kb3+YqLbro5Z2+phdAbceO+deU3ywPw8B42oyJlp4FhO0SoivDFQ==} peerDependencies: - '@tanstack/react-query': ^5.87.4 + '@tanstack/react-query': ^5.90.2 react: ^18 || ^19 - '@tanstack/react-query@5.87.4': - resolution: {integrity: sha512-T5GT/1ZaNsUXf5I3RhcYuT17I4CPlbZgyLxc/ZGv7ciS6esytlbjb3DgUFO6c8JWYMDpdjSWInyGZUErgzqhcA==} + '@tanstack/react-query@5.90.2': + resolution: {integrity: sha512-CLABiR+h5PYfOWr/z+vWFt5VsOA2ekQeRQBFSKlcoW6Ndx/f8rfyVmq4LbgOM4GG2qtxAxjLYLOpCNTYm4uKzw==} peerDependencies: react: ^18 || ^19 @@ -2871,35 +2877,47 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/solid-devtools@0.6.7': - resolution: {integrity: sha512-ca03Rp/LQQlU5KP2WUWCN4Vnys9mLyMbeYrHwO4YqHMcjQ3BdrZcdetq3Y3dBhlUQAeQcU86Ewzl2tFJbZYLHQ==} + '@tanstack/react-store@0.7.7': + resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/solid-devtools@0.7.0': + resolution: {integrity: sha512-BOwIadgyg0ISx7awjbCQEDwelMExZ2vuLQ6NO2Z7H2DSPPBultIBEWPK//cZhvdVrDaTmsEK+AvMDWI4SsSQ8w==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' - '@tanstack/solid-store@0.7.5': - resolution: {integrity: sha512-w9c9xsSBJiFYhz1CaOGUEY2eJQg4vgshy0pRpULgrAKl+6TAPblYtk2wHmOJb6jcCxOiIRwO3BGRYot3oH2teg==} + '@tanstack/solid-store@0.7.7': + resolution: {integrity: sha512-DnEZbqQ+pg68BguHz17VFukfp+6JaTk8nE2MhdVliU8bhsOFlTMsmVHp/4gMoQ1AkmAOMFiBsSliROCaaeJzvg==} peerDependencies: solid-js: ^1.6.0 '@tanstack/store@0.7.5': resolution: {integrity: sha512-qd/OjkjaFRKqKU4Yjipaen/EOB9MyEg6Wr9fW103RBPACf1ZcKhbhcu2S5mj5IgdPib6xFIgCUti/mKVkl+fRw==} - '@tanstack/typedoc-config@0.2.0': - resolution: {integrity: sha512-1ak0ZirlLRxd3dNNOFnMoYORBeC83nK4C+OiXpE0dxsO8ZVrBqCtNCKr8SG+W9zICXcWGiFu9qYLsgNKTayOqw==} + '@tanstack/store@0.7.7': + resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} + + '@tanstack/typedoc-config@0.2.1': + resolution: {integrity: sha512-3miLBNiyWX54bQKBNnh7Fj6otWX8ZDiU6/ffOsNnikwBdKjFkA7ddrBtC5/JQkLCE6CBIqcJvtNIwI+DZu4y1Q==} engines: {node: '>=18'} - '@tanstack/vite-config@0.2.0': - resolution: {integrity: sha512-WpL1C9iR5/U7g3GpvHIssN5QvKnDnWhW05BQhaD6bAqoPCkQyBepxUF8ZRO4IGZRGVAZeMVqTbUA05BAQH/88g==} + '@tanstack/vite-config@0.3.0': + resolution: {integrity: sha512-p1HuuSD3OUoVMYHfjkzUJqVBUurp1BDrGwT3302GRpSjpBHiJvZex3+NzRIXdG9NdjeJ0mT7DYpNMoii7GVROQ==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.8.0': - resolution: {integrity: sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==} + '@testing-library/jest-dom@6.9.0': + resolution: {integrity: sha512-QHdxYMJ0YPGKYofMc6zYvo7LOViVhdc6nPg/OtM2cf9MQrwEcTxFCs7d/GJ5eSyPkHzOiBkc/KfLdFJBHzldtQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} @@ -2939,8 +2957,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@24.3.1': - resolution: {integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==} + '@types/node@24.6.0': + resolution: {integrity: sha512-F1CBxgqwOMc4GKJ7eY22hWhBVQuMYTtqI8L0FcszYcpYX0fzfDGpez22Xau8Mgm7O9fI+zA/TYIdq3tGWfweBA==} '@types/react-dom@19.1.7': resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} @@ -2952,8 +2970,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.12': - resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} + '@types/react@19.1.16': + resolution: {integrity: sha512-WBM/nDbEZmDUORKnh5i1bTnAz6vTohUf9b8esSMu+b24+srbaxa04UbJgWx78CVfNXA20sNu0odEIluZDFdCog==} '@types/react@19.1.9': resolution: {integrity: sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==} @@ -2961,67 +2979,67 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.43.0': - resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} + '@typescript-eslint/eslint-plugin@8.45.0': + resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.43.0 + '@typescript-eslint/parser': ^8.45.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.43.0': - resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} + '@typescript-eslint/parser@8.45.0': + resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.43.0': - resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} + '@typescript-eslint/project-service@8.45.0': + resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.43.0': - resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} + '@typescript-eslint/scope-manager@8.45.0': + resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.43.0': - resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} + '@typescript-eslint/tsconfig-utils@8.45.0': + resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.43.0': - resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} + '@typescript-eslint/type-utils@8.45.0': + resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.39.1': - resolution: {integrity: sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.43.0': resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.43.0': - resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} + '@typescript-eslint/types@8.45.0': + resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.45.0': + resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.43.0': - resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} + '@typescript-eslint/utils@8.45.0': + resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.43.0': - resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} + '@typescript-eslint/visitor-keys@8.45.0': + resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -3119,8 +3137,8 @@ packages: cpu: [x64] os: [win32] - '@vitejs/plugin-react@5.0.2': - resolution: {integrity: sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==} + '@vitejs/plugin-react@5.0.4': + resolution: {integrity: sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -3304,6 +3322,9 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + birecord@0.1.1: resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} @@ -3453,6 +3474,10 @@ packages: css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -3460,16 +3485,16 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - cssstyle@4.2.1: - resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} - engines: {node: '>=18'} + cssstyle@5.3.1: + resolution: {integrity: sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==} + engines: {node: '>=20'} csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@6.0.0: + resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} + engines: {node: '>=20'} dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} @@ -3595,6 +3620,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -3668,8 +3697,8 @@ packages: eslint-import-resolver-node: optional: true - eslint-plugin-n@17.21.3: - resolution: {integrity: sha512-MtxYjDZhMQgsWRm/4xYLL0i2EhusWT7itDxlJ80l1NND2AL2Vi5Mvneqv/ikG9+zpran0VsVRXTEHrpLmUZRNw==} + eslint-plugin-n@17.23.1: + resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' @@ -3680,35 +3709,26 @@ packages: peerDependencies: eslint: '>=7' - eslint-plugin-react-debug@1.53.1: - resolution: {integrity: sha512-WNOiQ6jhodJE88VjBU/IVDM+2Zr9gKHlBFDUSA3fQ0dMB5RiBVj5wMtxbxRuipK/GqNJbteqHcZoYEod7nfddg==} - engines: {node: '>=18.18.0'} + eslint-plugin-react-debug@2.0.4: + resolution: {integrity: sha512-0H4ELREV7fr1eA4be7QQZHiR/rzxhV3iquR/HQSQy5Ab3x7Bv7fTdA3dhWOlF9m/XTtfeNKz5iD66u9XFTGQzA==} + engines: {node: '>=20.19.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^9.36.0 + typescript: ^5.9.2 - eslint-plugin-react-dom@1.53.1: - resolution: {integrity: sha512-UYrWJ2cS4HpJ1A5XBuf1HfMpPoLdfGil+27g/ldXfGemb4IXqlxHt4ANLyC8l2CWcE3SXGJW7mTslL34MG0qTQ==} - engines: {node: '>=18.18.0'} + eslint-plugin-react-dom@2.0.4: + resolution: {integrity: sha512-YQ7BAaFPEvh+sjVJp7STeCk5Uz6cKTVOXFAiOKYKX1FJ34xHhma1csfkDwIgEyr37mglS6wn/VRkS5HGx2/cHw==} + engines: {node: '>=20.19.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^9.36.0 + typescript: ^5.9.2 - eslint-plugin-react-hooks-extra@1.53.1: - resolution: {integrity: sha512-fshTnMWNn9NjFLIuy7HzkRgGK29vKv4ZBO9UMr+kltVAfKLMeXXP6021qVKk66i/XhQjbktiS+vQsu1Rd3ZKvg==} - engines: {node: '>=18.18.0'} + eslint-plugin-react-hooks-extra@2.0.4: + resolution: {integrity: sha512-K4XEvsRD1NWj4phthkOMgBpRnexyP6f1+GLBv0i+Bo2sxS7qP/y/UgI5m8ZI6xCuh0H+MqWrUq1a8eku3hdb7g==} + engines: {node: '>=20.0.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^9.36.0 + typescript: ^5.9.2 eslint-plugin-react-hooks@5.2.0: resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} @@ -3716,38 +3736,26 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-naming-convention@1.53.1: - resolution: {integrity: sha512-rvZ/B/CSVF8d34HQ4qIt90LRuxotVx+KUf3i1OMXAyhsagEFMRe4gAlPJiRufZ+h9lnuu279bEdd+NINsXOteA==} - engines: {node: '>=18.18.0'} + eslint-plugin-react-naming-convention@2.0.4: + resolution: {integrity: sha512-/7cAWZyW/M5HH4WolPb9CwCf4HxribmQQ/tBrg28hexVx8EPDZO+PbONyESC6DvF2Y1P2N8lYo657h+y0tJhTg==} + engines: {node: '>=20.19.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^9.36.0 + typescript: ^5.9.2 - eslint-plugin-react-web-api@1.53.1: - resolution: {integrity: sha512-INVZ3Cbl9/b+sizyb43ChzEPXXYuDsBGU9BIg7OVTNPyDPloCXdI+dQFAcSlDocZhPrLxhPV3eT6+gXbygzYXg==} - engines: {node: '>=18.18.0'} + eslint-plugin-react-web-api@2.0.4: + resolution: {integrity: sha512-U4ql2C+AQVnZeQ+nxBb3A8NA58W4tx4Fdc+cEro5/QMJKuiXltNUnhAJ5N4ttS6K0D/Iz1nHtkyULuWXFq+p1w==} + engines: {node: '>=20.19.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^9.36.0 + typescript: ^5.9.2 - eslint-plugin-react-x@1.53.1: - resolution: {integrity: sha512-MwMNnVwiPem0U6SlejDF/ddA4h/lmP6imL1RDZ2m3pUBrcdcOwOx0gyiRVTA3ENnhRlWfHljHf5y7m8qDSxMEg==} - engines: {node: '>=18.18.0'} + eslint-plugin-react-x@2.0.4: + resolution: {integrity: sha512-9YqZGzu5lvevtzQjkaQZut2dMvOl9bjNgn+LUcwBdhqWkvoD7dFC6I0p6jgIZdA4ql8CGoYBlcYqve55wddOWw==} + engines: {node: '>=20.19.0'} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - ts-api-utils: ^2.1.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - ts-api-utils: - optional: true - typescript: - optional: true + eslint: ^9.36.0 + typescript: ^5.9.2 eslint-plugin-unused-imports@4.2.0: resolution: {integrity: sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==} @@ -3770,8 +3778,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.35.0: - resolution: {integrity: sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==} + eslint@9.36.0: + resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3970,8 +3978,8 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@16.3.0: - resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} engines: {node: '>=18'} globby@11.1.0: @@ -4161,8 +4169,8 @@ packages: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + jiti@2.6.0: + resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} hasBin: true jju@1.4.0: @@ -4182,9 +4190,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdom@26.1.0: - resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} - engines: {node: '>=18'} + jsdom@27.0.0: + resolution: {integrity: sha512-lIHeR1qlIRrIN5VMccd8tI2Sgw6ieYXSVktcSHaNe3Z5nE/tcPQYQWOq00wxMvYOsz+73eAkNenVvmPC6bba9A==} + engines: {node: '>=20'} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -4219,8 +4227,8 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -4229,13 +4237,13 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - knip@5.63.1: - resolution: {integrity: sha512-wSznedUAzcU4o9e0O2WPqDnP7Jttu8cesq/R23eregRY8QYQ9NLJ3aGt9fadJfRzPBoU4tRyutwVQu6chhGDlA==} + knip@5.64.1: + resolution: {integrity: sha512-80XnLsyeXuyxj1F4+NBtQFHxaRH0xWRw8EKwfQ6EkVZZ0bSz/kqqan08k/Qg8ajWsFPhFq+0S2RbLCBGIQtuOg==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: '@types/node': '>=18' - typescript: '>=5.0.4' + typescript: '>=5.0.4 <7' kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -4289,8 +4297,9 @@ packages: loupe@3.1.4: resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + engines: {node: 20 || >=22} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -4321,6 +4330,9 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -4429,11 +4441,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.18: - resolution: {integrity: sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==} - - nx@21.5.2: - resolution: {integrity: sha512-hvq3W6mWsNuXzO1VWXpVcbGuF3e4cx0PyPavy8RgZUinbnh3Gk+f+2DGXyjKEyAG3Ql0Nl3V4RJERZzXEVl7EA==} + nx@21.6.2: + resolution: {integrity: sha512-bFZgAsB838vn9kk1vI6a1A9sStKyOA7Q9Ifsx7fYPth3D0GafHKu7X2/YbsC4h1TpmuejkJCPWUw2WtCOQy6IQ==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -4466,8 +4475,8 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - oxc-resolver@11.7.2: - resolution: {integrity: sha512-abgiTgtJ7FLVPdg5x+rcfoSqz5kpgS/j1Rk/BFNVlLbpAI56VXCj/MM7NyfQb+aVlQDBum0omdz4uFrOYEjNIw==} + oxc-resolver@11.8.4: + resolution: {integrity: sha512-qpimS3tHHEf+kgESMAme+q+rj7aCzMya00u9YdKOKyX2o7q4lozjPo6d7ZTTi979KHEcVOPWdNTueAKdeNq72w==} p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} @@ -4500,8 +4509,8 @@ packages: package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - package-manager-detector@1.1.0: - resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==} + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -4516,6 +4525,9 @@ packages: parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -4599,8 +4611,8 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - publint@0.3.12: - resolution: {integrity: sha512-1w3MMtL9iotBjm1mmXtG3Nk06wnq9UhGNRpQ2j6n1Zq7YAD6gnxMMZMIxlRPAydVjVbjSm+n0lhwqsD1m4LD5w==} + publint@0.3.13: + resolution: {integrity: sha512-NC+lph09+BRO9LJgKlIy3WQXyu6/6WDQ0dCA60KALUwdKVf3PfGuC6fY8I+oKB/5kEPh50aOSUz+6yWy1n4EfA==} engines: {node: '>=18'} hasBin: true @@ -4963,11 +4975,11 @@ packages: resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} - tldts-core@6.1.83: - resolution: {integrity: sha512-I2wb9OJc6rXyh9d4aInhSNWChNI+ra6qDnFEGEwe9OoA68lE4Temw29bOkf1Uvwt8VZS079t1BFZdXVBmmB4dw==} + tldts-core@7.0.16: + resolution: {integrity: sha512-XHhPmHxphLi+LGbH0G/O7dmUH9V65OY20R7vH8gETHsp5AZCjBk9l8sqmRKLaGOxnETU7XNSDUPtewAy/K6jbA==} - tldts@6.1.83: - resolution: {integrity: sha512-FHxxNJJ0WNsEBPHyC1oesQb3rRoxpuho/z2g3zIIAhw1WHJeQsUzK1jYK8TI1/iClaa4fS3Z2TCA9mtxXsENSg==} + tldts@7.0.16: + resolution: {integrity: sha512-5bdPHSwbKTeHmXrgecID4Ljff8rQjv7g8zKQPkCozRo2HWWni+p310FSn5ImI+9kWw9kK4lzOB5q/a6iv0IJsw==} hasBin: true tmp@0.2.3: @@ -4978,16 +4990,16 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tough-cookie@5.1.2: - resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} engines: {node: '>=16'} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} @@ -5051,8 +5063,8 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x - typescript-eslint@8.43.0: - resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} + typescript-eslint@8.45.0: + resolution: {integrity: sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5074,8 +5086,8 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - undici-types@7.10.0: - resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + undici-types@7.13.0: + resolution: {integrity: sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==} undici@6.21.3: resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} @@ -5150,8 +5162,8 @@ packages: vite: optional: true - vite@7.1.5: - resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==} + vite@7.1.7: + resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -5249,9 +5261,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} + webidl-conversions@8.0.0: + resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + engines: {node: '>=20'} whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} @@ -5261,9 +5273,9 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.1.1: - resolution: {integrity: sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ==} - engines: {node: '>=18'} + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -5289,18 +5301,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -5359,11 +5359,8 @@ packages: zod@3.24.2: resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} - zod@3.25.72: - resolution: {integrity: sha512-Cl+fe4dNL4XumOBNBsr0lHfA80PQiZXHI4xEMTEr8gt6aGz92t3lBA32e71j9+JeF/VAYvdfBnuwJs+BMx/BrA==} - - zod@4.1.8: - resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==} + zod@4.1.11: + resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} snapshots: @@ -5374,13 +5371,23 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@asamuzakjp/css-color@2.8.3': + '@asamuzakjp/css-color@4.0.5': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 11.2.2 + + '@asamuzakjp/dom-selector@6.5.6': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - lru-cache: 10.4.3 + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.1.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.2 + + '@asamuzakjp/nwsapi@2.3.9': {} '@babel/code-frame@7.26.2': dependencies: @@ -5438,18 +5445,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.28.3': + '@babel/core@7.28.4': dependencies: - '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) - '@babel/helpers': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -5484,8 +5491,8 @@ snapshots: '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 @@ -5568,12 +5575,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -5623,10 +5630,10 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.0 - '@babel/helpers@7.28.3': + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/parser@7.27.0': dependencies: @@ -5640,6 +5647,10 @@ snapshots: dependencies: '@babel/types': 7.28.2 + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -5653,14 +5664,14 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/runtime@7.26.10': @@ -5721,14 +5732,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.28.3': + '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -5753,6 +5764,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@changesets/apply-release-plan@7.0.13': dependencies: '@changesets/config': 3.1.1 @@ -5782,7 +5798,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.7(@types/node@24.3.1)': + '@changesets/cli@2.29.7(@types/node@24.6.0)': dependencies: '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 @@ -5798,7 +5814,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.1(@types/node@24.3.1) + '@inquirer/external-editor': 1.0.1(@types/node@24.6.0) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -5915,54 +5931,42 @@ snapshots: '@types/conventional-commits-parser': 5.0.1 chalk: 5.4.1 - '@csstools/color-helpers@5.0.2': {} + '@csstools/color-helpers@5.1.0': {} - '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@3.0.3': {} - - '@emnapi/core@1.4.3': + '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': dependencies: - '@emnapi/wasi-threads': 1.0.2 - tslib: 2.8.1 + postcss: 8.5.6 + + '@csstools/css-tokenizer@3.0.4': {} '@emnapi/core@1.5.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.4.3': - dependencies: - tslib: 2.8.1 '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.0.2': - dependencies: - tslib: 2.8.1 '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 - optional: true '@esbuild/aix-ppc64@0.25.0': optional: true @@ -6039,42 +6043,35 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.35.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))': dependencies: - eslint: 9.35.0(jiti@2.5.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@2.5.1))': - dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@eslint-react/ast@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint-react/eff': 1.53.1 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) string-ts: 2.2.1 - ts-pattern: 5.8.0 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/core@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@eslint-react/core@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) birecord: 0.1.1 ts-pattern: 5.8.0 transitivePeerDependencies: @@ -6082,61 +6079,57 @@ snapshots: - supports-color - typescript - '@eslint-react/eff@1.53.1': {} - - '@eslint-react/eslint-plugin@1.53.1(eslint@9.35.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2)': - dependencies: - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) - eslint-plugin-react-debug: 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint-plugin-react-dom: 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint-plugin-react-hooks-extra: 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint-plugin-react-naming-convention: 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint-plugin-react-web-api: 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint-plugin-react-x: 1.53.1(eslint@9.35.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) - optionalDependencies: + '@eslint-react/eff@2.0.4': {} + + '@eslint-react/eslint-plugin@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + dependencies: + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) + eslint-plugin-react-debug: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-dom: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-hooks-extra: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-naming-convention: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-web-api: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-x: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - - ts-api-utils - '@eslint-react/kit@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@eslint-react/kit@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint-react/eff': 1.53.1 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - ts-pattern: 5.8.0 - zod: 4.1.8 + '@eslint-react/eff': 2.0.4 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@eslint-react/shared@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) ts-pattern: 5.8.0 - zod: 4.1.8 + zod: 4.1.11 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@eslint-react/var@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - string-ts: 2.2.1 + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) ts-pattern: 5.8.0 transitivePeerDependencies: - eslint @@ -6171,7 +6164,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.35.0': {} + '@eslint/js@9.36.0': {} '@eslint/object-schema@2.1.6': {} @@ -6201,12 +6194,12 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/external-editor@1.0.1(@types/node@24.3.1)': + '@inquirer/external-editor@1.0.1(@types/node@24.6.0)': dependencies: chardet: 2.1.0 iconv-lite: 0.6.3 optionalDependencies: - '@types/node': 24.3.1 + '@types/node': 24.6.0 '@jest/diff-sequences@30.0.1': {} @@ -6227,6 +6220,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -6267,23 +6265,23 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@microsoft/api-extractor-model@7.29.6(@types/node@24.3.1)': + '@microsoft/api-extractor-model@7.29.6(@types/node@24.6.0)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.7.0(@types/node@24.3.1) + '@rushstack/node-core-library': 5.7.0(@types/node@24.6.0) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.47.7(@types/node@24.3.1)': + '@microsoft/api-extractor@7.47.7(@types/node@24.6.0)': dependencies: - '@microsoft/api-extractor-model': 7.29.6(@types/node@24.3.1) + '@microsoft/api-extractor-model': 7.29.6(@types/node@24.6.0) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.7.0(@types/node@24.3.1) + '@rushstack/node-core-library': 5.7.0(@types/node@24.6.0) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.0(@types/node@24.3.1) - '@rushstack/ts-command-line': 4.22.6(@types/node@24.3.1) + '@rushstack/terminal': 0.14.0(@types/node@24.6.0) + '@rushstack/ts-command-line': 4.22.6(@types/node@24.6.0) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -6304,22 +6302,22 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.10.0 optional: true '@napi-rs/wasm-runtime@0.2.4': dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.0.4': + '@napi-rs/wasm-runtime@1.0.5': dependencies: '@emnapi/core': 1.5.0 '@emnapi/runtime': 1.5.0 - '@tybys/wasm-util': 0.10.0 + '@tybys/wasm-util': 0.10.1 optional: true '@nodelib/fs.scandir@2.1.5': @@ -6364,68 +6362,68 @@ snapshots: '@nx/nx-win32-x64-msvc@21.5.2': optional: true - '@oxc-resolver/binding-android-arm-eabi@11.7.2': + '@oxc-resolver/binding-android-arm-eabi@11.8.4': optional: true - '@oxc-resolver/binding-android-arm64@11.7.2': + '@oxc-resolver/binding-android-arm64@11.8.4': optional: true - '@oxc-resolver/binding-darwin-arm64@11.7.2': + '@oxc-resolver/binding-darwin-arm64@11.8.4': optional: true - '@oxc-resolver/binding-darwin-x64@11.7.2': + '@oxc-resolver/binding-darwin-x64@11.8.4': optional: true - '@oxc-resolver/binding-freebsd-x64@11.7.2': + '@oxc-resolver/binding-freebsd-x64@11.8.4': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.2': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.8.4': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.7.2': + '@oxc-resolver/binding-linux-arm-musleabihf@11.8.4': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.7.2': + '@oxc-resolver/binding-linux-arm64-gnu@11.8.4': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.7.2': + '@oxc-resolver/binding-linux-arm64-musl@11.8.4': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.7.2': + '@oxc-resolver/binding-linux-ppc64-gnu@11.8.4': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.7.2': + '@oxc-resolver/binding-linux-riscv64-gnu@11.8.4': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.7.2': + '@oxc-resolver/binding-linux-riscv64-musl@11.8.4': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.7.2': + '@oxc-resolver/binding-linux-s390x-gnu@11.8.4': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.7.2': + '@oxc-resolver/binding-linux-x64-gnu@11.8.4': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.7.2': + '@oxc-resolver/binding-linux-x64-musl@11.8.4': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.7.2': + '@oxc-resolver/binding-wasm32-wasi@11.8.4': dependencies: - '@napi-rs/wasm-runtime': 1.0.4 + '@napi-rs/wasm-runtime': 1.0.5 optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.7.2': + '@oxc-resolver/binding-win32-arm64-msvc@11.8.4': optional: true - '@oxc-resolver/binding-win32-ia32-msvc@11.7.2': + '@oxc-resolver/binding-win32-ia32-msvc@11.8.4': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.7.2': + '@oxc-resolver/binding-win32-x64-msvc@11.8.4': optional: true '@publint/pack@0.1.2': {} - '@rolldown/pluginutils@1.0.0-beta.34': {} + '@rolldown/pluginutils@1.0.0-beta.38': {} '@rollup/pluginutils@5.1.4(rollup@4.44.1)': dependencies: @@ -6495,7 +6493,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.44.1': optional: true - '@rushstack/node-core-library@5.7.0(@types/node@24.3.1)': + '@rushstack/node-core-library@5.7.0(@types/node@24.6.0)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -6506,23 +6504,23 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 24.3.1 + '@types/node': 24.6.0 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.14.0(@types/node@24.3.1)': + '@rushstack/terminal@0.14.0(@types/node@24.6.0)': dependencies: - '@rushstack/node-core-library': 5.7.0(@types/node@24.3.1) + '@rushstack/node-core-library': 5.7.0(@types/node@24.6.0) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.3.1 + '@types/node': 24.6.0 - '@rushstack/ts-command-line@4.22.6(@types/node@24.3.1)': + '@rushstack/ts-command-line@4.22.6(@types/node@24.6.0)': dependencies: - '@rushstack/terminal': 0.14.0(@types/node@24.3.1) + '@rushstack/terminal': 0.14.0(@types/node@24.6.0) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -6580,11 +6578,11 @@ snapshots: dependencies: solid-js: 1.9.9 - '@stylistic/eslint-plugin@5.3.1(eslint@9.35.0(jiti@2.5.1))': + '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.0))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.35.0(jiti@2.5.1)) - '@typescript-eslint/types': 8.43.0 - eslint: 9.35.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@typescript-eslint/types': 8.45.0 + eslint: 9.36.0(jiti@2.6.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -6601,12 +6599,12 @@ snapshots: transitivePeerDependencies: - encoding - '@tanstack/config@0.20.1(@types/node@24.3.1)(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/config@0.20.3(@types/node@24.6.0)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@tanstack/eslint-config': 0.3.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@tanstack/publish-config': 0.2.0 - '@tanstack/typedoc-config': 0.2.0(typescript@5.9.2) - '@tanstack/vite-config': 0.2.0(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + '@tanstack/eslint-config': 0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@tanstack/publish-config': 0.2.1 + '@tanstack/typedoc-config': 0.2.1(typescript@5.9.2) + '@tanstack/vite-config': 0.3.0(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - '@typescript-eslint/utils' @@ -6624,9 +6622,9 @@ snapshots: - bufferutil - utf-8-validate - '@tanstack/devtools-event-client@0.2.5': {} + '@tanstack/devtools-event-client@0.3.2': {} - '@tanstack/devtools-ui@0.3.4(csstype@3.1.3)(solid-js@1.9.9)': + '@tanstack/devtools-ui@0.3.5(csstype@3.1.3)(solid-js@1.9.9)': dependencies: clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) @@ -6634,11 +6632,11 @@ snapshots: transitivePeerDependencies: - csstype - '@tanstack/devtools@0.6.11(csstype@3.1.3)(solid-js@1.9.9)': + '@tanstack/devtools@0.6.14(csstype@3.1.3)(solid-js@1.9.9)': dependencies: '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.9) '@tanstack/devtools-event-bus': 0.3.2 - '@tanstack/devtools-ui': 0.3.4(csstype@3.1.3)(solid-js@1.9.9) + '@tanstack/devtools-ui': 0.3.5(csstype@3.1.3)(solid-js@1.9.9) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.9 @@ -6647,15 +6645,15 @@ snapshots: - csstype - utf-8-validate - '@tanstack/eslint-config@0.3.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@tanstack/eslint-config@0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint/js': 9.35.0 - '@stylistic/eslint-plugin': 5.3.1(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-n: 17.21.3(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - globals: 16.3.0 - typescript-eslint: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - vue-eslint-parser: 10.2.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint/js': 9.36.0 + '@stylistic/eslint-plugin': 5.4.0(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-n: 17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + globals: 16.4.0 + typescript-eslint: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + vue-eslint-parser: 10.2.0(eslint@9.36.0(jiti@2.6.0)) transitivePeerDependencies: - '@typescript-eslint/utils' - eslint @@ -6665,28 +6663,28 @@ snapshots: '@tanstack/pacer@0.13.0': dependencies: - '@tanstack/store': 0.7.5 + '@tanstack/store': 0.7.7 '@tanstack/persister@0.1.1': {} - '@tanstack/publish-config@0.2.0': + '@tanstack/publish-config@0.2.1': dependencies: '@commitlint/parse': 19.8.1 - jsonfile: 6.1.0 + jsonfile: 6.2.0 semver: 7.7.2 simple-git: 3.28.0 transitivePeerDependencies: - supports-color - '@tanstack/query-core@5.87.4': {} + '@tanstack/query-core@5.90.2': {} - '@tanstack/query-devtools@5.87.3': {} + '@tanstack/query-devtools@5.90.1': {} - '@tanstack/react-devtools@0.6.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)': + '@tanstack/react-devtools@0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)': dependencies: - '@tanstack/devtools': 0.6.11(csstype@3.1.3)(solid-js@1.9.9) - '@types/react': 19.1.12 - '@types/react-dom': 19.1.9(@types/react@19.1.12) + '@tanstack/devtools': 0.6.14(csstype@3.1.3)(solid-js@1.9.9) + '@types/react': 19.1.16 + '@types/react-dom': 19.1.9(@types/react@19.1.16) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) transitivePeerDependencies: @@ -6708,48 +6706,50 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@tanstack/react-query-devtools@5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1)': + '@tanstack/react-query-devtools@5.90.2(@tanstack/react-query@5.90.2(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/query-devtools': 5.87.3 - '@tanstack/react-query': 5.87.4(react@19.1.1) + '@tanstack/query-devtools': 5.90.1 + '@tanstack/react-query': 5.90.2(react@19.1.1) react: 19.1.1 - '@tanstack/react-query@5.87.4(react@19.1.1)': + '@tanstack/react-query@5.90.2(react@19.1.1)': dependencies: - '@tanstack/query-core': 5.87.4 + '@tanstack/query-core': 5.90.2 react: 19.1.1 - '@tanstack/react-store@0.7.5(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': + '@tanstack/react-store@0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/store': 0.7.5 react: 19.1.1 - react-dom: 19.1.0(react@19.1.1) + react-dom: 19.1.1(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/react-store@0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@tanstack/react-store@0.7.7(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/store': 0.7.5 + '@tanstack/store': 0.7.7 react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + react-dom: 19.1.0(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/solid-devtools@0.6.7(csstype@3.1.3)(solid-js@1.9.9)': + '@tanstack/solid-devtools@0.7.0(csstype@3.1.3)(solid-js@1.9.9)': dependencies: - '@tanstack/devtools': 0.6.11(csstype@3.1.3)(solid-js@1.9.9) + '@tanstack/devtools': 0.6.14(csstype@3.1.3)(solid-js@1.9.9) solid-js: 1.9.9 transitivePeerDependencies: - bufferutil - csstype - utf-8-validate - '@tanstack/solid-store@0.7.5(solid-js@1.9.9)': + '@tanstack/solid-store@0.7.7(solid-js@1.9.9)': dependencies: - '@tanstack/store': 0.7.5 + '@tanstack/store': 0.7.7 solid-js: 1.9.9 '@tanstack/store@0.7.5': {} - '@tanstack/typedoc-config@0.2.0(typescript@5.9.2)': + '@tanstack/store@0.7.7': {} + + '@tanstack/typedoc-config@0.2.1(typescript@5.9.2)': dependencies: typedoc: 0.27.9(typescript@5.9.2) typedoc-plugin-frontmatter: 1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2))) @@ -6757,12 +6757,12 @@ snapshots: transitivePeerDependencies: - typescript - '@tanstack/vite-config@0.2.0(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/vite-config@0.3.0(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: rollup-plugin-preserve-directives: 0.4.0(rollup@4.44.1) - vite-plugin-dts: 4.2.3(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) - vite-plugin-externalize-deps: 0.9.0(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) - vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-dts: 4.2.3(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-externalize-deps: 0.9.0(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - rollup @@ -6770,7 +6770,7 @@ snapshots: - typescript - vite - '@testing-library/jest-dom@6.8.0': + '@testing-library/jest-dom@6.9.0': dependencies: '@adobe/css-tools': 4.4.2 aria-query: 5.3.2 @@ -6784,6 +6784,11 @@ snapshots: tslib: 2.8.1 optional: true + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 @@ -6817,7 +6822,7 @@ snapshots: '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 24.3.1 + '@types/node': 24.6.0 '@types/deep-eql@4.0.2': {} @@ -6831,19 +6836,19 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@24.3.1': + '@types/node@24.6.0': dependencies: - undici-types: 7.10.0 + undici-types: 7.13.0 '@types/react-dom@19.1.7(@types/react@19.1.9)': dependencies: '@types/react': 19.1.9 - '@types/react-dom@19.1.9(@types/react@19.1.12)': + '@types/react-dom@19.1.9(@types/react@19.1.16)': dependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.16 - '@types/react@19.1.12': + '@types/react@19.1.16': dependencies: csstype: 3.1.3 @@ -6853,15 +6858,15 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.43.0 - eslint: 9.35.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.45.0 + eslint: 9.36.0(jiti@2.6.0) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -6870,58 +6875,58 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.43.0 + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.45.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.43.0': + '@typescript-eslint/scope-manager@8.45.0': dependencies: - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/visitor-keys': 8.43.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 - '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.39.1': {} - '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': + '@typescript-eslint/types@8.45.0': {} + + '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/visitor-keys': 8.43.0 + '@typescript-eslint/project-service': 8.45.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -6932,20 +6937,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.35.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.43.0': + '@typescript-eslint/visitor-keys@8.45.0': dependencies: - '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/types': 8.45.0 eslint-visitor-keys: 4.2.1 '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -7007,15 +7012,15 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@5.0.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': + '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.3) - '@rolldown/pluginutils': 1.0.0-beta.34 + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@rolldown/pluginutils': 1.0.0-beta.38 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -7027,13 +7032,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -7218,6 +7223,10 @@ snapshots: dependencies: is-windows: 1.0.2 + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + birecord@0.1.1: {} bl@4.1.0: @@ -7382,21 +7391,29 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css-what@6.1.0: {} css.escape@1.5.1: {} - cssstyle@4.2.1: + cssstyle@5.3.1(postcss@8.5.6): dependencies: - '@asamuzakjp/css-color': 2.8.3 - rrweb-cssom: 0.8.0 + '@asamuzakjp/css-color': 4.0.5 + '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) + css-tree: 3.1.0 + transitivePeerDependencies: + - postcss csstype@3.1.3: {} - data-urls@5.0.0: + data-urls@6.0.0: dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.1 + whatwg-url: 15.1.0 dataloader@1.4.0: {} @@ -7502,6 +7519,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -7553,9 +7572,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.35.0(jiti@2.5.1)): + eslint-compat-utils@0.5.1(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) semver: 7.7.2 eslint-import-context@0.1.9(unrs-resolver@1.11.1): @@ -7574,19 +7593,19 @@ snapshots: - supports-color optional: true - eslint-plugin-es-x@7.8.0(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-es-x@7.8.0(eslint@9.36.0(jiti@2.6.0)): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.35.0(jiti@2.5.1) - eslint-compat-utils: 0.5.1(eslint@9.35.0(jiti@2.5.1)) + eslint: 9.36.0(jiti@2.6.0) + eslint-compat-utils: 0.5.1(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): dependencies: - '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/types': 8.43.0 comment-parser: 1.4.1 debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 9.0.5 @@ -7594,17 +7613,17 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.21.3(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): + eslint-plugin-n@17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) enhanced-resolve: 5.18.1 - eslint: 9.35.0(jiti@2.5.1) - eslint-plugin-es-x: 7.8.0(eslint@9.35.0(jiti@2.5.1)) + eslint: 9.36.0(jiti@2.6.0) + eslint-plugin-es-x: 7.8.0(eslint@9.36.0(jiti@2.6.0)) get-tsconfig: 4.10.1 globals: 15.15.0 globrex: 0.1.2 @@ -7614,149 +7633,143 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)): dependencies: '@babel/core': 7.26.10 '@babel/parser': 7.27.0 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.10) - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) hermes-parser: 0.25.1 zod: 3.24.2 zod-validation-error: 3.4.0(zod@3.24.2) transitivePeerDependencies: - supports-color - eslint-plugin-react-debug@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + eslint-plugin-react-debug@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-dom@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) compare-versions: 6.1.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + eslint-plugin-react-hooks-extra@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-react-naming-convention@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): + eslint-plugin-react-naming-convention@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + eslint-plugin-react-web-api@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.53.1(eslint@9.35.0(jiti@2.5.1))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-x@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) compare-versions: 6.1.1 - eslint: 9.35.0(jiti@2.5.1) - is-immutable-type: 5.0.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) + is-immutable-type: 5.0.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) string-ts: 2.2.1 - ts-pattern: 5.8.0 - optionalDependencies: ts-api-utils: 2.1.0(typescript@5.9.2) + ts-pattern: 5.8.0 typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) eslint-scope@8.4.0: dependencies: @@ -7767,15 +7780,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.35.0(jiti@2.5.1): + eslint@9.36.0(jiti@2.6.0): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.35.0 + '@eslint/js': 9.36.0 '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -7805,7 +7818,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.0 transitivePeerDependencies: - supports-color @@ -7982,7 +7995,7 @@ snapshots: globals@15.15.0: {} - globals@16.3.0: {} + globals@16.4.0: {} globby@11.1.0: dependencies: @@ -8045,14 +8058,14 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -8095,10 +8108,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.1(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): + is-immutable-type@5.0.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) ts-api-utils: 2.1.0(typescript@5.9.2) ts-declaration-location: 1.0.7(typescript@5.9.2) typescript: 5.9.2 @@ -8146,7 +8159,7 @@ snapshots: jiti@2.4.2: {} - jiti@2.5.1: {} + jiti@2.6.0: {} jju@1.4.0: {} @@ -8163,30 +8176,31 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@26.1.0: + jsdom@27.0.0(postcss@8.5.6): dependencies: - cssstyle: 4.2.1 - data-urls: 5.0.0 + '@asamuzakjp/dom-selector': 6.5.6 + cssstyle: 5.3.1(postcss@8.5.6) + data-urls: 6.0.0 decimal.js: 10.5.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.18 - parse5: 7.2.1 + parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.2 + tough-cookie: 6.0.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 + webidl-conversions: 8.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.1 - ws: 8.18.1 + whatwg-url: 15.1.0 + ws: 8.18.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil + - postcss - supports-color - utf-8-validate @@ -8208,7 +8222,7 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -8220,23 +8234,22 @@ snapshots: dependencies: json-buffer: 3.0.1 - knip@5.63.1(@types/node@24.3.1)(typescript@5.9.2): + knip@5.64.1(@types/node@24.6.0)(typescript@5.9.2): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 24.3.1 + '@types/node': 24.6.0 fast-glob: 3.3.3 formatly: 0.3.0 - jiti: 2.5.1 + jiti: 2.6.0 js-yaml: 4.1.0 minimist: 1.2.8 - oxc-resolver: 11.7.2 + oxc-resolver: 11.8.4 picocolors: 1.1.1 picomatch: 4.0.3 smol-toml: 1.4.2 strip-json-comments: 5.0.2 typescript: 5.9.2 - zod: 3.25.72 - zod-validation-error: 3.4.0(zod@3.25.72) + zod: 4.1.11 kolorist@1.8.0: {} @@ -8283,7 +8296,7 @@ snapshots: loupe@3.1.4: {} - lru-cache@10.4.3: {} + lru-cache@11.2.2: {} lru-cache@5.1.1: dependencies: @@ -8317,6 +8330,8 @@ snapshots: math-intrinsics@1.1.0: {} + mdn-data@2.12.2: {} + mdurl@2.0.0: {} meow@12.1.1: {} @@ -8401,9 +8416,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.18: {} - - nx@21.5.2: + nx@21.6.2: dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -8490,29 +8503,29 @@ snapshots: outdent@0.5.0: {} - oxc-resolver@11.7.2: + oxc-resolver@11.8.4: dependencies: napi-postinstall: 0.3.2 optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.7.2 - '@oxc-resolver/binding-android-arm64': 11.7.2 - '@oxc-resolver/binding-darwin-arm64': 11.7.2 - '@oxc-resolver/binding-darwin-x64': 11.7.2 - '@oxc-resolver/binding-freebsd-x64': 11.7.2 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.7.2 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.7.2 - '@oxc-resolver/binding-linux-arm64-gnu': 11.7.2 - '@oxc-resolver/binding-linux-arm64-musl': 11.7.2 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.7.2 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.7.2 - '@oxc-resolver/binding-linux-riscv64-musl': 11.7.2 - '@oxc-resolver/binding-linux-s390x-gnu': 11.7.2 - '@oxc-resolver/binding-linux-x64-gnu': 11.7.2 - '@oxc-resolver/binding-linux-x64-musl': 11.7.2 - '@oxc-resolver/binding-wasm32-wasi': 11.7.2 - '@oxc-resolver/binding-win32-arm64-msvc': 11.7.2 - '@oxc-resolver/binding-win32-ia32-msvc': 11.7.2 - '@oxc-resolver/binding-win32-x64-msvc': 11.7.2 + '@oxc-resolver/binding-android-arm-eabi': 11.8.4 + '@oxc-resolver/binding-android-arm64': 11.8.4 + '@oxc-resolver/binding-darwin-arm64': 11.8.4 + '@oxc-resolver/binding-darwin-x64': 11.8.4 + '@oxc-resolver/binding-freebsd-x64': 11.8.4 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.8.4 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.8.4 + '@oxc-resolver/binding-linux-arm64-gnu': 11.8.4 + '@oxc-resolver/binding-linux-arm64-musl': 11.8.4 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.8.4 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.8.4 + '@oxc-resolver/binding-linux-riscv64-musl': 11.8.4 + '@oxc-resolver/binding-linux-s390x-gnu': 11.8.4 + '@oxc-resolver/binding-linux-x64-gnu': 11.8.4 + '@oxc-resolver/binding-linux-x64-musl': 11.8.4 + '@oxc-resolver/binding-wasm32-wasi': 11.8.4 + '@oxc-resolver/binding-win32-arm64-msvc': 11.8.4 + '@oxc-resolver/binding-win32-ia32-msvc': 11.8.4 + '@oxc-resolver/binding-win32-x64-msvc': 11.8.4 p-filter@2.1.0: dependencies: @@ -8542,7 +8555,7 @@ snapshots: dependencies: quansync: 0.2.8 - package-manager-detector@1.1.0: {} + package-manager-detector@1.3.0: {} parent-module@1.0.1: dependencies: @@ -8561,6 +8574,10 @@ snapshots: dependencies: entities: 4.5.0 + parse5@7.3.0: + dependencies: + entities: 6.0.1 + path-browserify@1.0.1: {} path-exists@4.0.0: {} @@ -8618,10 +8635,10 @@ snapshots: proxy-from-env@1.1.0: {} - publint@0.3.12: + publint@0.3.13: dependencies: '@publint/pack': 0.1.2 - package-manager-detector: 1.1.0 + package-manager-detector: 1.3.0 picocolors: 1.1.1 sade: 1.8.1 @@ -8974,11 +8991,11 @@ snapshots: tinyspy@4.0.3: {} - tldts-core@6.1.83: {} + tldts-core@7.0.16: {} - tldts@6.1.83: + tldts@7.0.16: dependencies: - tldts-core: 6.1.83 + tldts-core: 7.0.16 tmp@0.2.3: {} @@ -8986,13 +9003,13 @@ snapshots: dependencies: is-number: 7.0.0 - tough-cookie@5.1.2: + tough-cookie@6.0.0: dependencies: - tldts: 6.1.83 + tldts: 7.0.16 tr46@0.0.3: {} - tr46@5.0.0: + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -9051,13 +9068,13 @@ snapshots: typescript: 5.9.2 yaml: 2.8.0 - typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -9070,7 +9087,7 @@ snapshots: ufo@1.5.4: {} - undici-types@7.10.0: {} + undici-types@7.13.0: {} undici@6.21.3: {} @@ -9120,13 +9137,13 @@ snapshots: validate-html-nesting@1.2.2: {} - vite-node@3.2.4(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -9141,9 +9158,9 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.2.3(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-dts@4.2.3(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - '@microsoft/api-extractor': 7.47.7(@types/node@24.3.1) + '@microsoft/api-extractor': 7.47.7(@types/node@24.6.0) '@rollup/pluginutils': 5.1.4(rollup@4.44.1) '@volar/typescript': 2.4.12 '@vue/language-core': 2.1.6(typescript@5.9.2) @@ -9154,17 +9171,17 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.2 optionalDependencies: - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.9.0(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-externalize-deps@0.9.0(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.7)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 @@ -9172,14 +9189,14 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.7 solid-refresh: 0.6.3(solid-js@1.9.7) - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: - '@testing-library/jest-dom': 6.8.0 + '@testing-library/jest-dom': 6.9.0 transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 @@ -9187,25 +9204,25 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.9 solid-refresh: 0.6.3(solid-js@1.9.9) - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: - '@testing-library/jest-dom': 6.8.0 + '@testing-library/jest-dom': 6.9.0 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.9.2) optionalDependencies: - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0): + vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: esbuild: 0.25.0 fdir: 6.5.0(picomatch@4.0.3) @@ -9214,21 +9231,21 @@ snapshots: rollup: 4.44.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.3.1 + '@types/node': 24.6.0 fsevents: 2.3.3 - jiti: 2.5.1 + jiti: 2.6.0 tsx: 4.19.3 yaml: 2.8.0 - vitefu@1.0.6(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)): + vitefu@1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): optionalDependencies: - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vitest@3.2.4(@types/node@24.3.1)(jiti@2.5.1)(jsdom@26.1.0)(tsx@4.19.3)(yaml@2.8.0): + vitest@3.2.4(@types/node@24.6.0)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -9246,12 +9263,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.3.1)(jiti@2.5.1)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.3.1 - jsdom: 26.1.0 + '@types/node': 24.6.0 + jsdom: 27.0.0(postcss@8.5.6) transitivePeerDependencies: - jiti - less @@ -9268,10 +9285,10 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.2.0(eslint@9.35.0(jiti@2.5.1)): + vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)): dependencies: debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -9292,7 +9309,7 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} + webidl-conversions@8.0.0: {} whatwg-encoding@3.1.1: dependencies: @@ -9300,10 +9317,10 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-url@14.1.1: + whatwg-url@15.1.0: dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 + tr46: 6.0.0 + webidl-conversions: 8.0.0 whatwg-url@5.0.0: dependencies: @@ -9329,8 +9346,6 @@ snapshots: wrappy@1.0.2: {} - ws@8.18.1: {} - ws@8.18.3: {} xml-name-validator@5.0.0: {} @@ -9365,12 +9380,6 @@ snapshots: dependencies: zod: 3.24.2 - zod-validation-error@3.4.0(zod@3.25.72): - dependencies: - zod: 3.25.72 - zod@3.24.2: {} - zod@3.25.72: {} - - zod@4.1.8: {} + zod@4.1.11: {} From 19ea030029b725ac78e5a8f4f25828eb22fd0619 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Tue, 30 Sep 2025 16:54:33 -0500 Subject: [PATCH 39/44] merge main --- examples/react/asyncBatch/package.json | 2 +- examples/react/asyncDebounce/package.json | 2 +- examples/react/asyncRateLimit/package.json | 2 +- examples/react/asyncThrottle/package.json | 2 +- examples/react/batch/package.json | 2 +- examples/react/debounce/package.json | 2 +- examples/react/queue/package.json | 2 +- examples/react/rateLimit/package.json | 2 +- .../package.json | 2 +- .../react-query-queued-prefetch/package.json | 2 +- .../package.json | 2 +- examples/react/throttle/package.json | 2 +- .../useAsyncBatchedCallback/package.json | 2 +- examples/react/useAsyncBatcher/package.json | 2 +- .../useAsyncDebouncedCallback/package.json | 2 +- examples/react/useAsyncDebouncer/package.json | 2 +- .../react/useAsyncQueuedState/package.json | 2 +- examples/react/useAsyncQueuer/package.json | 2 +- .../react/useAsyncRateLimiter/package.json | 2 +- .../package.json | 2 +- examples/react/useAsyncThrottler/package.json | 2 +- .../react/useBatchedCallback/package.json | 2 +- examples/react/useBatcher/package.json | 2 +- .../react/useDebouncedCallback/package.json | 2 +- examples/react/useDebouncedState/package.json | 2 +- examples/react/useDebouncedValue/package.json | 2 +- examples/react/useDebouncer/package.json | 2 +- examples/react/useQueuedState/package.json | 2 +- examples/react/useQueuedValue/package.json | 2 +- examples/react/useQueuer/package.json | 2 +- .../react/useQueuerWithPersister/package.json | 2 +- .../react/useRateLimitedCallback/package.json | 2 +- .../react/useRateLimitedState/package.json | 2 +- .../react/useRateLimitedValue/package.json | 2 +- examples/react/useRateLimiter/package.json | 2 +- .../useRateLimiterWithPersister/package.json | 2 +- .../react/useThrottledCallback/package.json | 2 +- examples/react/useThrottledState/package.json | 2 +- examples/react/useThrottledValue/package.json | 2 +- examples/react/useThrottler/package.json | 2 +- examples/react/util-comparison/package.json | 2 +- package.json | 8 +- packages/react-pacer-devtools/package.json | 2 +- packages/react-pacer/package.json | 4 +- pnpm-lock.yaml | 1923 +++++++++++------ 45 files changed, 1261 insertions(+), 758 deletions(-) diff --git a/examples/react/asyncBatch/package.json b/examples/react/asyncBatch/package.json index c2df3c42..12888820 100644 --- a/examples/react/asyncBatch/package.json +++ b/examples/react/asyncBatch/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/asyncDebounce/package.json b/examples/react/asyncDebounce/package.json index 10d86eb3..70705497 100644 --- a/examples/react/asyncDebounce/package.json +++ b/examples/react/asyncDebounce/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/asyncRateLimit/package.json b/examples/react/asyncRateLimit/package.json index f5046768..a9f397c0 100644 --- a/examples/react/asyncRateLimit/package.json +++ b/examples/react/asyncRateLimit/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/asyncThrottle/package.json b/examples/react/asyncThrottle/package.json index f9258293..6dc75eed 100644 --- a/examples/react/asyncThrottle/package.json +++ b/examples/react/asyncThrottle/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/batch/package.json b/examples/react/batch/package.json index 413d092d..c943a052 100644 --- a/examples/react/batch/package.json +++ b/examples/react/batch/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/debounce/package.json b/examples/react/debounce/package.json index e2ff68f3..c081fab9 100644 --- a/examples/react/debounce/package.json +++ b/examples/react/debounce/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/queue/package.json b/examples/react/queue/package.json index 1595a87a..94add16e 100644 --- a/examples/react/queue/package.json +++ b/examples/react/queue/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@tanstack/react-devtools": "0.7.0", "@tanstack/react-pacer-devtools": "0.3.0", - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/rateLimit/package.json b/examples/react/rateLimit/package.json index a8534be3..e3b7abbb 100644 --- a/examples/react/rateLimit/package.json +++ b/examples/react/rateLimit/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/react-query-debounced-prefetch/package.json b/examples/react/react-query-debounced-prefetch/package.json index 61bdb26a..4634b69b 100644 --- a/examples/react/react-query-debounced-prefetch/package.json +++ b/examples/react/react-query-debounced-prefetch/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/react-query-queued-prefetch/package.json b/examples/react/react-query-queued-prefetch/package.json index be9e132f..c34bbded 100644 --- a/examples/react/react-query-queued-prefetch/package.json +++ b/examples/react/react-query-queued-prefetch/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/react-query-throttled-prefetch/package.json b/examples/react/react-query-throttled-prefetch/package.json index d181a72b..3809f7d7 100644 --- a/examples/react/react-query-throttled-prefetch/package.json +++ b/examples/react/react-query-throttled-prefetch/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/throttle/package.json b/examples/react/throttle/package.json index ed5c7ad2..6acd7b9f 100644 --- a/examples/react/throttle/package.json +++ b/examples/react/throttle/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncBatchedCallback/package.json b/examples/react/useAsyncBatchedCallback/package.json index ea84495e..b6b1bafc 100644 --- a/examples/react/useAsyncBatchedCallback/package.json +++ b/examples/react/useAsyncBatchedCallback/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncBatcher/package.json b/examples/react/useAsyncBatcher/package.json index c59844d0..27509f8c 100644 --- a/examples/react/useAsyncBatcher/package.json +++ b/examples/react/useAsyncBatcher/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncDebouncedCallback/package.json b/examples/react/useAsyncDebouncedCallback/package.json index 12f220ec..2f619d48 100644 --- a/examples/react/useAsyncDebouncedCallback/package.json +++ b/examples/react/useAsyncDebouncedCallback/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncDebouncer/package.json b/examples/react/useAsyncDebouncer/package.json index f3315969..330363b8 100644 --- a/examples/react/useAsyncDebouncer/package.json +++ b/examples/react/useAsyncDebouncer/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncQueuedState/package.json b/examples/react/useAsyncQueuedState/package.json index e96187da..d9fe43dd 100644 --- a/examples/react/useAsyncQueuedState/package.json +++ b/examples/react/useAsyncQueuedState/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncQueuer/package.json b/examples/react/useAsyncQueuer/package.json index 0a6c8374..5b7107b1 100644 --- a/examples/react/useAsyncQueuer/package.json +++ b/examples/react/useAsyncQueuer/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncRateLimiter/package.json b/examples/react/useAsyncRateLimiter/package.json index 90c8fb84..833e70a0 100644 --- a/examples/react/useAsyncRateLimiter/package.json +++ b/examples/react/useAsyncRateLimiter/package.json @@ -15,7 +15,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncRateLimiterWithPersister/package.json b/examples/react/useAsyncRateLimiterWithPersister/package.json index a6b0e50e..9a7da838 100644 --- a/examples/react/useAsyncRateLimiterWithPersister/package.json +++ b/examples/react/useAsyncRateLimiterWithPersister/package.json @@ -15,7 +15,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useAsyncThrottler/package.json b/examples/react/useAsyncThrottler/package.json index 6ee9940f..d09d9d8c 100644 --- a/examples/react/useAsyncThrottler/package.json +++ b/examples/react/useAsyncThrottler/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useBatchedCallback/package.json b/examples/react/useBatchedCallback/package.json index 9461039b..6f4abab1 100644 --- a/examples/react/useBatchedCallback/package.json +++ b/examples/react/useBatchedCallback/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useBatcher/package.json b/examples/react/useBatcher/package.json index 17016793..a6a0c96b 100644 --- a/examples/react/useBatcher/package.json +++ b/examples/react/useBatcher/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useDebouncedCallback/package.json b/examples/react/useDebouncedCallback/package.json index c74350ba..1e90f9dc 100644 --- a/examples/react/useDebouncedCallback/package.json +++ b/examples/react/useDebouncedCallback/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useDebouncedState/package.json b/examples/react/useDebouncedState/package.json index ca6349e8..e244383a 100644 --- a/examples/react/useDebouncedState/package.json +++ b/examples/react/useDebouncedState/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useDebouncedValue/package.json b/examples/react/useDebouncedValue/package.json index ea922329..8d98516d 100644 --- a/examples/react/useDebouncedValue/package.json +++ b/examples/react/useDebouncedValue/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useDebouncer/package.json b/examples/react/useDebouncer/package.json index 6e4d2974..76452ff7 100644 --- a/examples/react/useDebouncer/package.json +++ b/examples/react/useDebouncer/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useQueuedState/package.json b/examples/react/useQueuedState/package.json index 232cd32f..2ae47279 100644 --- a/examples/react/useQueuedState/package.json +++ b/examples/react/useQueuedState/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useQueuedValue/package.json b/examples/react/useQueuedValue/package.json index 95bf5425..e035ed50 100644 --- a/examples/react/useQueuedValue/package.json +++ b/examples/react/useQueuedValue/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useQueuer/package.json b/examples/react/useQueuer/package.json index af83048c..8071e6de 100644 --- a/examples/react/useQueuer/package.json +++ b/examples/react/useQueuer/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@tanstack/react-devtools": "0.7.0", "@tanstack/react-pacer-devtools": "0.3.0", - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useQueuerWithPersister/package.json b/examples/react/useQueuerWithPersister/package.json index a061d5f4..e693eb75 100644 --- a/examples/react/useQueuerWithPersister/package.json +++ b/examples/react/useQueuerWithPersister/package.json @@ -15,7 +15,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useRateLimitedCallback/package.json b/examples/react/useRateLimitedCallback/package.json index c96f000d..938b8146 100644 --- a/examples/react/useRateLimitedCallback/package.json +++ b/examples/react/useRateLimitedCallback/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useRateLimitedState/package.json b/examples/react/useRateLimitedState/package.json index c009dd23..9c7ec110 100644 --- a/examples/react/useRateLimitedState/package.json +++ b/examples/react/useRateLimitedState/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useRateLimitedValue/package.json b/examples/react/useRateLimitedValue/package.json index 970459db..0a1deb92 100644 --- a/examples/react/useRateLimitedValue/package.json +++ b/examples/react/useRateLimitedValue/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useRateLimiter/package.json b/examples/react/useRateLimiter/package.json index 9478a211..da72f164 100644 --- a/examples/react/useRateLimiter/package.json +++ b/examples/react/useRateLimiter/package.json @@ -15,7 +15,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useRateLimiterWithPersister/package.json b/examples/react/useRateLimiterWithPersister/package.json index 7e7c075c..859f08cb 100644 --- a/examples/react/useRateLimiterWithPersister/package.json +++ b/examples/react/useRateLimiterWithPersister/package.json @@ -15,7 +15,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useThrottledCallback/package.json b/examples/react/useThrottledCallback/package.json index ec3b6d07..91456de5 100644 --- a/examples/react/useThrottledCallback/package.json +++ b/examples/react/useThrottledCallback/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useThrottledState/package.json b/examples/react/useThrottledState/package.json index ce684751..82c82075 100644 --- a/examples/react/useThrottledState/package.json +++ b/examples/react/useThrottledState/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useThrottledValue/package.json b/examples/react/useThrottledValue/package.json index 65e9992f..d0aef75a 100644 --- a/examples/react/useThrottledValue/package.json +++ b/examples/react/useThrottledValue/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/useThrottler/package.json b/examples/react/useThrottler/package.json index 51b44518..18fdb153 100644 --- a/examples/react/useThrottler/package.json +++ b/examples/react/useThrottler/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.1.1" }, "devDependencies": { - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/examples/react/util-comparison/package.json b/examples/react/util-comparison/package.json index 11f2e2b4..38af3c74 100644 --- a/examples/react/util-comparison/package.json +++ b/examples/react/util-comparison/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@tanstack/react-devtools": "0.7.0", "@tanstack/react-pacer-devtools": "0.3.0", - "@types/react": "^19.1.15", + "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", "vite": "^7.1.7" diff --git a/package.json b/package.json index 435a568a..c83f0a74 100644 --- a/package.json +++ b/package.json @@ -58,22 +58,22 @@ "@size-limit/preset-small-lib": "^11.2.0", "@svitejs/changesets-changelog-github-compact": "^1.2.0", "@tanstack/config": "0.20.3", - "@testing-library/jest-dom": "^6.8.0", - "@types/node": "^24.3.1", + "@testing-library/jest-dom": "^6.9.0", + "@types/node": "^24.6.0", "eslint": "^9.36.0", "eslint-plugin-unused-imports": "^4.2.0", "fast-glob": "^3.3.3", "jsdom": "^27.0.0", "knip": "^5.64.1", "markdown-link-extractor": "^4.0.2", - "nx": "^21.5.3", + "nx": "^21.6.2", "premove": "^4.0.0", "prettier": "^3.6.2", "prettier-plugin-svelte": "^3.4.0", "publint": "^0.3.13", "sherif": "^1.6.1", "size-limit": "^11.2.0", - "typescript": "5.9.2", + "typescript": "5.9.3", "vite": "^7.1.7", "vitest": "^3.2.4" }, diff --git a/packages/react-pacer-devtools/package.json b/packages/react-pacer-devtools/package.json index a930c468..94a4bae1 100644 --- a/packages/react-pacer-devtools/package.json +++ b/packages/react-pacer-devtools/package.json @@ -68,7 +68,7 @@ "@tanstack/pacer-devtools": "workspace:*" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.53.1", + "@eslint-react/eslint-plugin": "^2.0.4", "@vitejs/plugin-react": "^5.0.4", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0" diff --git a/packages/react-pacer/package.json b/packages/react-pacer/package.json index 777c1f97..931101ed 100644 --- a/packages/react-pacer/package.json +++ b/packages/react-pacer/package.json @@ -195,8 +195,8 @@ "@tanstack/react-store": "^0.7.7" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.53.1", - "@types/react": "^19.1.15", + "@eslint-react/eslint-plugin": "^2.0.4", + "@types/react": "^19.1.16", "@vitejs/plugin-react": "^5.0.4", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^5.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b14d6fa..289759a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: 1.2.0 '@tanstack/config': specifier: 0.20.3 - version: 0.20.3(@types/node@24.3.1)(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 0.20.3(@types/node@24.6.0)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) '@testing-library/jest-dom': specifier: ^6.9.0 version: 6.9.0 @@ -34,7 +34,7 @@ importers: version: 9.36.0(jiti@2.6.0) eslint-plugin-unused-imports: specifier: ^4.2.0 - version: 4.2.0(@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) + version: 4.2.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)) fast-glob: specifier: ^3.3.3 version: 3.3.3 @@ -43,13 +43,13 @@ importers: version: 27.0.0(postcss@8.5.6) knip: specifier: ^5.64.1 - version: 5.64.1(@types/node@24.3.1)(typescript@5.9.2) + version: 5.64.1(@types/node@24.6.0)(typescript@5.9.3) markdown-link-extractor: specifier: ^4.0.2 version: 4.0.2 nx: - specifier: ^21.5.3 - version: 21.5.3 + specifier: ^21.6.2 + version: 21.6.2 premove: specifier: ^4.0.0 version: 4.0.0 @@ -69,14 +69,14 @@ importers: specifier: ^11.2.0 version: 11.2.0 typescript: - specifier: 5.9.2 - version: 5.9.2 + specifier: 5.9.3 + version: 5.9.3 vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.3.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0) + version: 3.2.4(@types/node@24.6.0)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncBatch: dependencies: @@ -91,17 +91,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncDebounce: dependencies: @@ -116,17 +116,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncRateLimit: dependencies: @@ -141,17 +141,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncThrottle: dependencies: @@ -166,17 +166,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/batch: dependencies: @@ -191,17 +191,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/debounce: dependencies: @@ -216,17 +216,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/queue: dependencies: @@ -242,22 +242,22 @@ importers: devDependencies: '@tanstack/react-devtools': specifier: 0.7.0 - version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.3.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/rateLimit: dependencies: @@ -272,17 +272,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-debounced-prefetch: dependencies: @@ -303,17 +303,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-queued-prefetch: dependencies: @@ -334,17 +334,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-throttled-prefetch: dependencies: @@ -365,17 +365,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/throttle: dependencies: @@ -390,17 +390,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatchedCallback: dependencies: @@ -415,17 +415,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatcher: dependencies: @@ -440,17 +440,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncedCallback: dependencies: @@ -465,17 +465,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncer: dependencies: @@ -490,17 +490,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuedState: dependencies: @@ -515,17 +515,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuer: dependencies: @@ -540,17 +540,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiter: dependencies: @@ -568,17 +568,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiterWithPersister: dependencies: @@ -596,17 +596,42 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + + examples/react/useAsyncRetryer: + dependencies: + '@tanstack/react-pacer': + specifier: ^0.14.0 + version: 0.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react: + specifier: ^19.1.1 + version: 19.1.1 + react-dom: + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) + devDependencies: + '@types/react': + specifier: ^19.1.16 + version: 19.1.16 + '@types/react-dom': + specifier: ^19.1.9 + version: 19.1.9(@types/react@19.1.16) + '@vitejs/plugin-react': + specifier: ^5.0.4 + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite: + specifier: ^7.1.7 + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncThrottler: dependencies: @@ -621,17 +646,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatchedCallback: dependencies: @@ -646,17 +671,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatcher: dependencies: @@ -671,17 +696,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedCallback: dependencies: @@ -696,17 +721,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedState: dependencies: @@ -721,17 +746,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedValue: dependencies: @@ -746,17 +771,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncer: dependencies: @@ -771,17 +796,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedState: dependencies: @@ -796,17 +821,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedValue: dependencies: @@ -821,17 +846,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuer: dependencies: @@ -850,22 +875,22 @@ importers: devDependencies: '@tanstack/react-devtools': specifier: 0.7.0 - version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.3.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuerWithPersister: dependencies: @@ -883,17 +908,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedCallback: dependencies: @@ -908,17 +933,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedState: dependencies: @@ -933,17 +958,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedValue: dependencies: @@ -958,17 +983,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiter: dependencies: @@ -986,17 +1011,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiterWithPersister: dependencies: @@ -1014,17 +1039,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledCallback: dependencies: @@ -1039,17 +1064,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledState: dependencies: @@ -1064,17 +1089,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledValue: dependencies: @@ -1089,17 +1114,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottler: dependencies: @@ -1114,17 +1139,17 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/util-comparison: dependencies: @@ -1140,22 +1165,22 @@ importers: devDependencies: '@tanstack/react-devtools': specifier: 0.7.0 - version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) + version: 0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9) '@tanstack/react-pacer-devtools': specifier: 0.3.0 version: link:../../../packages/react-pacer-devtools '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@types/react-dom': specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.15) + version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/solid/asyncBatch: dependencies: @@ -1168,10 +1193,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncDebounce: dependencies: @@ -1184,10 +1209,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncRateLimit: dependencies: @@ -1200,10 +1225,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncThrottle: dependencies: @@ -1216,10 +1241,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/batch: dependencies: @@ -1232,10 +1257,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncBatcher: dependencies: @@ -1248,10 +1273,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncDebouncer: dependencies: @@ -1264,10 +1289,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncQueuer: dependencies: @@ -1280,10 +1305,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncRateLimiter: dependencies: @@ -1296,10 +1321,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncThrottler: dependencies: @@ -1312,10 +1337,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createBatcher: dependencies: @@ -1328,10 +1353,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedSignal: dependencies: @@ -1344,10 +1369,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedValue: dependencies: @@ -1360,10 +1385,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncer: dependencies: @@ -1376,10 +1401,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createQueuer: dependencies: @@ -1398,10 +1423,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedSignal: dependencies: @@ -1414,10 +1439,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedValue: dependencies: @@ -1430,10 +1455,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimiter: dependencies: @@ -1446,10 +1471,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledSignal: dependencies: @@ -1462,10 +1487,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledValue: dependencies: @@ -1478,10 +1503,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottler: dependencies: @@ -1494,10 +1519,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/debounce: dependencies: @@ -1510,10 +1535,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/queue: dependencies: @@ -1532,10 +1557,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/rateLimit: dependencies: @@ -1548,10 +1573,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/throttle: dependencies: @@ -1564,10 +1589,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/pacer: dependencies: @@ -1604,7 +1629,7 @@ importers: devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/react-pacer: dependencies: @@ -1613,20 +1638,20 @@ importers: version: link:../pacer '@tanstack/react-store': specifier: ^0.7.7 - version: 0.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 0.7.7(react-dom@19.1.0(react@19.1.1))(react@19.1.1) react-dom: specifier: '>=16.8' - version: 19.1.1(react@19.1.1) + version: 19.1.0(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.53.1 - version: 1.53.1(eslint@9.36.0(jiti@2.6.0))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + specifier: ^2.0.4 + version: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@types/react': - specifier: ^19.1.15 - version: 19.1.15 + specifier: ^19.1.16 + version: 19.1.16 '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 version: 19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)) @@ -1644,10 +1669,10 @@ importers: version: link:../pacer-devtools '@types/react': specifier: '>=16.8' - version: 19.1.15 + version: 19.1.9 '@types/react-dom': specifier: '>=16.8' - version: 19.1.9(@types/react@19.1.15) + version: 19.1.7(@types/react@19.1.9) react: specifier: '>=16.8' version: 19.1.1 @@ -1656,11 +1681,11 @@ importers: version: 19.1.1(react@19.1.1) devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.53.1 - version: 1.53.1(eslint@9.36.0(jiti@2.6.0))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) + specifier: ^2.0.4 + version: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 version: 19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)) @@ -1682,7 +1707,7 @@ importers: version: 1.9.9 vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/solid-pacer-devtools: dependencies: @@ -1691,11 +1716,11 @@ importers: version: link:../pacer-devtools solid-js: specifier: '>=1.9.7' - version: 1.9.9 + version: 1.9.7 devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages: @@ -1706,27 +1731,55 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@4.0.4': - resolution: {integrity: sha512-cKjSKvWGmAziQWbCouOsFwb14mp1betm8Y7Fn+yglDMUUu3r9DCbJ9iJbeFDenLMqFbIMC0pQP8K+B8LAxX3OQ==} + '@asamuzakjp/css-color@4.0.5': + resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} - '@asamuzakjp/dom-selector@6.5.5': - resolution: {integrity: sha512-kI2MX9pmImjxWT8nxDZY+MuN6r1jJGe7WxizEbsAEPB/zxfW5wYLIiPG1v3UKgEOOP8EsDkp0ZL99oRFAdPM8g==} + '@asamuzakjp/dom-selector@6.5.6': + resolution: {integrity: sha512-Mj3Hu9ymlsERd7WOsUKNUZnJYL4IZ/I9wVVYgtvOsWYiEFbkQ4G7VRIh2USxTVW4BBDIsLG+gBUgqOqf2Kvqow==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.0': resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} engines: {node: '>=6.9.0'} + '@babel/core@7.26.10': + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.0': + resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} + engines: {node: '>=6.9.0'} + '@babel/core@7.28.4': resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.9': + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.28.3': resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} @@ -1735,6 +1788,10 @@ packages: resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -1757,10 +1814,26 @@ packages: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.3': resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} @@ -1771,6 +1844,10 @@ packages: resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} @@ -1785,24 +1862,54 @@ packages: resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.6': + resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.4': resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.28.3': + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} engines: {node: '>=6.0.0'} hasBin: true @@ -1840,16 +1947,48 @@ packages: resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} engines: {node: '>=6.9.0'} + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.26.9': + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.4': resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + '@babel/types@7.26.9': + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.0': + resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} '@babel/types@7.28.4': @@ -2235,8 +2374,9 @@ packages: '@jridgewell/gen-mapping@0.3.12': resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} @@ -2245,9 +2385,16 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} @@ -2297,53 +2444,53 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nx/nx-darwin-arm64@21.5.3': - resolution: {integrity: sha512-XKOaBpkBzPd5l9in1ax7KQrAiqm4hi46pzQ/qq4Jo20/RKTpc2ZZSFujjuI8wF75oZ6+iV+cvuxSbwbuX6AxQQ==} + '@nx/nx-darwin-arm64@21.5.2': + resolution: {integrity: sha512-PrfZbV2blRHoWLor+xDVwPY/dk46kbsmuTXCZRYlNAwko521Y9dCAJT0UOROic3zoUasQ+TwqsQextIcKCotIA==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@21.5.3': - resolution: {integrity: sha512-auGY/gvB5B2In25gozlNV6lb4so14OIpIh/dPgXXrHL5YTuky2i6NFiTOq2D1RWtv5kkoK73rQXDbffDXUS6SA==} + '@nx/nx-darwin-x64@21.5.2': + resolution: {integrity: sha512-YaLY2Cqbjrl+pDddHV7GFtokn81GLvoqg+i9k0Eiid8B0dDLBZpJ3VQKr4RkTzxBX38UuHbJUwrZc8L9z8vqEw==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@21.5.3': - resolution: {integrity: sha512-IsPCC8CpIRd7dzcRQ+j1zAEZObKVkSLQ3GI7rqybEf0/vWZz6T7UbxGHNtFB7AlaecCbHshZ3Mg5mPVXYSR+iA==} + '@nx/nx-freebsd-x64@21.5.2': + resolution: {integrity: sha512-2z/Wd42/KHFyT0zRVxWHlaRBQz12Fd1A0FCGJzuWI8G2meh9tYt4MN96gQ4q/rLQ0fmfFEEECq6pmOfCi8t9Mg==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@21.5.3': - resolution: {integrity: sha512-IDW5wy2x7KNFK5u8v94KarJ0h4Fk49pVMKcAI6imeQOJnc0lh0TwID4cqVTCg73BLJXbIV3+Ok01jDKrDsTL/w==} + '@nx/nx-linux-arm-gnueabihf@21.5.2': + resolution: {integrity: sha512-lY2O1py8x+l39XAFFuplKlzouPC9K/gERYEB/b5jHGf7PGfNj0BX2MDmUztgTty6kKUnkRele39aSoQqWok0gA==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@21.5.3': - resolution: {integrity: sha512-GQF/xjGeqt4tYWf9jT1D0GRPrcAjajTB1QpSavUaiT1jDkByuN11WvuWeTfBdPJpYWFxvH887+r+uMEg8zRE4A==} + '@nx/nx-linux-arm64-gnu@21.5.2': + resolution: {integrity: sha512-gcpkXXPpWaf8wB0FZUaKmk8Jdv+QMHLiOcQuuXYi1X0vbgotVTl/y+dccwG1EZml6V5JIRGtg2YDM61a7Olp1Q==} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@21.5.3': - resolution: {integrity: sha512-C5j2pzfe0zoAJelHXzPdTGeU19VvvHVaoesiKPeH9EvJwLLb9FoeIn+6//x3jDUNUqIHdn4+63kMA6mdBQSpMQ==} + '@nx/nx-linux-arm64-musl@21.5.2': + resolution: {integrity: sha512-oCSUwT0hORgFJWIGjwl6x4/2mVusw+3YAcSrvDePAXadjPSEMLZlJEE+4HExzqLFFBTxc+ucvyOIk08P4BtNJg==} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@21.5.3': - resolution: {integrity: sha512-HI+tdkvzFcnJQpU9m1FjvlxW7ZsJeF4os8OG4HSLRTQfFT8HCXXzp6b9sojTr+4Nfvp5r3T/J/UJM9tOJXW9Aw==} + '@nx/nx-linux-x64-gnu@21.5.2': + resolution: {integrity: sha512-rgJTQk0iaidxEIMOuRQJS36Sk4+qcpJP0uwymvgyoTpZyBdkX38NHH3D+E6sudPSFWsiVxJpkCzYE4ScSKF8Ew==} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@21.5.3': - resolution: {integrity: sha512-ntlBqcO9wVajUjYwzBU5ru2iBORttO4nurKvjnpBbyCF1mOjSJ3uFcFMzktbp2cxpRE5JRAadGq9/pZisez1AQ==} + '@nx/nx-linux-x64-musl@21.5.2': + resolution: {integrity: sha512-KeS36526VruYO9HzhFGqhE5tbps7e94DV0b4j5wfPr7V51EfPzvjAiMWllsQDARv67wdbQ80c0Wg516XTlekgA==} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@21.5.3': - resolution: {integrity: sha512-VgX1VnKDRgWcjIMJ0V3zZ6OPuYkvA7rzgn8wbZWyBh2/1GFFffypJJsGeXRPCZBFHjF3UFYcwjzCMoStZ35b5g==} + '@nx/nx-win32-arm64-msvc@21.5.2': + resolution: {integrity: sha512-jlRTycYKOiSqc0fcqvabOH/HZX9BOG0S8EGsLmqEr2OkJLZc25ByD1n22P486R2n+m8GQwL6pX+L1LPpOPmz0A==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@21.5.3': - resolution: {integrity: sha512-bEQxvsglGInSi51HJUJ7X1lqekzn5xAOddY4tpmOzBXVadx4fuMT8X/PLDLorAAShNZ36g/7sYbtWaBuJNz3tQ==} + '@nx/nx-win32-x64-msvc@21.5.2': + resolution: {integrity: sha512-Ur8GPdz52kLS5uE9IQf0wBtGyvQm4Y3M1ZDjRkR+oGf26aVGNTK6C0+kMJPuggR4Z6lurmHYA34ViGi2hHPPpA==} cpu: [x64] os: [win32] @@ -2672,6 +2819,10 @@ packages: resolution: {integrity: sha512-2g+PuGR3GuvvCiR3xZs+IMqAvnYU9bvH+jRml0BFBSxHBj22xFCTNvJWhvgj7uICFF9IchDkFUto91xDPMu5cg==} engines: {node: '>=18'} + '@tanstack/pacer@0.13.0': + resolution: {integrity: sha512-eCV3BIn+If4YGMgRbB315CvhyggmBhV85NmBH4uAA2kop6fOJh5GAWsvgsQOqYt0EFhHcjUwQ1eIhqw9aohuOQ==} + engines: {node: '>=18'} + '@tanstack/persister@0.1.1': resolution: {integrity: sha512-XUewm2+D0K84ZSuWm1oMHfqw/flmO7IzCc+316php/XChgbMe30DStp1cF2Uc4IV0cI0G4hDq2RX3+NTxTIvWg==} engines: {node: '>=18'} @@ -2720,6 +2871,12 @@ packages: peerDependencies: react: ^18 || ^19 + '@tanstack/react-store@0.7.5': + resolution: {integrity: sha512-A+WZtEnHZpvbKXm8qR+xndNKywBLez2KKKKEQc7w0Qs45GvY1LpRI3BTZNmELwEVim8+Apf99iEDH2J+MUIzlQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@tanstack/react-store@0.7.7': resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==} peerDependencies: @@ -2737,6 +2894,9 @@ packages: peerDependencies: solid-js: ^1.6.0 + '@tanstack/store@0.7.5': + resolution: {integrity: sha512-qd/OjkjaFRKqKU4Yjipaen/EOB9MyEg6Wr9fW103RBPACf1ZcKhbhcu2S5mj5IgdPib6xFIgCUti/mKVkl+fRw==} + '@tanstack/store@0.7.7': resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} @@ -2752,8 +2912,8 @@ packages: resolution: {integrity: sha512-QHdxYMJ0YPGKYofMc6zYvo7LOViVhdc6nPg/OtM2cf9MQrwEcTxFCs7d/GJ5eSyPkHzOiBkc/KfLdFJBHzldtQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.0': + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -2800,74 +2960,86 @@ packages: '@types/node@24.6.0': resolution: {integrity: sha512-F1CBxgqwOMc4GKJ7eY22hWhBVQuMYTtqI8L0FcszYcpYX0fzfDGpez22Xau8Mgm7O9fI+zA/TYIdq3tGWfweBA==} + '@types/react-dom@19.1.7': + resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} + peerDependencies: + '@types/react': ^19.0.0 + '@types/react-dom@19.1.9': resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.15': - resolution: {integrity: sha512-+kLxJpaJzXybyDyFXYADyP1cznTO8HSuBpenGlnKOAkH4hyNINiywvXS/tGJhsrGGP/gM185RA3xpjY0Yg4erA==} + '@types/react@19.1.16': + resolution: {integrity: sha512-WBM/nDbEZmDUORKnh5i1bTnAz6vTohUf9b8esSMu+b24+srbaxa04UbJgWx78CVfNXA20sNu0odEIluZDFdCog==} + + '@types/react@19.1.9': + resolution: {integrity: sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.44.1': - resolution: {integrity: sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==} + '@typescript-eslint/eslint-plugin@8.45.0': + resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.44.1 + '@typescript-eslint/parser': ^8.45.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.44.1': - resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==} + '@typescript-eslint/parser@8.45.0': + resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.44.1': - resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==} + '@typescript-eslint/project-service@8.45.0': + resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.44.1': - resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} + '@typescript-eslint/scope-manager@8.45.0': + resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.44.1': - resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==} + '@typescript-eslint/tsconfig-utils@8.45.0': + resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.44.1': - resolution: {integrity: sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g==} + '@typescript-eslint/type-utils@8.45.0': + resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.44.1': - resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} + '@typescript-eslint/types@8.43.0': + resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.45.0': + resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.44.1': - resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==} + '@typescript-eslint/typescript-estree@8.45.0': + resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.44.1': - resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==} + '@typescript-eslint/utils@8.45.0': + resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.44.1': - resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} + '@typescript-eslint/visitor-keys@8.45.0': + resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -3341,6 +3513,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -3670,6 +3851,14 @@ packages: fd-package-json@2.0.0: resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -3777,6 +3966,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3972,6 +4165,10 @@ packages: resolution: {integrity: sha512-TSjceIf6797jyd+R64NXqicttROD+Qf98fex7CowmlSn7f8+En0da1Dglwr1AXxDtVizoxXYZBlUQwNhoOXkNw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + jiti@2.6.0: resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} hasBin: true @@ -4094,11 +4291,14 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.1.4: resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} - lru-cache@11.2.1: - resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -4241,8 +4441,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nx@21.5.3: - resolution: {integrity: sha512-+XwzK3OWZw/7zLdhNHBms9VdAA8F6w6QsX8qFQ3+3CnbqEy0IDmVxTXb8c711LDMbEtNn94EiWvSV6C00FKw9Q==} + nx@21.6.2: + resolution: {integrity: sha512-bFZgAsB838vn9kk1vI6a1A9sStKyOA7Q9Ifsx7fYPth3D0GafHKu7X2/YbsC4h1TpmuejkJCPWUw2WtCOQy6IQ==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -4322,8 +4522,8 @@ packages: parse5-parser-stream@7.1.2: resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -4360,6 +4560,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -4426,6 +4630,11 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + react-dom@19.1.1: resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} peerDependencies: @@ -4622,6 +4831,9 @@ packages: resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} engines: {node: '>= 18'} + solid-js@1.9.7: + resolution: {integrity: sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw==} + solid-js@1.9.9: resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==} @@ -4739,6 +4951,14 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -4755,11 +4975,11 @@ packages: resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} - tldts-core@7.0.15: - resolution: {integrity: sha512-YBkp2VfS9VTRMPNL2PA6PMESmxV1JEVoAr5iBlZnB5JG3KUrWzNCB3yNNkRa2FZkqClaBgfNYCp8PgpYmpjkZw==} + tldts-core@7.0.16: + resolution: {integrity: sha512-XHhPmHxphLi+LGbH0G/O7dmUH9V65OY20R7vH8gETHsp5AZCjBk9l8sqmRKLaGOxnETU7XNSDUPtewAy/K6jbA==} - tldts@7.0.15: - resolution: {integrity: sha512-heYRCiGLhtI+U/D0V8YM3QRwPfsLJiP+HX+YwiHZTnWzjIKC+ZCxQRYlzvOoTEc6KIP62B1VeAN63diGCng2hg==} + tldts@7.0.16: + resolution: {integrity: sha512-5bdPHSwbKTeHmXrgecID4Ljff8rQjv7g8zKQPkCozRo2HWWni+p310FSn5ImI+9kWw9kK4lzOB5q/a6iv0IJsw==} hasBin: true tmp@0.2.3: @@ -4843,8 +5063,8 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x - typescript-eslint@8.44.1: - resolution: {integrity: sha512-0ws8uWGrUVTjEeN2OM4K1pLKHK/4NiNP/vz6ns+LjT/6sqpaYzIVFajZb1fj/IDwpsrrHb3Jy0Qm5u9CPcKaeg==} + typescript-eslint@8.45.0: + resolution: {integrity: sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4855,8 +5075,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.9.2: - resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -5136,8 +5356,8 @@ packages: peerDependencies: zod: ^3.18.0 - zod@3.25.72: - resolution: {integrity: sha512-Cl+fe4dNL4XumOBNBsr0lHfA80PQiZXHI4xEMTEr8gt6aGz92t3lBA32e71j9+JeF/VAYvdfBnuwJs+BMx/BrA==} + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} zod@4.1.11: resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} @@ -5148,34 +5368,83 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 - '@asamuzakjp/css-color@4.0.4': + '@asamuzakjp/css-color@4.0.5': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.1 + lru-cache: 11.2.2 - '@asamuzakjp/dom-selector@6.5.5': + '@asamuzakjp/dom-selector@6.5.6': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.2 '@asamuzakjp/nwsapi@2.3.9': {} + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/compat-data@7.26.8': {} + '@babel/compat-data@7.28.0': {} + '@babel/core@7.26.10': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.28.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/core@7.28.4': dependencies: '@babel/code-frame': 7.27.1 @@ -5196,6 +5465,30 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/generator@7.26.9': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.26.9 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/generator@7.27.0': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/generator@7.28.0': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + jsesc: 3.1.0 + '@babel/generator@7.28.3': dependencies: '@babel/parser': 7.28.4 @@ -5206,7 +5499,15 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.27.0 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -5216,15 +5517,15 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.28.4)': + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.28.4) + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.27.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -5233,19 +5534,44 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.18.6': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.0 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -5260,52 +5586,82 @@ snapshots: '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.27.0 + + '@babel/helper-plugin-utils@7.26.5': {} '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.26.5(@babel/core@7.28.4)': + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.26.10 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-validator-option@7.27.1': {} + '@babel/helpers@7.27.0': + dependencies: + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/helpers@7.27.6': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.0 + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 '@babel/types': 7.28.4 + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@babel/parser@7.28.0': + dependencies: + '@babel/types': 7.28.0 + + '@babel/parser@7.28.3': + dependencies: + '@babel/types': 7.28.2 + '@babel/parser@7.28.4': dependencies: '@babel/types': 7.28.4 - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.4)': + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.28.4) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.28.4)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': @@ -5322,11 +5678,59 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/template@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.28.0 + '@babel/types': 7.26.9 + + '@babel/template@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.28.0 + '@babel/types': 7.27.0 + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + + '@babel/traverse@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/parser': 7.28.0 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.28.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.0 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color '@babel/traverse@7.28.4': dependencies: @@ -5340,7 +5744,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.28.4': + '@babel/types@7.26.9': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@babel/types@7.28.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@babel/types@7.28.2': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -5631,29 +6050,28 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@eslint-react/ast@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@eslint-react/eff': 1.53.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) string-ts: 2.2.1 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/core@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/core@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) birecord: 0.1.1 ts-pattern: 5.8.0 transitivePeerDependencies: @@ -5663,43 +6081,41 @@ snapshots: '@eslint-react/eff@2.0.4': {} - '@eslint-react/eslint-plugin@1.53.1(eslint@9.36.0(jiti@2.6.0))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2)': + '@eslint-react/eslint-plugin@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-react-debug: 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint-plugin-react-dom: 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint-plugin-react-hooks-extra: 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint-plugin-react-naming-convention: 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint-plugin-react-web-api: 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - eslint-plugin-react-x: 1.53.1(eslint@9.36.0(jiti@2.6.0))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2) - optionalDependencies: - typescript: 5.9.2 + eslint-plugin-react-debug: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + eslint-plugin-react-dom: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + eslint-plugin-react-hooks-extra: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + eslint-plugin-react-naming-convention: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + eslint-plugin-react-web-api: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + eslint-plugin-react-x: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@eslint-react/kit@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@eslint-react/kit@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@eslint-react/eff': 1.53.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - ts-pattern: 5.8.0 - zod: 4.1.11 + '@eslint-react/eff': 2.0.4 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@eslint-react/shared@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) ts-pattern: 5.8.0 zod: 4.1.11 transitivePeerDependencies: @@ -5707,14 +6123,13 @@ snapshots: - supports-color - typescript - '@eslint-react/var@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@eslint-react/var@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - string-ts: 2.2.1 + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) ts-pattern: 5.8.0 transitivePeerDependencies: - eslint @@ -5799,10 +6214,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.29 - '@jridgewell/remapping@2.3.5': + '@jridgewell/gen-mapping@0.3.8': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/remapping@2.3.5': dependencies: @@ -5811,8 +6227,15 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -5881,7 +6304,7 @@ snapshots: dependencies: '@emnapi/core': 1.5.0 '@emnapi/runtime': 1.5.0 - '@tybys/wasm-util': 0.10.1 + '@tybys/wasm-util': 0.10.0 optional: true '@napi-rs/wasm-runtime@0.2.4': @@ -5909,34 +6332,34 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@nx/nx-darwin-arm64@21.5.3': + '@nx/nx-darwin-arm64@21.5.2': optional: true - '@nx/nx-darwin-x64@21.5.3': + '@nx/nx-darwin-x64@21.5.2': optional: true - '@nx/nx-freebsd-x64@21.5.3': + '@nx/nx-freebsd-x64@21.5.2': optional: true - '@nx/nx-linux-arm-gnueabihf@21.5.3': + '@nx/nx-linux-arm-gnueabihf@21.5.2': optional: true - '@nx/nx-linux-arm64-gnu@21.5.3': + '@nx/nx-linux-arm64-gnu@21.5.2': optional: true - '@nx/nx-linux-arm64-musl@21.5.3': + '@nx/nx-linux-arm64-musl@21.5.2': optional: true - '@nx/nx-linux-x64-gnu@21.5.3': + '@nx/nx-linux-x64-gnu@21.5.2': optional: true - '@nx/nx-linux-x64-musl@21.5.3': + '@nx/nx-linux-x64-musl@21.5.2': optional: true - '@nx/nx-win32-arm64-msvc@21.5.3': + '@nx/nx-win32-arm64-msvc@21.5.2': optional: true - '@nx/nx-win32-x64-msvc@21.5.3': + '@nx/nx-win32-x64-msvc@21.5.2': optional: true '@oxc-resolver/binding-android-arm-eabi@11.8.4': @@ -6158,7 +6581,7 @@ snapshots: '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.0))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/types': 8.45.0 eslint: 9.36.0(jiti@2.6.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -6176,12 +6599,12 @@ snapshots: transitivePeerDependencies: - encoding - '@tanstack/config@0.20.3(@types/node@24.3.1)(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/config@0.20.3(@types/node@24.6.0)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: - '@tanstack/eslint-config': 0.3.2(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@tanstack/eslint-config': 0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@tanstack/publish-config': 0.2.1 - '@tanstack/typedoc-config': 0.2.1(typescript@5.9.2) - '@tanstack/vite-config': 0.3.0(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + '@tanstack/typedoc-config': 0.2.1(typescript@5.9.3) + '@tanstack/vite-config': 0.3.0(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - '@typescript-eslint/utils' @@ -6222,14 +6645,14 @@ snapshots: - csstype - utf-8-validate - '@tanstack/eslint-config@0.3.2(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@tanstack/eslint-config@0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@eslint/js': 9.36.0 '@stylistic/eslint-plugin': 5.4.0(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-n: 17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-n: 17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) globals: 16.4.0 - typescript-eslint: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + typescript-eslint: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) vue-eslint-parser: 10.2.0(eslint@9.36.0(jiti@2.6.0)) transitivePeerDependencies: - '@typescript-eslint/utils' @@ -6257,11 +6680,11 @@ snapshots: '@tanstack/query-devtools@5.90.1': {} - '@tanstack/react-devtools@0.7.0(@types/react-dom@19.1.9(@types/react@19.1.15))(@types/react@19.1.15)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)': + '@tanstack/react-devtools@0.7.0(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)': dependencies: '@tanstack/devtools': 0.6.14(csstype@3.1.3)(solid-js@1.9.9) - '@types/react': 19.1.15 - '@types/react-dom': 19.1.9(@types/react@19.1.15) + '@types/react': 19.1.16 + '@types/react-dom': 19.1.9(@types/react@19.1.16) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) transitivePeerDependencies: @@ -6294,13 +6717,20 @@ snapshots: '@tanstack/query-core': 5.90.2 react: 19.1.1 - '@tanstack/react-store@0.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@tanstack/react-store@0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/store': 0.7.7 + '@tanstack/store': 0.7.5 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) use-sync-external-store: 1.5.0(react@19.1.1) + '@tanstack/react-store@0.7.7(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/store': 0.7.7 + react: 19.1.1 + react-dom: 19.1.0(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) + '@tanstack/solid-devtools@0.7.0(csstype@3.1.3)(solid-js@1.9.9)': dependencies: '@tanstack/devtools': 0.6.14(csstype@3.1.3)(solid-js@1.9.9) @@ -6315,22 +6745,24 @@ snapshots: '@tanstack/store': 0.7.7 solid-js: 1.9.9 + '@tanstack/store@0.7.5': {} + '@tanstack/store@0.7.7': {} - '@tanstack/typedoc-config@0.2.1(typescript@5.9.2)': + '@tanstack/typedoc-config@0.2.1(typescript@5.9.3)': dependencies: - typedoc: 0.27.9(typescript@5.9.2) - typedoc-plugin-frontmatter: 1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2))) - typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.2)) + typedoc: 0.27.9(typescript@5.9.3) + typedoc-plugin-frontmatter: 1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.3))) + typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.3)) transitivePeerDependencies: - typescript - '@tanstack/vite-config@0.3.0(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/vite-config@0.3.0(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: rollup-plugin-preserve-directives: 0.4.0(rollup@4.44.1) - vite-plugin-dts: 4.2.3(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) - vite-plugin-externalize-deps: 0.9.0(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) - vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-dts: 4.2.3(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-externalize-deps: 0.9.0(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-tsconfig-paths: 5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - rollup @@ -6347,7 +6779,7 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@tybys/wasm-util@0.10.1': + '@tybys/wasm-util@0.10.0': dependencies: tslib: 2.8.1 optional: true @@ -6365,24 +6797,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.27.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.0 + '@babel/types': 7.27.0 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.27.0 '@types/chai@5.2.2': dependencies: @@ -6408,107 +6840,117 @@ snapshots: dependencies: undici-types: 7.13.0 - '@types/react-dom@19.1.9(@types/react@19.1.15)': + '@types/react-dom@19.1.7(@types/react@19.1.9)': dependencies: - '@types/react': 19.1.15 + '@types/react': 19.1.9 - '@types/react@19.1.15': + '@types/react-dom@19.1.9(@types/react@19.1.16)': + dependencies: + '@types/react': 19.1.16 + + '@types/react@19.1.16': + dependencies: + csstype: 3.1.3 + + '@types/react@19.1.9': dependencies: csstype: 3.1.3 '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.45.0 eslint: 9.36.0(jiti@2.6.0) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.1 eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.44.1(typescript@5.9.2)': + '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 debug: 4.4.1 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.44.1': + '@typescript-eslint/scope-manager@8.45.0': dependencies: - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 - '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.3)': dependencies: - typescript: 5.9.2 + typescript: 5.9.3 - '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) debug: 4.4.1 eslint: 9.36.0(jiti@2.6.0) - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.44.1': {} + '@typescript-eslint/types@8.43.0': {} + + '@typescript-eslint/types@8.45.0': {} - '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.44.1(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.44.1': + '@typescript-eslint/visitor-keys@8.45.0': dependencies: - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/types': 8.45.0 eslint-visitor-keys: 4.2.1 '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -6570,7 +7012,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -6578,7 +7020,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.38 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -6590,13 +7032,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -6638,7 +7080,7 @@ snapshots: '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.3 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -6654,7 +7096,7 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@2.1.6(typescript@5.9.2)': + '@vue/language-core@2.1.6(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.12 '@vue/compiler-dom': 3.5.13 @@ -6665,7 +7107,7 @@ snapshots: muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@vue/shared@3.5.13': {} @@ -6758,20 +7200,20 @@ snapshots: axobject-query@4.1.0: {} - babel-plugin-jsx-dom-expressions@0.39.7(@babel/core@7.28.4): + babel-plugin-jsx-dom-expressions@0.39.7(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.28.4) - '@babel/types': 7.28.4 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.28.0) + '@babel/types': 7.28.0 html-entities: 2.3.3 - parse5: 7.3.0 + parse5: 7.2.1 validate-html-nesting: 1.2.2 - babel-preset-solid@1.9.5(@babel/core@7.28.4): + babel-preset-solid@1.9.5(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.4 - babel-plugin-jsx-dom-expressions: 0.39.7(@babel/core@7.28.4) + '@babel/core': 7.28.0 + babel-plugin-jsx-dom-expressions: 0.39.7(@babel/core@7.28.0) balanced-match@1.0.2: {} @@ -6838,7 +7280,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.4 + loupe: 3.1.3 pathval: 2.0.0 chalk@4.1.2: @@ -6869,7 +7311,7 @@ snapshots: domutils: 3.2.2 encoding-sniffer: 0.2.0 htmlparser2: 9.1.0 - parse5: 7.3.0 + parse5: 7.2.1 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 undici: 6.21.3 @@ -6960,7 +7402,7 @@ snapshots: cssstyle@5.3.1(postcss@8.5.6): dependencies: - '@asamuzakjp/css-color': 4.0.4 + '@asamuzakjp/css-color': 4.0.5 '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) css-tree: 3.1.0 transitivePeerDependencies: @@ -6984,6 +7426,10 @@ snapshots: ms: 2.1.3 optional: true + debug@4.4.0: + dependencies: + ms: 2.1.3 + debug@4.4.1: dependencies: ms: 2.1.3 @@ -7154,9 +7600,9 @@ snapshots: eslint: 9.36.0(jiti@2.6.0) eslint-compat-utils: 0.5.1(eslint@9.36.0(jiti@2.6.0)) - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): dependencies: - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/types': 8.43.0 comment-parser: 1.4.1 debug: 4.4.1 eslint: 9.36.0(jiti@2.6.0) @@ -7167,12 +7613,12 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + eslint-plugin-n@17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) enhanced-resolve: 5.18.1 @@ -7183,76 +7629,76 @@ snapshots: globrex: 0.1.2 ignore: 5.3.2 semver: 7.7.2 - ts-declaration-location: 1.0.7(typescript@5.9.2) + ts-declaration-location: 1.0.7(typescript@5.9.3) transitivePeerDependencies: - typescript eslint-plugin-react-compiler@19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)): dependencies: - '@babel/core': 7.28.4 - '@babel/parser': 7.28.4 - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.4) + '@babel/core': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.10) eslint: 9.36.0(jiti@2.6.0) hermes-parser: 0.25.1 - zod: 3.25.72 - zod-validation-error: 3.4.0(zod@3.25.72) + zod: 3.24.2 + zod-validation-error: 3.4.0(zod@3.24.2) transitivePeerDependencies: - supports-color - eslint-plugin-react-debug@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-debug@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-dom@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) compare-versions: 6.1.1 eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-hooks-extra@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -7260,70 +7706,70 @@ snapshots: dependencies: eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-react-naming-convention@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-naming-convention@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-web-api@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) string-ts: 2.2.1 ts-pattern: 5.8.0 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.53.1(eslint@9.36.0(jiti@2.6.0))(ts-api-utils@2.1.0(typescript@5.9.2))(typescript@5.9.2): - dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/core': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/shared': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@eslint-react/var': 1.53.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint-plugin-react-x@2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/core': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/eff': 2.0.4 + '@eslint-react/kit': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/shared': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@eslint-react/var': 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) compare-versions: 6.1.1 eslint: 9.36.0(jiti@2.6.0) - is-immutable-type: 5.0.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + is-immutable-type: 5.0.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) string-ts: 2.2.1 - ts-api-utils: 2.1.0(typescript@5.9.2) + ts-api-utils: 2.1.0(typescript@5.9.3) ts-pattern: 5.8.0 - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)): dependencies: eslint: 9.36.0(jiti@2.6.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint-scope@8.4.0: dependencies: @@ -7434,6 +7880,10 @@ snapshots: dependencies: walk-up-path: 4.0.0 + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -7539,6 +7989,8 @@ snapshots: dependencies: is-glob: 4.0.3 + globals@11.12.0: {} + globals@14.0.0: {} globals@15.15.0: {} @@ -7656,13 +8108,13 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + is-immutable-type@5.0.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): dependencies: - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) - ts-api-utils: 2.1.0(typescript@5.9.2) - ts-declaration-location: 1.0.7(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + ts-declaration-location: 1.0.7(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -7705,6 +8157,8 @@ snapshots: chalk: 4.1.2 pretty-format: 30.0.2 + jiti@2.4.2: {} + jiti@2.6.0: {} jju@1.4.0: {} @@ -7724,7 +8178,7 @@ snapshots: jsdom@27.0.0(postcss@8.5.6): dependencies: - '@asamuzakjp/dom-selector': 6.5.5 + '@asamuzakjp/dom-selector': 6.5.6 cssstyle: 5.3.1(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.5.0 @@ -7780,7 +8234,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - knip@5.64.1(@types/node@24.3.1)(typescript@5.9.2): + knip@5.64.1(@types/node@24.6.0)(typescript@5.9.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@types/node': 24.6.0 @@ -7794,7 +8248,7 @@ snapshots: picomatch: 4.0.3 smol-toml: 1.4.2 strip-json-comments: 5.0.2 - typescript: 5.9.2 + typescript: 5.9.3 zod: 4.1.11 kolorist@1.8.0: {} @@ -7838,9 +8292,11 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + loupe@3.1.3: {} + loupe@3.1.4: {} - lru-cache@11.2.1: {} + lru-cache@11.2.2: {} lru-cache@5.1.1: dependencies: @@ -7960,7 +8416,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nx@21.5.3: + nx@21.6.2: dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -7998,16 +8454,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 21.5.3 - '@nx/nx-darwin-x64': 21.5.3 - '@nx/nx-freebsd-x64': 21.5.3 - '@nx/nx-linux-arm-gnueabihf': 21.5.3 - '@nx/nx-linux-arm64-gnu': 21.5.3 - '@nx/nx-linux-arm64-musl': 21.5.3 - '@nx/nx-linux-x64-gnu': 21.5.3 - '@nx/nx-linux-x64-musl': 21.5.3 - '@nx/nx-win32-arm64-msvc': 21.5.3 - '@nx/nx-win32-x64-msvc': 21.5.3 + '@nx/nx-darwin-arm64': 21.5.2 + '@nx/nx-darwin-x64': 21.5.2 + '@nx/nx-freebsd-x64': 21.5.2 + '@nx/nx-linux-arm-gnueabihf': 21.5.2 + '@nx/nx-linux-arm64-gnu': 21.5.2 + '@nx/nx-linux-arm64-musl': 21.5.2 + '@nx/nx-linux-x64-gnu': 21.5.2 + '@nx/nx-linux-x64-musl': 21.5.2 + '@nx/nx-win32-arm64-msvc': 21.5.2 + '@nx/nx-win32-x64-msvc': 21.5.2 transitivePeerDependencies: - debug @@ -8108,15 +8564,15 @@ snapshots: parse5-htmlparser2-tree-adapter@7.1.0: dependencies: domhandler: 5.0.3 - parse5: 7.3.0 + parse5: 7.2.1 parse5-parser-stream@7.1.2: dependencies: - parse5: 7.3.0 + parse5: 7.2.1 - parse5@7.3.0: + parse5@7.2.1: dependencies: - entities: 6.0.1 + entities: 4.5.0 parse5@7.3.0: dependencies: @@ -8140,6 +8596,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.2: {} + picomatch@4.0.3: {} pify@4.0.1: {} @@ -8192,6 +8650,11 @@ snapshots: queue-microtask@1.2.3: {} + react-dom@19.1.0(react@19.1.1): + dependencies: + react: 19.1.1 + scheduler: 0.26.0 + react-dom@19.1.1(react@19.1.1): dependencies: react: 19.1.1 @@ -8367,27 +8830,42 @@ snapshots: dependencies: bytes-iec: 3.1.1 chokidar: 4.0.3 - jiti: 2.6.0 + jiti: 2.4.2 lilconfig: 3.1.3 nanospinner: 1.2.2 picocolors: 1.1.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.12 slash@3.0.0: {} smol-toml@1.4.2: {} + solid-js@1.9.7: + dependencies: + csstype: 3.1.3 + seroval: 1.3.2 + seroval-plugins: 1.3.2(seroval@1.3.2) + solid-js@1.9.9: dependencies: csstype: 3.1.3 seroval: 1.3.2 seroval-plugins: 1.3.2(seroval@1.3.2) + solid-refresh@0.6.3(solid-js@1.9.7): + dependencies: + '@babel/generator': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/types': 7.28.0 + solid-js: 1.9.7 + transitivePeerDependencies: + - supports-color + solid-refresh@0.6.3(solid-js@1.9.9): dependencies: - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.0 '@babel/helper-module-imports': 7.27.1 - '@babel/types': 7.28.4 + '@babel/types': 7.28.0 solid-js: 1.9.9 transitivePeerDependencies: - supports-color @@ -8492,6 +8970,16 @@ snapshots: tinyexec@0.3.2: {} + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + + tinyglobby@0.2.14: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -8503,11 +8991,11 @@ snapshots: tinyspy@4.0.3: {} - tldts-core@7.0.15: {} + tldts-core@7.0.16: {} - tldts@7.0.15: + tldts@7.0.16: dependencies: - tldts-core: 7.0.15 + tldts-core: 7.0.16 tmp@0.2.3: {} @@ -8517,7 +9005,7 @@ snapshots: tough-cookie@6.0.0: dependencies: - tldts: 7.0.15 + tldts: 7.0.16 tr46@0.0.3: {} @@ -8527,20 +9015,20 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.9.2): + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 - ts-declaration-location@1.0.7(typescript@5.9.2): + ts-declaration-location@1.0.7(typescript@5.9.3): dependencies: picomatch: 4.0.3 - typescript: 5.9.2 + typescript: 5.9.3 ts-pattern@5.8.0: {} - tsconfck@3.1.5(typescript@5.9.2): + tsconfck@3.1.5(typescript@5.9.3): optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 tsconfig-paths@4.2.0: dependencies: @@ -8562,38 +9050,38 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typedoc-plugin-frontmatter@1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2))): + typedoc-plugin-frontmatter@1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.3))): dependencies: - typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.2)) + typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.3)) yaml: 2.8.0 - typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2)): + typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.3)): dependencies: - typedoc: 0.27.9(typescript@5.9.2) + typedoc: 0.27.9(typescript@5.9.3) - typedoc@0.27.9(typescript@5.9.2): + typedoc@0.27.9(typescript@5.9.3): dependencies: '@gerrit0/mini-shiki': 1.27.2 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - typescript: 5.9.2 + typescript: 5.9.3 yaml: 2.8.0 - typescript-eslint@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): + typescript-eslint@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color typescript@5.4.2: {} - typescript@5.9.2: {} + typescript@5.9.3: {} uc.micro@2.1.0: {} @@ -8649,13 +9137,13 @@ snapshots: validate-html-nesting@1.2.2: {} - vite-node@3.2.4(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -8670,56 +9158,71 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.2.3(@types/node@24.3.1)(rollup@4.44.1)(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-dts@4.2.3(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@microsoft/api-extractor': 7.47.7(@types/node@24.6.0) '@rollup/pluginutils': 5.1.4(rollup@4.44.1) '@volar/typescript': 2.4.12 - '@vue/language-core': 2.1.6(typescript@5.9.2) + '@vue/language-core': 2.1.6(typescript@5.9.3) compare-versions: 6.1.1 debug: 4.4.1 kolorist: 1.8.0 local-pkg: 0.5.1 magic-string: 0.30.17 - typescript: 5.9.2 + typescript: 5.9.3 optionalDependencies: - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.9.0(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-externalize-deps@0.9.0(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.9.5(@babel/core@7.28.4) + babel-preset-solid: 1.9.5(@babel/core@7.28.0) + merge-anything: 5.1.7 + solid-js: 1.9.7 + solid-refresh: 0.6.3(solid-js@1.9.7) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + optionalDependencies: + '@testing-library/jest-dom': 6.9.0 + transitivePeerDependencies: + - supports-color + + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + dependencies: + '@babel/core': 7.28.0 + '@types/babel__core': 7.20.5 + babel-preset-solid: 1.9.5(@babel/core@7.28.0) merge-anything: 5.1.7 solid-js: 1.9.9 solid-refresh: 0.6.3(solid-js@1.9.9) - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: '@testing-library/jest-dom': 6.9.0 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 - tsconfck: 3.1.5(typescript@5.9.2) + tsconfck: 3.1.5(typescript@5.9.3) optionalDependencies: - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): + vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: esbuild: 0.25.0 fdir: 6.5.0(picomatch@4.0.3) @@ -8734,15 +9237,15 @@ snapshots: tsx: 4.19.3 yaml: 2.8.0 - vitefu@1.0.6(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vitefu@1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): optionalDependencies: - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vitest@3.2.4(@types/node@24.3.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0): + vitest@3.2.4(@types/node@24.6.0)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -8753,18 +9256,18 @@ snapshots: expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.2 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.7(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.3.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.3.1 + '@types/node': 24.6.0 jsdom: 27.0.0(postcss@8.5.6) transitivePeerDependencies: - jiti @@ -8873,10 +9376,10 @@ snapshots: zimmerframe@1.1.2: {} - zod-validation-error@3.4.0(zod@3.25.72): + zod-validation-error@3.4.0(zod@3.24.2): dependencies: - zod: 3.25.72 + zod: 3.24.2 - zod@3.25.72: {} + zod@3.24.2: {} zod@4.1.11: {} From 0fe793958c67fba9f900e38b2bc7d26b4a08aa2f Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 1 Oct 2025 12:57:55 -0500 Subject: [PATCH 40/44] clean up retry error tests --- examples/react/asyncBatch/src/index.tsx | 2 +- examples/react/useAsyncBatcher/src/index.tsx | 2 +- .../react/useAsyncQueuedState/src/index.tsx | 2 +- examples/react/useAsyncQueuer/src/index.tsx | 2 +- examples/react/useAsyncRetryer/package.json | 2 +- examples/react/useAsyncRetryer/src/index.tsx | 6 +- examples/solid/asyncBatch/src/index.tsx | 2 +- .../solid/createAsyncBatcher/src/index.tsx | 2 +- package.json | 2 +- packages/pacer/src/async-batcher.ts | 15 +- packages/pacer/src/async-debouncer.ts | 6 +- packages/pacer/src/async-queuer.ts | 6 +- packages/pacer/src/async-rate-limiter.ts | 18 +- packages/pacer/src/async-retryer.ts | 12 +- packages/pacer/src/async-throttler.ts | 6 +- packages/pacer/tests/async-batcher.test.ts | 18 +- packages/pacer/tests/async-retryer.test.ts | 28 +- .../src/async-batcher/useAsyncBatcher.ts | 2 +- .../src/async-debouncer/useAsyncDebouncer.ts | 2 +- .../src/async-queuer/useAsyncQueuer.ts | 2 +- .../async-rate-limiter/useAsyncRateLimiter.ts | 2 +- .../src/async-retryer/useAsyncRetryer.ts | 2 +- .../src/async-throttler/useAsyncThrottler.ts | 2 +- .../react-pacer/src/batcher/useBatcher.ts | 2 +- .../react-pacer/src/debouncer/useDebouncer.ts | 2 +- .../src/provider/PacerProvider.tsx | 16 +- packages/react-pacer/src/queuer/useQueuer.ts | 2 +- .../src/rate-limiter/useRateLimiter.ts | 2 +- .../react-pacer/src/throttler/useThrottler.ts | 2 +- pnpm-lock.yaml | 452 ++++++++---------- 30 files changed, 289 insertions(+), 332 deletions(-) diff --git a/examples/react/asyncBatch/src/index.tsx b/examples/react/asyncBatch/src/index.tsx index be35e2b1..10e19a77 100644 --- a/examples/react/asyncBatch/src/index.tsx +++ b/examples/react/asyncBatch/src/index.tsx @@ -53,7 +53,7 @@ function App() { } catch (error: any) { setErrors((prev) => [ ...prev, - `Error: ${error.message} (${new Date().toLocaleTimeString()})`, + `Error: ${error} (${new Date().toLocaleTimeString()})`, ]) setErrorCount((prev) => prev + 1) console.error('Batch failed:', error) diff --git a/examples/react/useAsyncBatcher/src/index.tsx b/examples/react/useAsyncBatcher/src/index.tsx index 7ebff2dc..95004f53 100644 --- a/examples/react/useAsyncBatcher/src/index.tsx +++ b/examples/react/useAsyncBatcher/src/index.tsx @@ -61,7 +61,7 @@ function App() { console.error('Batch failed:', error) setErrors((prev) => [ ...prev, - `Error: ${error.message} (${new Date().toLocaleTimeString()})`, + `Error: ${error} (${new Date().toLocaleTimeString()})`, ]) }, onSettled: (batch, batcher) => { diff --git a/examples/react/useAsyncQueuedState/src/index.tsx b/examples/react/useAsyncQueuedState/src/index.tsx index 0153e792..0c2e5ead 100644 --- a/examples/react/useAsyncQueuedState/src/index.tsx +++ b/examples/react/useAsyncQueuedState/src/index.tsx @@ -31,7 +31,7 @@ function App() { asyncQueuer.store.state.rejectionCount, ) }, - onError: (error: unknown, item: Item, asyncQueuer) => { + onError: (error, item: Item, asyncQueuer) => { console.error( `Error processing item: ${item}`, error, diff --git a/examples/react/useAsyncQueuer/src/index.tsx b/examples/react/useAsyncQueuer/src/index.tsx index b59f23a0..4c611363 100644 --- a/examples/react/useAsyncQueuer/src/index.tsx +++ b/examples/react/useAsyncQueuer/src/index.tsx @@ -31,7 +31,7 @@ function App() { asyncQueuer.store.state.rejectionCount, ) }, - onError: (error: unknown, item: Item, asyncQueuer) => { + onError: (error, item: Item, asyncQueuer) => { console.error( `Error processing item: ${item}`, error, diff --git a/examples/react/useAsyncRetryer/package.json b/examples/react/useAsyncRetryer/package.json index f99314ad..52ccc5b3 100644 --- a/examples/react/useAsyncRetryer/package.json +++ b/examples/react/useAsyncRetryer/package.json @@ -9,7 +9,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/react-pacer": "^0.14.0", + "@tanstack/react-pacer": "^0.16.4", "react": "^19.1.1", "react-dom": "^19.1.1" }, diff --git a/examples/react/useAsyncRetryer/src/index.tsx b/examples/react/useAsyncRetryer/src/index.tsx index b295750b..be0630f1 100644 --- a/examples/react/useAsyncRetryer/src/index.tsx +++ b/examples/react/useAsyncRetryer/src/index.tsx @@ -43,13 +43,13 @@ function App() { backoff: 'exponential', // Exponential backoff (1s, 2s, 4s, 8s, 16s) baseWait: 1000, // Start with 1 second wait onRetry: (attempt, error) => { - console.log(`Retry attempt ${attempt} after error:`, error.message) + console.log(`Retry attempt ${attempt} after error:`, error) }, onError: (error) => { - console.error('Request failed:', error.message) + console.error('Request failed:', error) }, onLastError: (error) => { - console.error('All retries failed:', error.message) + console.error('All retries failed:', error) setUserData(null) }, onSuccess: (result) => { diff --git a/examples/solid/asyncBatch/src/index.tsx b/examples/solid/asyncBatch/src/index.tsx index 9d6c3435..9e4ee525 100644 --- a/examples/solid/asyncBatch/src/index.tsx +++ b/examples/solid/asyncBatch/src/index.tsx @@ -52,7 +52,7 @@ function App() { } catch (error: any) { setErrors((prev) => [ ...prev, - `Error: ${error.message} (${new Date().toLocaleTimeString()})`, + `Error: ${error} (${new Date().toLocaleTimeString()})`, ]) setErrorCount((prev) => prev + 1) console.error('Batch failed:', error) diff --git a/examples/solid/createAsyncBatcher/src/index.tsx b/examples/solid/createAsyncBatcher/src/index.tsx index 1f40d553..01c4b412 100644 --- a/examples/solid/createAsyncBatcher/src/index.tsx +++ b/examples/solid/createAsyncBatcher/src/index.tsx @@ -61,7 +61,7 @@ function App() { console.error('Batch failed:', error) setErrors((prev) => [ ...prev, - `Error: ${error.message} (${new Date().toLocaleTimeString()})`, + `Error: ${error} (${new Date().toLocaleTimeString()})`, ]) }, onSettled: (batch, batcher) => { diff --git a/package.json b/package.json index c83f0a74..d8f21a2f 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "@svitejs/changesets-changelog-github-compact": "^1.2.0", "@tanstack/config": "0.20.3", "@testing-library/jest-dom": "^6.9.0", - "@types/node": "^24.6.0", + "@types/node": "^24.6.1", "eslint": "^9.36.0", "eslint-plugin-unused-imports": "^4.2.0", "fast-glob": "^3.3.3", diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index 04b5c38e..6d8207ec 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -1,8 +1,8 @@ import { Store } from '@tanstack/store' import { AsyncRetryer } from './async-retryer' -import type { AsyncRetryerOptions } from './async-retryer' import { createKey, parseFunctionOrValue } from './utils' import { emitChange, pacerEventClient } from './event-client' +import type { AsyncRetryerOptions } from './async-retryer' import type { OptionalKeys } from './types' export interface AsyncBatcherState { @@ -116,7 +116,7 @@ export interface AsyncBatcherOptions { * This can be used alongside throwOnError - the handler will be called before any error is thrown. */ onError?: ( - error: unknown, + error: Error, batch: Array, batcher: AsyncBatcher, ) => void @@ -314,8 +314,12 @@ export class AsyncBatcher { /** * Adds an item to the async batcher * If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed + * + * @returns The result from the batch function, or undefined if an error occurred and was handled by onError + * + * @throws The error from the batch function if no onError handler is configured or throwOnError is true */ - addItem = (item: TValue): void => { + addItem = async (item: TValue): Promise => { this.#setState({ items: [...this.store.state.items, item], isPending: this.options.wait !== Infinity, @@ -327,10 +331,11 @@ export class AsyncBatcher { this.options.getShouldExecute(this.store.state.items, this) if (shouldProcess) { - this.#execute() + return await this.#execute() } else if (this.options.wait !== Infinity) { this.#clearTimeout() // clear any pending timeout to replace it with a new one this.#timeoutId = setTimeout(() => this.#execute(), this.#getWait()) + await new Promise((resolve) => setTimeout(resolve, this.#getWait())) } } @@ -373,7 +378,7 @@ export class AsyncBatcher { failedItems: [...this.store.state.failedItems, ...batch], totalItemsFailed: this.store.state.totalItemsFailed + batch.length, }) - this.options.onError?.(error, batch, this) + this.options.onError?.(error as Error, batch, this) if (this.options.throwOnError) { throw error } diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 11628673..8b26ad36 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -1,8 +1,8 @@ import { Store } from '@tanstack/store' import { AsyncRetryer } from './async-retryer' -import type { AsyncRetryerOptions } from './async-retryer' import { createKey, parseFunctionOrValue } from './utils' import { emitChange, pacerEventClient } from './event-client' +import type { AsyncRetryerOptions } from './async-retryer' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncDebouncerState { @@ -99,7 +99,7 @@ export interface AsyncDebouncerOptions { * This can be used alongside throwOnError - the handler will be called before any error is thrown. */ onError?: ( - error: unknown, + error: Error, args: Parameters, debouncer: AsyncDebouncer, ) => void @@ -356,7 +356,7 @@ export class AsyncDebouncer { this.#setState({ errorCount: this.store.state.errorCount + 1, }) - this.options.onError?.(error, args, this) + this.options.onError?.(error as Error, args, this) if (this.options.throwOnError) { throw error } diff --git a/packages/pacer/src/async-queuer.ts b/packages/pacer/src/async-queuer.ts index f86b87a6..7a2f60ce 100644 --- a/packages/pacer/src/async-queuer.ts +++ b/packages/pacer/src/async-queuer.ts @@ -1,8 +1,8 @@ import { Store } from '@tanstack/store' import { AsyncRetryer } from './async-retryer' -import type { AsyncRetryerOptions } from './async-retryer' import { createKey, parseFunctionOrValue } from './utils' import { emitChange, pacerEventClient } from './event-client' +import type { AsyncRetryerOptions } from './async-retryer' import type { OptionalKeys } from './types' import type { QueuePosition } from './queuer' @@ -158,7 +158,7 @@ export interface AsyncQueuerOptions { * If provided, the handler will be called with the error and queuer instance. * This can be used alongside throwOnError - the handler will be called before any error is thrown. */ - onError?: (error: unknown, item: TValue, queuer: AsyncQueuer) => void + onError?: (error: Error, item: TValue, queuer: AsyncQueuer) => void /** * Callback fired whenever an item expires in the queuer */ @@ -586,7 +586,7 @@ export class AsyncQueuer { this.#setState({ errorCount: this.store.state.errorCount + 1, }) - this.options.onError?.(error, item, this) + this.options.onError?.(error as Error, item, this) if (this.options.throwOnError) { throw error } diff --git a/packages/pacer/src/async-rate-limiter.ts b/packages/pacer/src/async-rate-limiter.ts index 4966e143..14ce4126 100644 --- a/packages/pacer/src/async-rate-limiter.ts +++ b/packages/pacer/src/async-rate-limiter.ts @@ -1,8 +1,8 @@ import { Store } from '@tanstack/store' import { AsyncRetryer } from './async-retryer' -import type { AsyncRetryerOptions } from './async-retryer' import { createKey, parseFunctionOrValue } from './utils' import { emitChange, pacerEventClient } from './event-client' +import type { AsyncRetryerOptions } from './async-retryer' import type { AnyAsyncFunction } from './types' export interface AsyncRateLimiterState { @@ -99,7 +99,7 @@ export interface AsyncRateLimiterOptions { * This can be used alongside throwOnError - the handler will be called before any error is thrown. */ onError?: ( - error: unknown, + error: Error, args: Parameters, rateLimiter: AsyncRateLimiter, ) => void @@ -228,7 +228,6 @@ export class AsyncRateLimiter { >(getDefaultAsyncRateLimiterState()) key: string options: AsyncRateLimiterOptions - asyncRetryer: AsyncRetryer #timeoutIds: Set = new Set() constructor( @@ -241,10 +240,6 @@ export class AsyncRateLimiter { ...initialOptions, throwOnError: initialOptions.throwOnError ?? !initialOptions.onError, } - this.asyncRetryer = new AsyncRetryer( - this.fn, - this.options.asyncRetryerOptions, - ) this.#setState(this.options.initialState ?? {}) for (const executionTime of this.#getExecutionTimesInWindow()) { this.#setCleanupTimeout(executionTime) @@ -374,7 +369,12 @@ export class AsyncRateLimiter { }) try { - const result = await this.asyncRetryer.execute(...args) // EXECUTE! + // Create a new AsyncRetryer for this execution to avoid cancelling concurrent executions + const asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) + const result = await asyncRetryer.execute(...args) // EXECUTE! this.#setCleanupTimeout(now) this.#setState({ successCount: this.store.state.successCount + 1, @@ -385,7 +385,7 @@ export class AsyncRateLimiter { this.#setState({ errorCount: this.store.state.errorCount + 1, }) - this.options.onError?.(error, args, this) + this.options.onError?.(error as Error, args, this) if (this.options.throwOnError) { throw error } diff --git a/packages/pacer/src/async-retryer.ts b/packages/pacer/src/async-retryer.ts index f1a905f3..eeb84d25 100644 --- a/packages/pacer/src/async-retryer.ts +++ b/packages/pacer/src/async-retryer.ts @@ -88,7 +88,7 @@ export interface AsyncRetryerOptions { * Callback invoked when any error occurs during execution (including retries) */ onError?: ( - error: unknown, + error: Error, args: Parameters, retryer: AsyncRetryer, ) => void @@ -315,6 +315,8 @@ export class AsyncRetryer { } result = (await this.fn(...args)) as ReturnType + // Check if cancelled during execution + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (signal.aborted) { return undefined as any } @@ -361,9 +363,7 @@ export class AsyncRetryer { }) if (signal.aborted) { // When cancelled during retry wait, surface the last error exactly once - if (lastError) { - this.options.onError?.(lastError, args, this) - } + this.options.onError?.(lastError, args, this) return undefined as any } } @@ -375,8 +375,8 @@ export class AsyncRetryer { // Exhausted retries - finalize state this.#setState({ isExecuting: false }) - this.options.onLastError?.(lastError!, this) - this.options.onError?.(lastError!, args, this) + this.options.onLastError?.(lastError as Error, this) + this.options.onError?.(lastError as Error, args, this) this.options.onSettled?.(args, this) if ( diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index f414ddfd..502fb566 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -1,8 +1,8 @@ import { Store } from '@tanstack/store' import { AsyncRetryer } from './async-retryer' -import type { AsyncRetryerOptions } from './async-retryer' import { createKey, parseFunctionOrValue } from './utils' import { emitChange, pacerEventClient } from './event-client' +import type { AsyncRetryerOptions } from './async-retryer' import type { AnyAsyncFunction, OptionalKeys } from './types' export interface AsyncThrottlerState { @@ -104,7 +104,7 @@ export interface AsyncThrottlerOptions { * This can be used alongside throwOnError - the handler will be called before any error is thrown. */ onError?: ( - error: unknown, + error: Error, args: Parameters, asyncThrottler: AsyncThrottler, ) => void @@ -380,7 +380,7 @@ export class AsyncThrottler { this.#setState({ errorCount: this.store.state.errorCount + 1, }) - this.options.onError?.(error, args, this) + this.options.onError?.(error as Error, args, this) if (this.options.throwOnError) { throw error } diff --git a/packages/pacer/tests/async-batcher.test.ts b/packages/pacer/tests/async-batcher.test.ts index 4be62363..6ac6898c 100644 --- a/packages/pacer/tests/async-batcher.test.ts +++ b/packages/pacer/tests/async-batcher.test.ts @@ -71,20 +71,20 @@ describe('AsyncBatcher', () => { }) it('should track execution state during async processing', async () => { - let resolvePromise: (value: any) => void - const promise = new Promise((resolve) => { - resolvePromise = resolve - }) - const mockFn = vi.fn().mockReturnValue(promise) - const batcher = new AsyncBatcher(mockFn, { maxSize: 1 }) + const mockFn = vi.fn().mockResolvedValue('result') + const batcher = new AsyncBatcher(mockFn, { maxSize: 2 }) + // Add item without triggering execution (since maxSize is 2) batcher.addItem(1) + expect(batcher.store.state.isExecuting).toBe(false) + expect(batcher.store.state.status).toBe('populated') + + // Use flush to trigger execution and wait for completion + const executionPromise = batcher.flush() expect(batcher.store.state.isExecuting).toBe(true) expect(batcher.store.state.status).toBe('executing') - resolvePromise!('result') - await promise - + await executionPromise expect(batcher.store.state.isExecuting).toBe(false) expect(batcher.store.state.status).toBe('idle') }) diff --git a/packages/pacer/tests/async-retryer.test.ts b/packages/pacer/tests/async-retryer.test.ts index 8fbb81c3..77eb1e69 100644 --- a/packages/pacer/tests/async-retryer.test.ts +++ b/packages/pacer/tests/async-retryer.test.ts @@ -160,23 +160,17 @@ describe('AsyncRetryer', () => { }) it('should fail after exhausting all retries', async () => { - const error = new Error('Persistent failure') - const mockFn = vi.fn().mockRejectedValue(error) + const mockFn = vi.fn().mockRejectedValue(new Error('Persistent failure')) const retryer = new AsyncRetryer(mockFn, { maxAttempts: 2, - baseWait: 100, + baseWait: 0, // No delay to avoid timer issues throwOnError: 'last', }) - const executePromise = retryer.execute() + await expect(retryer.execute()).rejects.toThrow('Persistent failure') - // Complete first retry - await vi.runOnlyPendingTimersAsync() - vi.advanceTimersByTime(100) - - await expect(executePromise).rejects.toThrow('Persistent failure') expect(mockFn).toHaveBeenCalledTimes(2) - expect(retryer.store.state.lastError).toBe(error) + expect(retryer.store.state.lastError?.message).toBe('Persistent failure') expect(retryer.store.state.status).toBe('idle') }) }) @@ -275,23 +269,15 @@ describe('AsyncRetryer', () => { }) it('should throw after retries when throwOnError is true', async () => { - const error = new Error('Test error') - const mockFn = vi.fn().mockRejectedValue(error) + const mockFn = vi.fn().mockRejectedValue(new Error('Test error')) const retryer = new AsyncRetryer(mockFn, { maxAttempts: 3, - baseWait: 100, + baseWait: 0, // No delay to avoid timer issues throwOnError: true, }) - const executePromise = retryer.execute() - - // Advance through all retries - await vi.runOnlyPendingTimersAsync() - vi.advanceTimersByTime(100) // First retry - await vi.runOnlyPendingTimersAsync() - vi.advanceTimersByTime(200) // Second retry + await expect(retryer.execute()).rejects.toThrow('Test error') - await expect(executePromise).rejects.toThrow('Test error') expect(mockFn).toHaveBeenCalledTimes(3) // Should still retry but throw at end }) diff --git a/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts b/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts index c008aead..1d0f32c5 100644 --- a/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts +++ b/packages/react-pacer/src/async-batcher/useAsyncBatcher.ts @@ -1,12 +1,12 @@ import { useMemo, useState } from 'react' import { AsyncBatcher } from '@tanstack/pacer/async-batcher' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { AsyncBatcherOptions, AsyncBatcherState, } from '@tanstack/pacer/async-batcher' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncBatcher extends Omit, 'store'> { diff --git a/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts b/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts index 162ca21d..36b8ae99 100644 --- a/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts +++ b/packages/react-pacer/src/async-debouncer/useAsyncDebouncer.ts @@ -1,13 +1,13 @@ import { useEffect, useMemo, useState } from 'react' import { AsyncDebouncer } from '@tanstack/pacer/async-debouncer' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { AnyAsyncFunction } from '@tanstack/pacer/types' import type { AsyncDebouncerOptions, AsyncDebouncerState, } from '@tanstack/pacer/async-debouncer' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncDebouncer< TFn extends AnyAsyncFunction, diff --git a/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts b/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts index 4a3c2dc9..0d88f364 100644 --- a/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts +++ b/packages/react-pacer/src/async-queuer/useAsyncQueuer.ts @@ -1,12 +1,12 @@ import { useMemo, useState } from 'react' import { AsyncQueuer } from '@tanstack/pacer/async-queuer' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { AsyncQueuerOptions, AsyncQueuerState, } from '@tanstack/pacer/async-queuer' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncQueuer extends Omit, 'store'> { diff --git a/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts b/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts index ecb2a3ad..81bf9f6d 100644 --- a/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts +++ b/packages/react-pacer/src/async-rate-limiter/useAsyncRateLimiter.ts @@ -1,13 +1,13 @@ import { useMemo, useState } from 'react' import { AsyncRateLimiter } from '@tanstack/pacer/async-rate-limiter' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { AnyAsyncFunction } from '@tanstack/pacer/types' import type { AsyncRateLimiterOptions, AsyncRateLimiterState, } from '@tanstack/pacer/async-rate-limiter' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncRateLimiter< TFn extends AnyAsyncFunction, diff --git a/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts index 77fd5743..95f5c67f 100644 --- a/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts +++ b/packages/react-pacer/src/async-retryer/useAsyncRetryer.ts @@ -1,13 +1,13 @@ import { useEffect, useMemo, useState } from 'react' import { AsyncRetryer } from '@tanstack/pacer/async-retryer' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { AnyAsyncFunction } from '@tanstack/pacer/types' import type { AsyncRetryerOptions, AsyncRetryerState, } from '@tanstack/pacer/async-retryer' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncRetryer extends Omit, 'store'> { diff --git a/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts b/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts index c4590cbb..1f583c5c 100644 --- a/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts +++ b/packages/react-pacer/src/async-throttler/useAsyncThrottler.ts @@ -1,13 +1,13 @@ import { useEffect, useMemo, useState } from 'react' import { AsyncThrottler } from '@tanstack/pacer/async-throttler' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { AnyAsyncFunction } from '@tanstack/pacer/types' import type { AsyncThrottlerOptions, AsyncThrottlerState, } from '@tanstack/pacer/async-throttler' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactAsyncThrottler< TFn extends AnyAsyncFunction, diff --git a/packages/react-pacer/src/batcher/useBatcher.ts b/packages/react-pacer/src/batcher/useBatcher.ts index 13df5bae..b40d86e1 100644 --- a/packages/react-pacer/src/batcher/useBatcher.ts +++ b/packages/react-pacer/src/batcher/useBatcher.ts @@ -1,9 +1,9 @@ import { useMemo, useState } from 'react' import { Batcher } from '@tanstack/pacer/batcher' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { BatcherOptions, BatcherState } from '@tanstack/pacer/batcher' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactBatcher extends Omit, 'store'> { diff --git a/packages/react-pacer/src/debouncer/useDebouncer.ts b/packages/react-pacer/src/debouncer/useDebouncer.ts index 9c984fe3..cb9030dc 100644 --- a/packages/react-pacer/src/debouncer/useDebouncer.ts +++ b/packages/react-pacer/src/debouncer/useDebouncer.ts @@ -1,13 +1,13 @@ import { useEffect, useMemo, useState } from 'react' import { Debouncer } from '@tanstack/pacer/debouncer' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { DebouncerOptions, DebouncerState, } from '@tanstack/pacer/debouncer' import type { AnyFunction } from '@tanstack/pacer/types' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactDebouncer extends Omit, 'store'> { diff --git a/packages/react-pacer/src/provider/PacerProvider.tsx b/packages/react-pacer/src/provider/PacerProvider.tsx index 0b29a849..06df8207 100644 --- a/packages/react-pacer/src/provider/PacerProvider.tsx +++ b/packages/react-pacer/src/provider/PacerProvider.tsx @@ -1,4 +1,5 @@ -import React, { createContext, useContext, ReactNode } from 'react' +import React, { createContext, useContext, useMemo } from 'react' +import type { ReactNode } from 'react' import type { AnyAsyncFunction, AnyFunction, @@ -40,13 +41,18 @@ export interface PacerProviderProps { defaultOptions?: PacerProviderOptions } +const DEFAULT_OPTIONS: PacerProviderOptions = {} + export function PacerProvider({ children, - defaultOptions = {}, + defaultOptions = DEFAULT_OPTIONS, }: PacerProviderProps) { - const contextValue: PacerContextValue = { - defaultOptions, - } + const contextValue: PacerContextValue = useMemo( + () => ({ + defaultOptions, + }), + [defaultOptions], + ) return ( diff --git a/packages/react-pacer/src/queuer/useQueuer.ts b/packages/react-pacer/src/queuer/useQueuer.ts index 11d1cc40..6bedc088 100644 --- a/packages/react-pacer/src/queuer/useQueuer.ts +++ b/packages/react-pacer/src/queuer/useQueuer.ts @@ -1,9 +1,9 @@ import { useMemo, useState } from 'react' import { Queuer } from '@tanstack/pacer/queuer' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { QueuerOptions, QueuerState } from '@tanstack/pacer/queuer' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactQueuer extends Omit, 'store'> { diff --git a/packages/react-pacer/src/rate-limiter/useRateLimiter.ts b/packages/react-pacer/src/rate-limiter/useRateLimiter.ts index 9b0d0b5c..dfc2a4c5 100644 --- a/packages/react-pacer/src/rate-limiter/useRateLimiter.ts +++ b/packages/react-pacer/src/rate-limiter/useRateLimiter.ts @@ -1,13 +1,13 @@ import { useMemo, useState } from 'react' import { RateLimiter } from '@tanstack/pacer/rate-limiter' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { RateLimiterOptions, RateLimiterState, } from '@tanstack/pacer/rate-limiter' import type { AnyFunction } from '@tanstack/pacer/types' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactRateLimiter extends Omit, 'store'> { diff --git a/packages/react-pacer/src/throttler/useThrottler.ts b/packages/react-pacer/src/throttler/useThrottler.ts index ade211c0..327b5ba1 100644 --- a/packages/react-pacer/src/throttler/useThrottler.ts +++ b/packages/react-pacer/src/throttler/useThrottler.ts @@ -1,13 +1,13 @@ import { useEffect, useMemo, useState } from 'react' import { Throttler } from '@tanstack/pacer/throttler' import { useStore } from '@tanstack/react-store' +import { useDefaultPacerOptions } from '../provider/PacerProvider' import type { Store } from '@tanstack/react-store' import type { AnyFunction } from '@tanstack/pacer/types' import type { ThrottlerOptions, ThrottlerState, } from '@tanstack/pacer/throttler' -import { useDefaultPacerOptions } from '../provider/PacerProvider' export interface ReactThrottler extends Omit, 'store'> { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 289759a3..3ac63607 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@changesets/cli': specifier: ^2.29.7 - version: 2.29.7(@types/node@24.6.0) + version: 2.29.7(@types/node@24.6.1) '@faker-js/faker': specifier: ^10.0.0 version: 10.0.0 @@ -22,13 +22,13 @@ importers: version: 1.2.0 '@tanstack/config': specifier: 0.20.3 - version: 0.20.3(@types/node@24.6.0)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 0.20.3(@types/node@24.6.1)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) '@testing-library/jest-dom': specifier: ^6.9.0 version: 6.9.0 '@types/node': - specifier: ^24.6.0 - version: 24.6.0 + specifier: ^24.6.1 + version: 24.6.1 eslint: specifier: ^9.36.0 version: 9.36.0(jiti@2.6.0) @@ -43,7 +43,7 @@ importers: version: 27.0.0(postcss@8.5.6) knip: specifier: ^5.64.1 - version: 5.64.1(@types/node@24.6.0)(typescript@5.9.3) + version: 5.64.1(@types/node@24.6.1)(typescript@5.9.3) markdown-link-extractor: specifier: ^4.0.2 version: 4.0.2 @@ -73,10 +73,10 @@ importers: version: 5.9.3 vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.6.0)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0) + version: 3.2.4(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncBatch: dependencies: @@ -98,10 +98,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncDebounce: dependencies: @@ -123,10 +123,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncRateLimit: dependencies: @@ -148,10 +148,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/asyncThrottle: dependencies: @@ -173,10 +173,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/batch: dependencies: @@ -198,10 +198,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/debounce: dependencies: @@ -223,10 +223,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/queue: dependencies: @@ -254,10 +254,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/rateLimit: dependencies: @@ -279,10 +279,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-debounced-prefetch: dependencies: @@ -310,10 +310,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-queued-prefetch: dependencies: @@ -341,10 +341,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/react-query-throttled-prefetch: dependencies: @@ -372,10 +372,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/throttle: dependencies: @@ -397,10 +397,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatchedCallback: dependencies: @@ -422,10 +422,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncBatcher: dependencies: @@ -447,10 +447,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncedCallback: dependencies: @@ -472,10 +472,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncDebouncer: dependencies: @@ -497,10 +497,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuedState: dependencies: @@ -522,10 +522,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncQueuer: dependencies: @@ -547,10 +547,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiter: dependencies: @@ -575,10 +575,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRateLimiterWithPersister: dependencies: @@ -603,16 +603,16 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncRetryer: dependencies: '@tanstack/react-pacer': - specifier: ^0.14.0 - version: 0.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^0.16.4 + version: link:../../../packages/react-pacer react: specifier: ^19.1.1 version: 19.1.1 @@ -628,10 +628,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useAsyncThrottler: dependencies: @@ -653,10 +653,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatchedCallback: dependencies: @@ -678,10 +678,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useBatcher: dependencies: @@ -703,10 +703,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedCallback: dependencies: @@ -728,10 +728,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedState: dependencies: @@ -753,10 +753,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncedValue: dependencies: @@ -778,10 +778,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useDebouncer: dependencies: @@ -803,10 +803,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedState: dependencies: @@ -828,10 +828,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuedValue: dependencies: @@ -853,10 +853,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuer: dependencies: @@ -887,10 +887,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useQueuerWithPersister: dependencies: @@ -915,10 +915,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedCallback: dependencies: @@ -940,10 +940,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedState: dependencies: @@ -965,10 +965,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimitedValue: dependencies: @@ -990,10 +990,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiter: dependencies: @@ -1018,10 +1018,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useRateLimiterWithPersister: dependencies: @@ -1046,10 +1046,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledCallback: dependencies: @@ -1071,10 +1071,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledState: dependencies: @@ -1096,10 +1096,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottledValue: dependencies: @@ -1121,10 +1121,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/useThrottler: dependencies: @@ -1146,10 +1146,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/react/util-comparison: dependencies: @@ -1177,10 +1177,10 @@ importers: version: 19.1.9(@types/react@19.1.16) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) examples/solid/asyncBatch: dependencies: @@ -1193,10 +1193,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncDebounce: dependencies: @@ -1209,10 +1209,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncRateLimit: dependencies: @@ -1225,10 +1225,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/asyncThrottle: dependencies: @@ -1241,10 +1241,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/batch: dependencies: @@ -1257,10 +1257,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncBatcher: dependencies: @@ -1273,10 +1273,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncDebouncer: dependencies: @@ -1289,10 +1289,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncQueuer: dependencies: @@ -1305,10 +1305,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncRateLimiter: dependencies: @@ -1321,10 +1321,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createAsyncThrottler: dependencies: @@ -1337,10 +1337,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createBatcher: dependencies: @@ -1353,10 +1353,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedSignal: dependencies: @@ -1369,10 +1369,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncedValue: dependencies: @@ -1385,10 +1385,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createDebouncer: dependencies: @@ -1401,10 +1401,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createQueuer: dependencies: @@ -1423,10 +1423,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedSignal: dependencies: @@ -1439,10 +1439,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimitedValue: dependencies: @@ -1455,10 +1455,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createRateLimiter: dependencies: @@ -1471,10 +1471,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledSignal: dependencies: @@ -1487,10 +1487,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottledValue: dependencies: @@ -1503,10 +1503,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/createThrottler: dependencies: @@ -1519,10 +1519,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/debounce: dependencies: @@ -1535,10 +1535,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/queue: dependencies: @@ -1557,10 +1557,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/rateLimit: dependencies: @@ -1573,10 +1573,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) examples/solid/throttle: dependencies: @@ -1589,10 +1589,10 @@ importers: devDependencies: vite: specifier: ^7.1.7 - version: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/pacer: dependencies: @@ -1629,7 +1629,7 @@ importers: devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/react-pacer: dependencies: @@ -1651,7 +1651,7 @@ importers: version: 19.1.16 '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 version: 19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)) @@ -1685,7 +1685,7 @@ importers: version: 2.0.4(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) eslint-plugin-react-compiler: specifier: 19.1.0-rc.2 version: 19.1.0-rc.2(eslint@9.36.0(jiti@2.6.0)) @@ -1707,7 +1707,7 @@ importers: version: 1.9.9 vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages/solid-pacer-devtools: dependencies: @@ -1720,7 +1720,7 @@ importers: devDependencies: vite-plugin-solid: specifier: ^2.11.8 - version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) packages: @@ -2819,10 +2819,6 @@ packages: resolution: {integrity: sha512-2g+PuGR3GuvvCiR3xZs+IMqAvnYU9bvH+jRml0BFBSxHBj22xFCTNvJWhvgj7uICFF9IchDkFUto91xDPMu5cg==} engines: {node: '>=18'} - '@tanstack/pacer@0.13.0': - resolution: {integrity: sha512-eCV3BIn+If4YGMgRbB315CvhyggmBhV85NmBH4uAA2kop6fOJh5GAWsvgsQOqYt0EFhHcjUwQ1eIhqw9aohuOQ==} - engines: {node: '>=18'} - '@tanstack/persister@0.1.1': resolution: {integrity: sha512-XUewm2+D0K84ZSuWm1oMHfqw/flmO7IzCc+316php/XChgbMe30DStp1cF2Uc4IV0cI0G4hDq2RX3+NTxTIvWg==} engines: {node: '>=18'} @@ -2846,13 +2842,6 @@ packages: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/react-pacer@0.14.0': - resolution: {integrity: sha512-K5wR61esBjnO+o5XnagE4twOUtNmNb6WF0+ARQRs68tViq4mNGwKuDHm0OuqAN+7Vq8k41horjiVAj24d6V1vw==} - engines: {node: '>=18'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - '@tanstack/react-persister@0.1.1': resolution: {integrity: sha512-bERMba9+dDOWKJLV5dR6+pKq+xRYyuCsK1Te5Ygs2WiXdvAVLMnNjJIOkIhZ9uihbQvyBIbYPAlb9sCfSgvYWg==} engines: {node: '>=18'} @@ -2871,12 +2860,6 @@ packages: peerDependencies: react: ^18 || ^19 - '@tanstack/react-store@0.7.5': - resolution: {integrity: sha512-A+WZtEnHZpvbKXm8qR+xndNKywBLez2KKKKEQc7w0Qs45GvY1LpRI3BTZNmELwEVim8+Apf99iEDH2J+MUIzlQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/react-store@0.7.7': resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==} peerDependencies: @@ -2894,9 +2877,6 @@ packages: peerDependencies: solid-js: ^1.6.0 - '@tanstack/store@0.7.5': - resolution: {integrity: sha512-qd/OjkjaFRKqKU4Yjipaen/EOB9MyEg6Wr9fW103RBPACf1ZcKhbhcu2S5mj5IgdPib6xFIgCUti/mKVkl+fRw==} - '@tanstack/store@0.7.7': resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} @@ -2957,8 +2937,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@24.6.0': - resolution: {integrity: sha512-F1CBxgqwOMc4GKJ7eY22hWhBVQuMYTtqI8L0FcszYcpYX0fzfDGpez22Xau8Mgm7O9fI+zA/TYIdq3tGWfweBA==} + '@types/node@24.6.1': + resolution: {integrity: sha512-ljvjjs3DNXummeIaooB4cLBKg2U6SPI6Hjra/9rRIy7CpM0HpLtG9HptkMKAb4HYWy5S7HUvJEuWgr/y0U8SHw==} '@types/react-dom@19.1.7': resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} @@ -5798,7 +5778,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.7(@types/node@24.6.0)': + '@changesets/cli@2.29.7(@types/node@24.6.1)': dependencies: '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 @@ -5814,7 +5794,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.1(@types/node@24.6.0) + '@inquirer/external-editor': 1.0.1(@types/node@24.6.1) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -6194,12 +6174,12 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/external-editor@1.0.1(@types/node@24.6.0)': + '@inquirer/external-editor@1.0.1(@types/node@24.6.1)': dependencies: chardet: 2.1.0 iconv-lite: 0.6.3 optionalDependencies: - '@types/node': 24.6.0 + '@types/node': 24.6.1 '@jest/diff-sequences@30.0.1': {} @@ -6265,23 +6245,23 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@microsoft/api-extractor-model@7.29.6(@types/node@24.6.0)': + '@microsoft/api-extractor-model@7.29.6(@types/node@24.6.1)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.7.0(@types/node@24.6.0) + '@rushstack/node-core-library': 5.7.0(@types/node@24.6.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.47.7(@types/node@24.6.0)': + '@microsoft/api-extractor@7.47.7(@types/node@24.6.1)': dependencies: - '@microsoft/api-extractor-model': 7.29.6(@types/node@24.6.0) + '@microsoft/api-extractor-model': 7.29.6(@types/node@24.6.1) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.7.0(@types/node@24.6.0) + '@rushstack/node-core-library': 5.7.0(@types/node@24.6.1) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.0(@types/node@24.6.0) - '@rushstack/ts-command-line': 4.22.6(@types/node@24.6.0) + '@rushstack/terminal': 0.14.0(@types/node@24.6.1) + '@rushstack/ts-command-line': 4.22.6(@types/node@24.6.1) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -6493,7 +6473,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.44.1': optional: true - '@rushstack/node-core-library@5.7.0(@types/node@24.6.0)': + '@rushstack/node-core-library@5.7.0(@types/node@24.6.1)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -6504,23 +6484,23 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 24.6.0 + '@types/node': 24.6.1 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.14.0(@types/node@24.6.0)': + '@rushstack/terminal@0.14.0(@types/node@24.6.1)': dependencies: - '@rushstack/node-core-library': 5.7.0(@types/node@24.6.0) + '@rushstack/node-core-library': 5.7.0(@types/node@24.6.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.6.0 + '@types/node': 24.6.1 - '@rushstack/ts-command-line@4.22.6(@types/node@24.6.0)': + '@rushstack/ts-command-line@4.22.6(@types/node@24.6.1)': dependencies: - '@rushstack/terminal': 0.14.0(@types/node@24.6.0) + '@rushstack/terminal': 0.14.0(@types/node@24.6.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -6599,12 +6579,12 @@ snapshots: transitivePeerDependencies: - encoding - '@tanstack/config@0.20.3(@types/node@24.6.0)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/config@0.20.3(@types/node@24.6.1)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@tanstack/eslint-config': 0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@tanstack/publish-config': 0.2.1 '@tanstack/typedoc-config': 0.2.1(typescript@5.9.3) - '@tanstack/vite-config': 0.3.0(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + '@tanstack/vite-config': 0.3.0(@types/node@24.6.1)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - '@typescript-eslint/utils' @@ -6661,10 +6641,6 @@ snapshots: - supports-color - typescript - '@tanstack/pacer@0.13.0': - dependencies: - '@tanstack/store': 0.7.7 - '@tanstack/persister@0.1.1': {} '@tanstack/publish-config@0.2.1': @@ -6693,13 +6669,6 @@ snapshots: - solid-js - utf-8-validate - '@tanstack/react-pacer@0.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@tanstack/pacer': 0.13.0 - '@tanstack/react-store': 0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - '@tanstack/react-persister@0.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/persister': 0.1.1 @@ -6717,13 +6686,6 @@ snapshots: '@tanstack/query-core': 5.90.2 react: 19.1.1 - '@tanstack/react-store@0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@tanstack/store': 0.7.5 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/react-store@0.7.7(react-dom@19.1.0(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/store': 0.7.7 @@ -6745,8 +6707,6 @@ snapshots: '@tanstack/store': 0.7.7 solid-js: 1.9.9 - '@tanstack/store@0.7.5': {} - '@tanstack/store@0.7.7': {} '@tanstack/typedoc-config@0.2.1(typescript@5.9.3)': @@ -6757,12 +6717,12 @@ snapshots: transitivePeerDependencies: - typescript - '@tanstack/vite-config@0.3.0(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@tanstack/vite-config@0.3.0(@types/node@24.6.1)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: rollup-plugin-preserve-directives: 0.4.0(rollup@4.44.1) - vite-plugin-dts: 4.2.3(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) - vite-plugin-externalize-deps: 0.9.0(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) - vite-tsconfig-paths: 5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-dts: 4.2.3(@types/node@24.6.1)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-plugin-externalize-deps: 0.9.0(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite-tsconfig-paths: 5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) transitivePeerDependencies: - '@types/node' - rollup @@ -6822,7 +6782,7 @@ snapshots: '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 24.6.0 + '@types/node': 24.6.1 '@types/deep-eql@4.0.2': {} @@ -6836,7 +6796,7 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@24.6.0': + '@types/node@24.6.1': dependencies: undici-types: 7.13.0 @@ -7012,7 +6972,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -7020,7 +6980,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.38 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -7032,13 +6992,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -8234,10 +8194,10 @@ snapshots: dependencies: json-buffer: 3.0.1 - knip@5.64.1(@types/node@24.6.0)(typescript@5.9.3): + knip@5.64.1(@types/node@24.6.1)(typescript@5.9.3): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 24.6.0 + '@types/node': 24.6.1 fast-glob: 3.3.3 formatly: 0.3.0 jiti: 2.6.0 @@ -9137,13 +9097,13 @@ snapshots: validate-html-nesting@1.2.2: {} - vite-node@3.2.4(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -9158,9 +9118,9 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.2.3(@types/node@24.6.0)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-dts@4.2.3(@types/node@24.6.1)(rollup@4.44.1)(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - '@microsoft/api-extractor': 7.47.7(@types/node@24.6.0) + '@microsoft/api-extractor': 7.47.7(@types/node@24.6.1) '@rollup/pluginutils': 5.1.4(rollup@4.44.1) '@volar/typescript': 2.4.12 '@vue/language-core': 2.1.6(typescript@5.9.3) @@ -9171,17 +9131,17 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.3 optionalDependencies: - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.9.0(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-externalize-deps@0.9.0(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.7)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 @@ -9189,14 +9149,14 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.7 solid-refresh: 0.6.3(solid-js@1.9.7) - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: '@testing-library/jest-dom': 6.9.0 transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: '@babel/core': 7.28.0 '@types/babel__core': 7.20.5 @@ -9204,25 +9164,25 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.9 solid-refresh: 0.6.3(solid-js@1.9.9) - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vitefu: 1.0.6(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) optionalDependencies: '@testing-library/jest-dom': 6.9.0 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.9.3) optionalDependencies: - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): + vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0): dependencies: esbuild: 0.25.0 fdir: 6.5.0(picomatch@4.0.3) @@ -9231,21 +9191,21 @@ snapshots: rollup: 4.44.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.6.0 + '@types/node': 24.6.1 fsevents: 2.3.3 jiti: 2.6.0 tsx: 4.19.3 yaml: 2.8.0 - vitefu@1.0.6(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): + vitefu@1.0.6(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)): optionalDependencies: - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vitest@3.2.4(@types/node@24.6.0)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0): + vitest@3.2.4(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(tsx@4.19.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -9263,11 +9223,11 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.7(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@24.6.0)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@24.6.1)(jiti@2.6.0)(tsx@4.19.3)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.6.0 + '@types/node': 24.6.1 jsdom: 27.0.0(postcss@8.5.6) transitivePeerDependencies: - jiti From f23f1c83d69ef7a52237c68c78f68db3012deee8 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:33:33 +0000 Subject: [PATCH 41/44] ci: apply automated fixes --- .../reference/functions/pacerprovider.md | 2 +- .../functions/usedefaultpaceroptions.md | 2 +- .../reference/functions/usepacercontext.md | 2 +- .../interfaces/pacerprovideroptions.md | 24 +++++++++---------- .../interfaces/pacerproviderprops.md | 6 ++--- docs/reference/classes/asyncbatcher.md | 22 ++++++++++------- docs/reference/classes/asyncratelimiter.md | 20 ++++------------ docs/reference/functions/asyncbatch.md | 12 +++++++--- .../interfaces/asyncbatcheroptions.md | 2 +- .../interfaces/asyncdebounceroptions.md | 2 +- .../interfaces/asyncqueueroptions.md | 2 +- .../interfaces/asyncratelimiteroptions.md | 2 +- .../interfaces/asyncretryeroptions.md | 2 +- .../interfaces/asyncthrottleroptions.md | 2 +- 14 files changed, 52 insertions(+), 50 deletions(-) diff --git a/docs/framework/react/reference/functions/pacerprovider.md b/docs/framework/react/reference/functions/pacerprovider.md index 06e51a87..29b75d66 100644 --- a/docs/framework/react/reference/functions/pacerprovider.md +++ b/docs/framework/react/reference/functions/pacerprovider.md @@ -11,7 +11,7 @@ title: PacerProvider function PacerProvider(__namedParameters): Element ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:43](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L43) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:46](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L46) ## Parameters diff --git a/docs/framework/react/reference/functions/usedefaultpaceroptions.md b/docs/framework/react/reference/functions/usedefaultpaceroptions.md index a5fb75f6..bacbe354 100644 --- a/docs/framework/react/reference/functions/usedefaultpaceroptions.md +++ b/docs/framework/react/reference/functions/usedefaultpaceroptions.md @@ -11,7 +11,7 @@ title: useDefaultPacerOptions function useDefaultPacerOptions(): PacerProviderOptions ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:62](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L62) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:68](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L68) ## Returns diff --git a/docs/framework/react/reference/functions/usepacercontext.md b/docs/framework/react/reference/functions/usepacercontext.md index f5b38619..970e19ce 100644 --- a/docs/framework/react/reference/functions/usepacercontext.md +++ b/docs/framework/react/reference/functions/usepacercontext.md @@ -11,7 +11,7 @@ title: usePacerContext function usePacerContext(): null | PacerContextValue ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:58](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L58) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:64](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L64) ## Returns diff --git a/docs/framework/react/reference/interfaces/pacerprovideroptions.md b/docs/framework/react/reference/interfaces/pacerprovideroptions.md index f148c0bf..92ac77e5 100644 --- a/docs/framework/react/reference/interfaces/pacerprovideroptions.md +++ b/docs/framework/react/reference/interfaces/pacerprovideroptions.md @@ -7,7 +7,7 @@ title: PacerProviderOptions # Interface: PacerProviderOptions -Defined in: [react-pacer/src/provider/PacerProvider.tsx:18](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L18) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:19](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L19) ## Properties @@ -17,7 +17,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:18](https://github.com/T optional asyncBatcher: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:19](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L19) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L20) *** @@ -27,7 +27,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:19](https://github.com/T optional asyncDebouncer: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:20](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L20) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L21) *** @@ -37,7 +37,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:20](https://github.com/T optional asyncQueuer: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:21](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L21) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:22](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L22) *** @@ -47,7 +47,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:21](https://github.com/T optional asyncRateLimiter: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:22](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L22) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:23](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L23) *** @@ -57,7 +57,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:22](https://github.com/T optional asyncRetryer: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:23](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L23) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L24) *** @@ -67,7 +67,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:23](https://github.com/T optional asyncThrottler: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:24](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L24) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:25](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L25) *** @@ -77,7 +77,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:24](https://github.com/T optional batcher: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:25](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L25) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:26](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L26) *** @@ -87,7 +87,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:25](https://github.com/T optional debouncer: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:26](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L26) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:27](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L27) *** @@ -97,7 +97,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:26](https://github.com/T optional queuer: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:27](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L27) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:28](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L28) *** @@ -107,7 +107,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:27](https://github.com/T optional rateLimiter: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:28](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L28) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:29](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L29) *** @@ -117,4 +117,4 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:28](https://github.com/T optional throttler: Partial>; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:29](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L29) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:30](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L30) diff --git a/docs/framework/react/reference/interfaces/pacerproviderprops.md b/docs/framework/react/reference/interfaces/pacerproviderprops.md index 5841e9d6..305b231b 100644 --- a/docs/framework/react/reference/interfaces/pacerproviderprops.md +++ b/docs/framework/react/reference/interfaces/pacerproviderprops.md @@ -7,7 +7,7 @@ title: PacerProviderProps # Interface: PacerProviderProps -Defined in: [react-pacer/src/provider/PacerProvider.tsx:38](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L38) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:39](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L39) ## Properties @@ -17,7 +17,7 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:38](https://github.com/T children: ReactNode; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:39](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L39) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:40](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L40) *** @@ -27,4 +27,4 @@ Defined in: [react-pacer/src/provider/PacerProvider.tsx:39](https://github.com/T optional defaultOptions: PacerProviderOptions; ``` -Defined in: [react-pacer/src/provider/PacerProvider.tsx:40](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L40) +Defined in: [react-pacer/src/provider/PacerProvider.tsx:41](https://github.com/TanStack/pacer/blob/main/packages/react-pacer/src/provider/PacerProvider.tsx#L41) diff --git a/docs/reference/classes/asyncbatcher.md b/docs/reference/classes/asyncbatcher.md index 138e88cb..6104a7de 100644 --- a/docs/reference/classes/asyncbatcher.md +++ b/docs/reference/classes/asyncbatcher.md @@ -179,10 +179,10 @@ Emits a change event for the async batcher instance. Mostly useful for devtools. ### addItem() ```ts -addItem(item): void +addItem(item): Promise ``` -Defined in: [async-batcher.ts:318](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L318) +Defined in: [async-batcher.ts:322](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L322) Adds an item to the async batcher If the batch size is reached, timeout occurs, or shouldProcess returns true, the batch will be processed @@ -195,7 +195,13 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the #### Returns -`void` +`Promise`\<`any`\> + +The result from the batch function, or undefined if an error occurred and was handled by onError + +#### Throws + +The error from the batch function if no onError handler is configured or throwOnError is true *** @@ -205,7 +211,7 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the clear(): void ``` -Defined in: [async-batcher.ts:419](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L419) +Defined in: [async-batcher.ts:424](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L424) Removes all items from the async batcher @@ -221,7 +227,7 @@ Removes all items from the async batcher flush(): Promise ``` -Defined in: [async-batcher.ts:393](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L393) +Defined in: [async-batcher.ts:398](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L398) Processes the current batch of items immediately @@ -237,7 +243,7 @@ Processes the current batch of items immediately peekAllItems(): TValue[] ``` -Defined in: [async-batcher.ts:401](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L401) +Defined in: [async-batcher.ts:406](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L406) Returns a copy of all items in the async batcher @@ -253,7 +259,7 @@ Returns a copy of all items in the async batcher peekFailedItems(): TValue[] ``` -Defined in: [async-batcher.ts:405](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L405) +Defined in: [async-batcher.ts:410](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L410) #### Returns @@ -267,7 +273,7 @@ Defined in: [async-batcher.ts:405](https://github.com/TanStack/pacer/blob/main/p reset(): void ``` -Defined in: [async-batcher.ts:426](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L426) +Defined in: [async-batcher.ts:431](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L431) Resets the async batcher state to its default values diff --git a/docs/reference/classes/asyncratelimiter.md b/docs/reference/classes/asyncratelimiter.md index df30c773..398e86d0 100644 --- a/docs/reference/classes/asyncratelimiter.md +++ b/docs/reference/classes/asyncratelimiter.md @@ -87,7 +87,7 @@ const data = await rateLimiter.maybeExecute('123'); new AsyncRateLimiter(fn, initialOptions): AsyncRateLimiter ``` -Defined in: [async-rate-limiter.ts:234](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L234) +Defined in: [async-rate-limiter.ts:233](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L233) #### Parameters @@ -105,23 +105,13 @@ Defined in: [async-rate-limiter.ts:234](https://github.com/TanStack/pacer/blob/m ## Properties -### asyncRetryer - -```ts -asyncRetryer: AsyncRetryer; -``` - -Defined in: [async-rate-limiter.ts:231](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L231) - -*** - ### fn ```ts fn: TFn; ``` -Defined in: [async-rate-limiter.ts:235](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L235) +Defined in: [async-rate-limiter.ts:234](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L234) *** @@ -161,7 +151,7 @@ Defined in: [async-rate-limiter.ts:226](https://github.com/TanStack/pacer/blob/m _emit(): void ``` -Defined in: [async-rate-limiter.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L263) +Defined in: [async-rate-limiter.ts:258](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L258) Emits a change event for the async rate limiter instance. Mostly useful for devtools. @@ -211,7 +201,7 @@ Returns the number of remaining executions allowed in the current window maybeExecute(...args): Promise> ``` -Defined in: [async-rate-limiter.ts:341](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L341) +Defined in: [async-rate-limiter.ts:336](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L336) Attempts to execute the rate-limited function if within the configured limits. Will reject execution if the number of calls in the current window exceeds the limit. @@ -275,7 +265,7 @@ Resets the rate limiter state setOptions(newOptions): void ``` -Defined in: [async-rate-limiter.ts:268](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L268) +Defined in: [async-rate-limiter.ts:263](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-rate-limiter.ts#L263) Updates the async rate limiter options diff --git a/docs/reference/functions/asyncbatch.md b/docs/reference/functions/asyncbatch.md index 0982f071..ad4e23d4 100644 --- a/docs/reference/functions/asyncbatch.md +++ b/docs/reference/functions/asyncbatch.md @@ -8,10 +8,10 @@ title: asyncBatch # Function: asyncBatch() ```ts -function asyncBatch(fn, options): (item) => void +function asyncBatch(fn, options): (item) => Promise ``` -Defined in: [async-batcher.ts:481](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L481) +Defined in: [async-batcher.ts:486](https://github.com/TanStack/pacer/blob/main/packages/pacer/src/async-batcher.ts#L486) Creates an async batcher that processes items in batches @@ -69,7 +69,13 @@ If the batch size is reached, timeout occurs, or shouldProcess returns true, the ### Returns -`void` +`Promise`\<`any`\> + +The result from the batch function, or undefined if an error occurred and was handled by onError + +### Throws + +The error from the batch function if no onError handler is configured or throwOnError is true ## Example diff --git a/docs/reference/interfaces/asyncbatcheroptions.md b/docs/reference/interfaces/asyncbatcheroptions.md index 24fc155d..c0d0aa52 100644 --- a/docs/reference/interfaces/asyncbatcheroptions.md +++ b/docs/reference/interfaces/asyncbatcheroptions.md @@ -115,7 +115,7 @@ This can be used alongside throwOnError - the handler will be called before any ##### error -`unknown` +`Error` ##### batch diff --git a/docs/reference/interfaces/asyncdebounceroptions.md b/docs/reference/interfaces/asyncdebounceroptions.md index 17707385..cd725cc9 100644 --- a/docs/reference/interfaces/asyncdebounceroptions.md +++ b/docs/reference/interfaces/asyncdebounceroptions.md @@ -97,7 +97,7 @@ This can be used alongside throwOnError - the handler will be called before any ##### error -`unknown` +`Error` ##### args diff --git a/docs/reference/interfaces/asyncqueueroptions.md b/docs/reference/interfaces/asyncqueueroptions.md index 99847a84..c854c24e 100644 --- a/docs/reference/interfaces/asyncqueueroptions.md +++ b/docs/reference/interfaces/asyncqueueroptions.md @@ -211,7 +211,7 @@ This can be used alongside throwOnError - the handler will be called before any ##### error -`unknown` +`Error` ##### item diff --git a/docs/reference/interfaces/asyncratelimiteroptions.md b/docs/reference/interfaces/asyncratelimiteroptions.md index 54f17cdf..9e418bbc 100644 --- a/docs/reference/interfaces/asyncratelimiteroptions.md +++ b/docs/reference/interfaces/asyncratelimiteroptions.md @@ -97,7 +97,7 @@ This can be used alongside throwOnError - the handler will be called before any ##### error -`unknown` +`Error` ##### args diff --git a/docs/reference/interfaces/asyncretryeroptions.md b/docs/reference/interfaces/asyncretryeroptions.md index c039c1fb..581585c5 100644 --- a/docs/reference/interfaces/asyncretryeroptions.md +++ b/docs/reference/interfaces/asyncretryeroptions.md @@ -116,7 +116,7 @@ Callback invoked when any error occurs during execution (including retries) ##### error -`unknown` +`Error` ##### args diff --git a/docs/reference/interfaces/asyncthrottleroptions.md b/docs/reference/interfaces/asyncthrottleroptions.md index 137dcdee..2a9d28f8 100644 --- a/docs/reference/interfaces/asyncthrottleroptions.md +++ b/docs/reference/interfaces/asyncthrottleroptions.md @@ -97,7 +97,7 @@ This can be used alongside throwOnError - the handler will be called before any ##### error -`unknown` +`Error` ##### args From 4e3330f919e76255e5d86b19e505243b9e293e2f Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Sun, 5 Oct 2025 14:38:40 -0500 Subject: [PATCH 42/44] fix async-throttler stuff --- examples/react/useAsyncBatcher/src/index.tsx | 17 +-- .../react/useAsyncThrottler/src/index.tsx | 32 +---- packages/pacer/src/async-batcher.ts | 4 + packages/pacer/src/async-debouncer.ts | 2 +- packages/pacer/src/async-retryer.ts | 65 ++++++++--- packages/pacer/src/async-throttler.ts | 110 +++++++++++------- packages/pacer/tests/async-retryer.test.ts | 4 +- packages/pacer/tests/async-throttler.test.ts | 68 ++++++++++- 8 files changed, 191 insertions(+), 111 deletions(-) diff --git a/examples/react/useAsyncBatcher/src/index.tsx b/examples/react/useAsyncBatcher/src/index.tsx index 95004f53..253059a6 100644 --- a/examples/react/useAsyncBatcher/src/index.tsx +++ b/examples/react/useAsyncBatcher/src/index.tsx @@ -16,7 +16,6 @@ function App() { Array<{ items: Array; result: string; timestamp: number }> >([]) const [errors, setErrors] = useState>([]) - const [shouldFail, setShouldFail] = useState(false) // The async function that will process a batch of items async function processBatch(items: Array): Promise { @@ -26,9 +25,8 @@ function App() { await new Promise((resolve) => setTimeout(resolve, fakeProcessingTime)) // Simulate occasional failures for demo purposes - if (shouldFail && Math.random() < 0.3) { - throw new Error(`Processing failed for batch with ${items.length} items`) - } + + // throw new Error(`Processing failed for batch with ${items.length} items`) // Return a result from the batch processing const result = `Processed ${items.length} items: ${items.map((item) => item.value).join(', ')}` @@ -166,17 +164,6 @@ function App() { Clear Current Batch
- -
- -
diff --git a/examples/react/useAsyncThrottler/src/index.tsx b/examples/react/useAsyncThrottler/src/index.tsx index ba6968da..c9dedf1e 100644 --- a/examples/react/useAsyncThrottler/src/index.tsx +++ b/examples/react/useAsyncThrottler/src/index.tsx @@ -30,7 +30,7 @@ function App() { return } - throw new Error('Test error') // you don't have to catch errors here (though you still can). The onError optional handler will catch it + // throw new Error('Test error') // you don't have to catch errors here (though you still can). The onError optional handler will catch it const data = await fakeApi(term) setResults(data) @@ -55,11 +55,7 @@ function App() { // throwOnError: true, }, // Optional Selector function to pick the state you want to track and use - (state) => ({ - successCount: state.successCount, - isPending: state.isPending, - isExecuting: state.isExecuting, - }), + (state) => state, ) // get and name our throttled function @@ -115,9 +111,8 @@ function App() { const root = ReactDOM.createRoot(document.getElementById('root')!) -let mounted = true +// optionally, provide default options to an optional PacerProvider root.render( - // optionally, provide default options to an optional PacerProvider , ) - -// demo unmounting and cancellation -document.addEventListener('keydown', (e) => { - if (e.shiftKey && e.key === 'Enter') { - mounted = !mounted - root.render( - mounted ? ( - // optionally, provide default options to an optional PacerProvider - - - - ) : null, - ) - } -}) diff --git a/packages/pacer/src/async-batcher.ts b/packages/pacer/src/async-batcher.ts index 6d8207ec..30f8fffe 100644 --- a/packages/pacer/src/async-batcher.ts +++ b/packages/pacer/src/async-batcher.ts @@ -363,6 +363,10 @@ export class AsyncBatcher { this.#setState({ isExecuting: true }) try { + this.asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) const result = await this.asyncRetryer.execute(batch) // EXECUTE this.#setState({ totalItemsProcessed: diff --git a/packages/pacer/src/async-debouncer.ts b/packages/pacer/src/async-debouncer.ts index 8b26ad36..a187b848 100644 --- a/packages/pacer/src/async-debouncer.ts +++ b/packages/pacer/src/async-debouncer.ts @@ -414,7 +414,7 @@ export class AsyncDebouncer { } #abortExecution = (): void => { - this.asyncRetryer.cancel() + this.asyncRetryer.abort() } /** diff --git a/packages/pacer/src/async-retryer.ts b/packages/pacer/src/async-retryer.ts index eeb84d25..98e3fcf1 100644 --- a/packages/pacer/src/async-retryer.ts +++ b/packages/pacer/src/async-retryer.ts @@ -79,6 +79,11 @@ export interface AsyncRetryerOptions { * Initial state to merge with the default state */ initialState?: Partial> + /** + * Jitter percentage to add to retry delays (0-1). Adds randomness to prevent thundering herd. + * @default 0 + */ + jitter?: number /** * Maximum number of retry attempts, or a function that returns the max attempts * @default 3 @@ -134,6 +139,7 @@ const defaultOptions: Omit< backoff: 'exponential', baseWait: 1000, enabled: true, + jitter: 0, maxAttempts: 3, throwOnError: 'last', } @@ -152,6 +158,8 @@ const defaultOptions: Omit< * - `'exponential'`: Wait time doubles with each attempt (1s, 2s, 4s, ...) - **DEFAULT** * - `'linear'`: Wait time increases linearly (1s, 2s, 3s, ...) * - `'fixed'`: Waits a constant amount of time (`baseWait`) between each attempt + * - **Jitter**: Adds randomness to retry delays to prevent thundering herd problems (default: `0`). + * Set to a value between 0-1 to apply that percentage of random variation to each delay. * - **Abort & Cancellation**: Supports cancellation via an internal `AbortController`. If cancelled, retries are stopped. * - **State Management**: Tracks execution status, current attempt, last error, and result using TanStack Store. * - **Callbacks**: Provides hooks for handling success, error, retry, and settled events. @@ -174,16 +182,17 @@ const defaultOptions: Omit< * * ## Usage * - Use for async operations that may fail transiently and benefit from retrying. - * - Configure `maxAttempts`, `backoff`, and `baseWait` to control retry behavior. + * - Configure `maxAttempts`, `backoff`, `baseWait`, and `jitter` to control retry behavior. * - Use `onRetry`, `onSuccess`, `onError`, and `onSettled` for custom side effects. * * @example * ```typescript - * // Retry a fetch operation up to 5 times with exponential backoff + * // Retry a fetch operation up to 5 times with exponential backoff and jitter * const retryer = new AsyncRetryer(fetchData, { * maxAttempts: 5, * backoff: 'exponential', * baseWait: 1000, + * jitter: 0.1, // Add 10% random variation to prevent thundering herd * onRetry: (attempt, error) => console.log(`Retry attempt ${attempt} after error:`, error), * onSuccess: (result) => console.log('Success:', result), * onError: (error) => console.error('Error:', error), @@ -261,18 +270,45 @@ export class AsyncRetryer { return parseFunctionOrValue(this.options.baseWait, this) } + #calculateJitter = (waitTime: number): number => { + const jitterAmount = this.options.jitter + if (jitterAmount <= 0) return 0 + + try { + const crypto = + typeof globalThis !== 'undefined' ? globalThis.crypto : undefined + if (crypto?.getRandomValues) { + const array = new Uint32Array(1) + crypto.getRandomValues(array) + // Convert to 0-1 range and apply jitter percentage + const randomFactor = (array[0]! / 0xffffffff) * 2 - 1 // -1 to 1 + return Math.floor(waitTime * jitterAmount * randomFactor) + } + } catch { + // No crypto available + } + return 0 + } + #calculateWait = (attempt: number): number => { const baseWait = this.#getBaseWait() + let waitTime: number switch (this.options.backoff) { case 'linear': - return baseWait * attempt + waitTime = baseWait * attempt + break case 'exponential': - return baseWait * Math.pow(2, attempt - 1) + waitTime = baseWait * Math.pow(2, attempt - 1) + break case 'fixed': default: - return baseWait + waitTime = baseWait + break } + + const jitter = this.#calculateJitter(waitTime) + return Math.max(0, waitTime + jitter) } /** @@ -289,7 +325,7 @@ export class AsyncRetryer { } // Cancel any existing execution - this.cancel() + this.abort() const startTime = Date.now() let lastError: Error | undefined @@ -311,14 +347,14 @@ export class AsyncRetryer { try { if (signal.aborted) { - return undefined as any + return undefined } result = (await this.fn(...args)) as ReturnType // Check if cancelled during execution // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (signal.aborted) { - return undefined as any + return undefined } const totalTime = Date.now() - startTime @@ -336,8 +372,8 @@ export class AsyncRetryer { return result } catch (error) { // Treat abort as a non-error cancellation outcome - if ((error as any)?.name === 'AbortError') { - return undefined as any + if ((error as Error)?.name === 'AbortError') { + return undefined } lastError = error instanceof Error ? error : new Error(String(error)) this.#setState({ lastError }) @@ -364,7 +400,7 @@ export class AsyncRetryer { if (signal.aborted) { // When cancelled during retry wait, surface the last error exactly once this.options.onError?.(lastError, args, this) - return undefined as any + return undefined } } } @@ -386,19 +422,18 @@ export class AsyncRetryer { throw lastError } - return undefined as any + return undefined } /** * Cancels the current execution and any pending retries */ - cancel = (): void => { + abort = (): void => { if (this.#abortController) { this.#abortController.abort() this.#abortController = null this.#setState({ isExecuting: false, - currentAttempt: 0, }) } } @@ -407,7 +442,7 @@ export class AsyncRetryer { * Resets the retryer to its initial state and cancels any ongoing execution */ reset = (): void => { - this.cancel() + this.abort() this.#setState(getDefaultAsyncRetryerState()) } } diff --git a/packages/pacer/src/async-throttler.ts b/packages/pacer/src/async-throttler.ts index 502fb566..386c6864 100644 --- a/packages/pacer/src/async-throttler.ts +++ b/packages/pacer/src/async-throttler.ts @@ -320,56 +320,83 @@ export class AsyncThrottler { ...args: Parameters ): Promise | undefined> => { if (!this.#getEnabled()) return undefined + const now = Date.now() const timeSinceLastExecution = now - this.store.state.lastExecutionTime const wait = this.#getWait() - // Store the most recent arguments for potential trailing execution + this.#setState({ - lastArgs: args, maybeExecuteCount: this.store.state.maybeExecuteCount + 1, + lastArgs: args, // store the arguments for potential trailing execution }) + const thisMaybeExecuteNumber = this.store.state.maybeExecuteCount + this.#resolvePreviousPromiseInternal() - // Handle leading execution - if (this.options.leading && timeSinceLastExecution >= wait) { - await this.#execute(...args) - return this.store.state.lastResult - } else { + // Wait for the wait period for the previous execution to complete if it's still running + for ( + let maxNumIterations = wait / 10; + this.store.state.isExecuting && maxNumIterations > 0; + maxNumIterations-- + ) { + await new Promise((resolve) => setTimeout(resolve, 10)) + if (this.store.state.maybeExecuteCount !== thisMaybeExecuteNumber) { + // cancel the current maybeExecute loop because a new maybeExecute call was made + return this.store.state.lastResult + } + } + + if ( + this.options.leading && + !this.store.state.isPending && + timeSinceLastExecution >= wait + ) { + await this.#execute(...args) // Leading EXECUTE! + } else if (this.options.trailing) { + // replace old pending execution with a new one + this.#cancelPendingExecution() + this.#setState({ + isPending: true, + }) + + // Set up new trailing execution return new Promise((resolve, reject) => { this.#resolvePreviousPromise = resolve - // Clear any existing timeout to ensure we use the latest arguments - this.#clearTimeout() - - // Set up trailing execution if enabled - if (this.options.trailing) { - const _timeSinceLastExecution = this.store.state.lastExecutionTime - ? now - this.store.state.lastExecutionTime - : 0 - const timeoutDuration = wait - _timeSinceLastExecution - this.#setState({ isPending: true }) - this.#timeoutId = setTimeout(async () => { - if (this.store.state.lastArgs !== undefined) { - try { - await this.#execute(...this.store.state.lastArgs) // EXECUTE! - } catch (error) { - reject(error) - } + + const newTimeSinceLastExecution = this.store.state.lastExecutionTime + ? now - this.store.state.lastExecutionTime + : 0 + const timeoutDuration = Math.max(0, wait - newTimeSinceLastExecution) + + this.#timeoutId = setTimeout(async () => { + this.#clearTimeout() + if (this.store.state.lastArgs !== undefined) { + try { + await this.#execute(...this.store.state.lastArgs) // Trailing EXECUTE! + } catch (error) { + reject(error) } - this.#resolvePreviousPromise = null - resolve(this.store.state.lastResult) - }, timeoutDuration) - } + } + this.#resolvePreviousPromise = null + resolve(this.store.state.lastResult) + }, timeoutDuration) }) } + return this.store.state.lastResult } #execute = async ( ...args: Parameters ): Promise | undefined> => { - if (!this.#getEnabled() || this.store.state.isExecuting) return undefined + if (!this.#getEnabled()) return undefined + try { this.#setState({ isExecuting: true }) + this.asyncRetryer = new AsyncRetryer( + this.fn, + this.options.asyncRetryerOptions, + ) const result = await this.asyncRetryer.execute(...args) // EXECUTE! this.#setState({ lastResult: result, @@ -386,10 +413,11 @@ export class AsyncThrottler { } } finally { const lastExecutionTime = Date.now() - const nextExecutionTime = lastExecutionTime + this.#getWait() + const wait = this.#getWait() + const nextExecutionTime = lastExecutionTime + wait this.#setState({ isExecuting: false, - isPending: false, + isPending: !!this.#timeoutId, settleCount: this.store.state.settleCount + 1, lastExecutionTime, nextExecutionTime, @@ -397,9 +425,10 @@ export class AsyncThrottler { this.options.onSettled?.(args, this) setTimeout(() => { if (!this.store.state.isPending) { + // clear nextExecutionTime if there is no pending execution this.#setState({ nextExecutionTime: undefined }) } - }, this.#getWait()) + }, wait) } return this.store.state.lastResult } @@ -409,13 +438,9 @@ export class AsyncThrottler { */ flush = async (): Promise | undefined> => { if (this.store.state.isPending && this.store.state.lastArgs) { - this.#abortExecution() // abort any current execution - this.#clearTimeout() // clear any existing timeout + this.cancel() // cancel any current execution const result = await this.#execute(...this.store.state.lastArgs) - // Resolve any pending promise from maybeExecute - this.#resolvePreviousPromiseInternal() - return result } return undefined @@ -443,21 +468,18 @@ export class AsyncThrottler { } this.#setState({ isPending: false, - isExecuting: false, - lastArgs: undefined, }) } - #abortExecution = (): void => { - this.asyncRetryer.cancel() - } - /** * Cancels any pending execution or aborts any execution in progress */ cancel = (): void => { this.#cancelPendingExecution() - this.#abortExecution() + this.asyncRetryer.abort() // abort + this.#setState({ + isExecuting: false, + }) } /** diff --git a/packages/pacer/tests/async-retryer.test.ts b/packages/pacer/tests/async-retryer.test.ts index 77eb1e69..0aacb81a 100644 --- a/packages/pacer/tests/async-retryer.test.ts +++ b/packages/pacer/tests/async-retryer.test.ts @@ -467,7 +467,7 @@ describe('AsyncRetryer', () => { // Start and immediately cancel const executePromise1 = retryer.execute() - retryer.cancel() + retryer.abort() const result1 = await executePromise1 expect(result1).toBeUndefined() @@ -495,7 +495,7 @@ describe('AsyncRetryer', () => { await Promise.resolve() // Cancel during retry delay - retryer.cancel() + retryer.abort() const result = await executePromise expect(result).toBeUndefined() diff --git a/packages/pacer/tests/async-throttler.test.ts b/packages/pacer/tests/async-throttler.test.ts index 010a04cf..1d6f471b 100644 --- a/packages/pacer/tests/async-throttler.test.ts +++ b/packages/pacer/tests/async-throttler.test.ts @@ -175,12 +175,51 @@ describe('AsyncThrottler', () => { expect(throttler.store.state.nextExecutionTime).toBe(now + 200) }) + it('should maintain isPending state correctly when trailing is scheduled during long-running execution', async () => { + let resolveExecution: ((value: string) => void) | undefined + const mockFn = vi.fn().mockImplementation(() => { + return new Promise((resolve) => { + resolveExecution = resolve + }) + }) + const throttler = new AsyncThrottler(mockFn, { wait: 100 }) + + // Start long-running leading execution + const promise1 = throttler.maybeExecute('first') + expect(throttler.store.state.isExecuting).toBe(true) + expect(throttler.store.state.isPending).toBe(false) + expect(mockFn).toHaveBeenCalledTimes(1) + + // Call again during execution - the second call will wait for first to complete + const promise2 = throttler.maybeExecute('second') + + // Advance timers to allow the waiting loop to progress + await vi.advanceTimersByTimeAsync(100) + + // After waiting loop completes, second call should have returned with lastResult + expect(throttler.store.state.isExecuting).toBe(true) + expect(mockFn).toHaveBeenCalledTimes(1) // Still just the first call + + // Resolve the first execution + resolveExecution!('result1') + await promise1 + + // After first execution completes, if there's a pending execution it should trigger + expect(throttler.store.state.isExecuting).toBe(false) + + // Advance timers to trigger trailing execution if one was scheduled + await vi.advanceTimersByTimeAsync(100) + + const result2 = await promise2 + expect(result2).toBe('result1') // Second call returns first result due to waiting loop + }) + it('should cancel pending execution', async () => { const mockFn = vi.fn().mockResolvedValue(undefined) const throttler = new AsyncThrottler(mockFn, { wait: 100 }) // First call executes immediately - throttler.maybeExecute('first') + await throttler.maybeExecute('first') expect(mockFn).toHaveBeenCalledTimes(1) expect(mockFn).toHaveBeenLastCalledWith('first') @@ -189,6 +228,9 @@ describe('AsyncThrottler', () => { // Cancel it immediately throttler.cancel() + // Advance timers to allow any waiting loops to exit + await vi.advanceTimersByTimeAsync(10) + // Wait for the promise to settle await expect(promise).resolves.toBeUndefined() expect(mockFn).toHaveBeenCalledTimes(1) @@ -199,12 +241,15 @@ describe('AsyncThrottler', () => { const mockFn = vi.fn().mockResolvedValue(undefined) const throttler = new AsyncThrottler(mockFn, { wait: 100 }) - throttler.maybeExecute('first') + await throttler.maybeExecute('first') const promise = throttler.maybeExecute('second') throttler.cancel() + + // Advance timers to allow any waiting loops to exit + await vi.advanceTimersByTimeAsync(10) await promise - vi.advanceTimersByTime(100) + await vi.advanceTimersByTimeAsync(100) await throttler.maybeExecute('third') expect(mockFn).toHaveBeenCalledTimes(2) @@ -217,13 +262,16 @@ describe('AsyncThrottler', () => { const throttler = new AsyncThrottler(mockFn, { wait: 100 }) // First call should execute - throttler.maybeExecute('first') + await throttler.maybeExecute('first') expect(mockFn).toHaveBeenCalledTimes(1) expect(mockFn).toHaveBeenLastCalledWith('first') // Second call should be cancelled const promise = throttler.maybeExecute('second') throttler.cancel() + + // Advance timers to allow any waiting loops to exit + await vi.advanceTimersByTimeAsync(10) await promise // Multiple cancels should not throw @@ -245,8 +293,15 @@ describe('AsyncThrottler', () => { // Start first long-running call const promise1 = throttler.maybeExecute('first') const promise2 = throttler.maybeExecute('second') + + // Advance timers to allow waiting loop to start + await vi.advanceTimersByTimeAsync(10) + throttler.cancel() + // Advance timers to allow cancel to take effect + await vi.advanceTimersByTimeAsync(10) + resolveFirst!({}) await promise1 await promise2 @@ -368,7 +423,10 @@ describe('AsyncThrottler', () => { expect(mockFn).toHaveBeenCalledTimes(1) expect(mockFn).toHaveBeenCalledWith('first') expect(flushResult).toBe('result') - expect(await promise).toBe('result') + + // The promise gets resolved by flush with the result + const promiseResult = await promise + expect(promiseResult).toBe('result') }) it('should update state correctly after flush', async () => { From 5abfe0c81a81f8beb196b0c029b791eed2035ed2 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Mon, 6 Oct 2025 00:16:00 -0500 Subject: [PATCH 43/44] fix retryers with per instance per execution --- examples/react/useAsyncRetryer/src/index.tsx | 2 +- nx.json | 3 + packages/pacer/src/async-batcher.ts | 48 +++++++++++--- packages/pacer/src/async-debouncer.ts | 47 ++++++++------ packages/pacer/src/async-queuer.ts | 49 ++++++++++++-- packages/pacer/src/async-rate-limiter.ts | 25 ++++++-- packages/pacer/src/async-retryer.ts | 25 +++++++- packages/pacer/src/async-throttler.ts | 64 ++++++++++++------- packages/pacer/src/batcher.ts | 9 +++ packages/pacer/src/event-client.ts | 3 + packages/pacer/tests/async-throttler.test.ts | 59 +++++++---------- .../src/async-retryer/useAsyncRetryer.ts | 2 +- 12 files changed, 234 insertions(+), 102 deletions(-) diff --git a/examples/react/useAsyncRetryer/src/index.tsx b/examples/react/useAsyncRetryer/src/index.tsx index be0630f1..0cc442b8 100644 --- a/examples/react/useAsyncRetryer/src/index.tsx +++ b/examples/react/useAsyncRetryer/src/index.tsx @@ -92,7 +92,7 @@ function App() {
- +