diff --git a/packages/angular-query-devtools-experimental/package.json b/packages/angular-query-devtools-experimental/package.json index 37e9a351ec..eb7cb5e5d9 100644 --- a/packages/angular-query-devtools-experimental/package.json +++ b/packages/angular-query-devtools-experimental/package.json @@ -58,7 +58,8 @@ "@angular/platform-browser": "^20.0.0", "@tanstack/angular-query-experimental": "workspace:*", "eslint-plugin-jsdoc": "^50.5.0", - "npm-run-all2": "^5.0.0" + "npm-run-all2": "^5.0.0", + "tsup": "^8.4.0" }, "peerDependencies": { "@angular/common": ">=16.0.0", diff --git a/packages/query-core/src/query.ts b/packages/query-core/src/query.ts index 0987564694..029f4ad736 100644 --- a/packages/query-core/src/query.ts +++ b/packages/query-core/src/query.ts @@ -2,8 +2,7 @@ import { ensureQueryFn, noop, replaceData, - resolveEnabled, - resolveStaleTime, + resolveValueOrFunction, skipToken, timeUntilStale, } from './utils' @@ -16,7 +15,6 @@ import type { CancelOptions, DefaultError, FetchStatus, - InitialDataFunction, OmitKeyof, QueryFunctionContext, QueryKey, @@ -256,7 +254,8 @@ export class Query< isActive(): boolean { return this.observers.some( - (observer) => resolveEnabled(observer.options.enabled, this) !== false, + (observer) => + resolveValueOrFunction(observer.options.enabled, this) !== false, ) } @@ -275,7 +274,7 @@ export class Query< if (this.getObserversCount() > 0) { return this.observers.some( (observer) => - resolveStaleTime(observer.options.staleTime, this) === 'static', + resolveValueOrFunction(observer.options.staleTime, this) === 'static', ) } @@ -691,17 +690,12 @@ function getDefaultState< >( options: QueryOptions, ): QueryState { - const data = - typeof options.initialData === 'function' - ? (options.initialData as InitialDataFunction)() - : options.initialData + const data = resolveValueOrFunction(options.initialData) const hasData = data !== undefined const initialDataUpdatedAt = hasData - ? typeof options.initialDataUpdatedAt === 'function' - ? (options.initialDataUpdatedAt as () => number | undefined)() - : options.initialDataUpdatedAt + ? resolveValueOrFunction(options.initialDataUpdatedAt) : 0 return { diff --git a/packages/query-core/src/queryClient.ts b/packages/query-core/src/queryClient.ts index 5154ecb535..a2d2dafb3b 100644 --- a/packages/query-core/src/queryClient.ts +++ b/packages/query-core/src/queryClient.ts @@ -4,7 +4,7 @@ import { hashQueryKeyByOptions, noop, partialMatchKey, - resolveStaleTime, + resolveValueOrFunction, skipToken, } from './utils' import { QueryCache } from './queryCache' @@ -155,7 +155,9 @@ export class QueryClient { if ( options.revalidateIfStale && - query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query)) + query.isStaleByTime( + resolveValueOrFunction(defaultedOptions.staleTime, query), + ) ) { void this.prefetchQuery(defaultedOptions) } @@ -363,7 +365,7 @@ export class QueryClient { const query = this.#queryCache.build(this, defaultedOptions) return query.isStaleByTime( - resolveStaleTime(defaultedOptions.staleTime, query), + resolveValueOrFunction(defaultedOptions.staleTime, query), ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data as TData) diff --git a/packages/query-core/src/queryObserver.ts b/packages/query-core/src/queryObserver.ts index f2b961eb27..2bfa87e3a1 100644 --- a/packages/query-core/src/queryObserver.ts +++ b/packages/query-core/src/queryObserver.ts @@ -8,8 +8,7 @@ import { isValidTimeout, noop, replaceData, - resolveEnabled, - resolveStaleTime, + resolveValueOrFunction, shallowEqualObjects, timeUntilStale, } from './utils' @@ -19,7 +18,6 @@ import type { PendingThenable, Thenable } from './thenable' import type { DefaultError, DefaultedQueryObserverOptions, - PlaceholderDataFunction, QueryKey, QueryObserverBaseResult, QueryObserverOptions, @@ -157,8 +155,10 @@ export class QueryObserver< this.options.enabled !== undefined && typeof this.options.enabled !== 'boolean' && typeof this.options.enabled !== 'function' && - typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== - 'boolean' + typeof resolveValueOrFunction( + this.options.enabled, + this.#currentQuery, + ) !== 'boolean' ) { throw new Error( 'Expected enabled to be a boolean or a callback that returns a boolean', @@ -201,10 +201,10 @@ export class QueryObserver< if ( mounted && (this.#currentQuery !== prevQuery || - resolveEnabled(this.options.enabled, this.#currentQuery) !== - resolveEnabled(prevOptions.enabled, this.#currentQuery) || - resolveStaleTime(this.options.staleTime, this.#currentQuery) !== - resolveStaleTime(prevOptions.staleTime, this.#currentQuery)) + resolveValueOrFunction(this.options.enabled, this.#currentQuery) !== + resolveValueOrFunction(prevOptions.enabled, this.#currentQuery) || + resolveValueOrFunction(this.options.staleTime, this.#currentQuery) !== + resolveValueOrFunction(prevOptions.staleTime, this.#currentQuery)) ) { this.#updateStaleTimeout() } @@ -215,8 +215,8 @@ export class QueryObserver< if ( mounted && (this.#currentQuery !== prevQuery || - resolveEnabled(this.options.enabled, this.#currentQuery) !== - resolveEnabled(prevOptions.enabled, this.#currentQuery) || + resolveValueOrFunction(this.options.enabled, this.#currentQuery) !== + resolveValueOrFunction(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval) ) { this.#updateRefetchInterval(nextRefetchInterval) @@ -344,7 +344,7 @@ export class QueryObserver< #updateStaleTimeout(): void { this.#clearStaleTimeout() - const staleTime = resolveStaleTime( + const staleTime = resolveValueOrFunction( this.options.staleTime, this.#currentQuery, ) @@ -368,9 +368,10 @@ export class QueryObserver< #computeRefetchInterval() { return ( - (typeof this.options.refetchInterval === 'function' - ? this.options.refetchInterval(this.#currentQuery) - : this.options.refetchInterval) ?? false + resolveValueOrFunction( + this.options.refetchInterval, + this.#currentQuery, + ) ?? false ) } @@ -381,7 +382,8 @@ export class QueryObserver< if ( isServer || - resolveEnabled(this.options.enabled, this.#currentQuery) === false || + resolveValueOrFunction(this.options.enabled, this.#currentQuery) === + false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0 ) { @@ -489,15 +491,11 @@ export class QueryObserver< skipSelect = true } else { // compute placeholderData - placeholderData = - typeof options.placeholderData === 'function' - ? ( - options.placeholderData as unknown as PlaceholderDataFunction - )( - this.#lastQueryWithDefinedData?.state.data, - this.#lastQueryWithDefinedData as any, - ) - : options.placeholderData + placeholderData = resolveValueOrFunction( + options.placeholderData, + this.#lastQueryWithDefinedData?.state.data, + this.#lastQueryWithDefinedData as any, + ) } if (placeholderData !== undefined) { @@ -660,9 +658,7 @@ export class QueryObserver< const { notifyOnChangeProps } = this.options const notifyOnChangePropsValue = - typeof notifyOnChangeProps === 'function' - ? notifyOnChangeProps() - : notifyOnChangeProps + resolveValueOrFunction(notifyOnChangeProps) if ( notifyOnChangePropsValue === 'all' || @@ -740,7 +736,7 @@ function shouldLoadOnMount( options: QueryObserverOptions, ): boolean { return ( - resolveEnabled(options.enabled, query) !== false && + resolveValueOrFunction(options.enabled, query) !== false && query.state.data === undefined && !(query.state.status === 'error' && options.retryOnMount === false) ) @@ -765,10 +761,10 @@ function shouldFetchOn( (typeof options)['refetchOnReconnect'], ) { if ( - resolveEnabled(options.enabled, query) !== false && - resolveStaleTime(options.staleTime, query) !== 'static' + resolveValueOrFunction(options.enabled, query) !== false && + resolveValueOrFunction(options.staleTime, query) !== 'static' ) { - const value = typeof field === 'function' ? field(query) : field + const value = resolveValueOrFunction(field, query) return value === 'always' || (value !== false && isStale(query, options)) } @@ -783,7 +779,7 @@ function shouldFetchOptionally( ): boolean { return ( (query !== prevQuery || - resolveEnabled(prevOptions.enabled, query) === false) && + resolveValueOrFunction(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options) ) @@ -794,8 +790,8 @@ function isStale( options: QueryObserverOptions, ): boolean { return ( - resolveEnabled(options.enabled, query) !== false && - query.isStaleByTime(resolveStaleTime(options.staleTime, query)) + resolveValueOrFunction(options.enabled, query) !== false && + query.isStaleByTime(resolveValueOrFunction(options.staleTime, query)) ) } diff --git a/packages/query-core/src/retryer.ts b/packages/query-core/src/retryer.ts index baa93aa5b4..b8573445cc 100644 --- a/packages/query-core/src/retryer.ts +++ b/packages/query-core/src/retryer.ts @@ -1,7 +1,7 @@ import { focusManager } from './focusManager' import { onlineManager } from './onlineManager' import { pendingThenable } from './thenable' -import { isServer, sleep } from './utils' +import { isServer, resolveValueOrFunction, sleep } from './utils' import type { CancelOptions, DefaultError, NetworkMode } from './types' // TYPES @@ -166,10 +166,7 @@ export function createRetryer( // Do we need to retry the request? const retry = config.retry ?? (isServer ? 0 : 3) const retryDelay = config.retryDelay ?? defaultRetryDelay - const delay = - typeof retryDelay === 'function' - ? retryDelay(failureCount, error) - : retryDelay + const delay = resolveValueOrFunction(retryDelay, failureCount, error) const shouldRetry = retry === true || (typeof retry === 'number' && failureCount < retry) || diff --git a/packages/query-core/src/types.ts b/packages/query-core/src/types.ts index e4ed081539..ec2bdeaf8a 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -166,9 +166,7 @@ export type QueryFunctionContext< export type InitialDataFunction = () => T | undefined -type NonFunctionGuard = T extends Function ? never : T - -export type PlaceholderDataFunction< +type PlaceholderDataFunction< TQueryFnData = unknown, TError = DefaultError, TQueryData = TQueryFnData, @@ -424,13 +422,8 @@ export interface QueryObserverOptions< * If set, this value will be used as the placeholder data for this particular query observer while the query is still in the `loading` data and no initialData has been provided. */ placeholderData?: - | NonFunctionGuard - | PlaceholderDataFunction< - NonFunctionGuard, - TError, - NonFunctionGuard, - TQueryKey - > + | TQueryData + | PlaceholderDataFunction _optimisticResults?: 'optimistic' | 'isRestoring' diff --git a/packages/query-core/src/utils.ts b/packages/query-core/src/utils.ts index f4bde86c8d..a9e66c0d12 100644 --- a/packages/query-core/src/utils.ts +++ b/packages/query-core/src/utils.ts @@ -1,17 +1,14 @@ +import type { Mutation } from './mutation' +import type { FetchOptions, Query } from './query' import type { DefaultError, - Enabled, FetchStatus, MutationKey, MutationStatus, QueryFunction, QueryKey, QueryOptions, - StaleTime, - StaleTimeFunction, } from './types' -import type { Mutation } from './mutation' -import type { FetchOptions, Query } from './query' // TYPES @@ -80,6 +77,94 @@ export function noop(): void export function noop(): undefined export function noop() {} +/** + * Type guard that checks if a value is the function variant of a union type. + * + * This utility is designed for the common pattern in TanStack Query where options + * can be either a direct value or a function that computes that value. + * + * @template T - The direct value type + * @template TArgs - Array of argument types that the function variant accepts + * @param value - The value to check, which can be either T or a function that returns something + * @returns True if the value is a function, false otherwise. When true, TypeScript narrows the type to the function variant. + * + * @example + * ```ts + * // Basic usage with no arguments + * const initialData: string | (() => string) = getValue() + * if (isFunctionVariant(initialData)) { + * // TypeScript knows initialData is () => string here + * const result = initialData() + * } + * ``` + * + * @example + * ```ts + * // Usage with function arguments + * const staleTime: number | ((query: Query) => number) = getStaleTime() + * if (isFunctionVariant(staleTime)) { + * // TypeScript knows staleTime is (query: Query) => number here + * const result = staleTime(query) + * } + * ``` + */ +function isFunctionVariant = []>( + value: T | ((...args: TArgs) => any), +): value is (...args: TArgs) => any { + return typeof value === 'function' +} + +/** + * Resolves a value that can either be a direct value or a function that computes the value. + * + * This utility eliminates the need for repetitive `typeof value === 'function'` checks + * throughout the codebase and provides a clean way to handle the common pattern where + * options can be static values or dynamic functions. + * + * @template T - The type of the resolved value + * @template TArgs - Array of argument types when resolving function variants + * @param value - Either a direct value of type T or a function that returns T + * @param args - Arguments to pass to the function if value is a function + * @returns The resolved value of type T + * + * @example + * ```ts + * // Zero-argument function resolution (like initialData) + * const initialData: string | (() => string) = 'hello' + * const resolved = resolveValueOrFunction(initialData) // 'hello' + * + * const initialDataFn: string | (() => string) = () => 'world' + * const resolved2 = resolveValueOrFunction(initialDataFn) // 'world' + * ``` + * + * @example + * ```ts + * // Function with arguments (like staleTime, retryDelay) + * const staleTime: number | ((query: Query) => number) = (query) => query.state.dataUpdatedAt + 5000 + * const resolved = resolveValueOrFunction(staleTime, query) // number + * + * const retryDelay: number | ((failureCount: number, error: Error) => number) = 1000 + * const resolved2 = resolveValueOrFunction(retryDelay, 3, new Error()) // 1000 + * ``` + * + * @example + * ```ts + * // Replaces verbose patterns like: + * // const delay = typeof retryDelay === 'function' + * // ? retryDelay(failureCount, error) + * // : retryDelay + * + * // With: + * const delay = resolveValueOrFunction(retryDelay, failureCount, error) + * ``` + */ +export function resolveValueOrFunction>( + value: T | ((...args: TArgs) => T), + ...args: TArgs +): T { + return isFunctionVariant(value) ? value(...args) : value +} + export function functionalUpdate( updater: Updater, input: TInput, @@ -97,32 +182,6 @@ export function timeUntilStale(updatedAt: number, staleTime?: number): number { return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0) } -export function resolveStaleTime< - TQueryFnData = unknown, - TError = DefaultError, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, ->( - staleTime: - | undefined - | StaleTimeFunction, - query: Query, -): StaleTime | undefined { - return typeof staleTime === 'function' ? staleTime(query) : staleTime -} - -export function resolveEnabled< - TQueryFnData = unknown, - TError = DefaultError, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, ->( - enabled: undefined | Enabled, - query: Query, -): boolean | undefined { - return typeof enabled === 'function' ? enabled(query) : enabled -} - export function matchQuery( filters: QueryFilters, query: Query, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b99438e2ea..a51c159ba6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2180,7 +2180,7 @@ importers: version: 5.6.3(webpack@5.98.0) webpack: specifier: ^5.96.1 - version: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) + version: 5.98.0(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack@5.98.0) @@ -2267,6 +2267,9 @@ importers: npm-run-all2: specifier: ^5.0.0 version: 5.0.2 + tsup: + specifier: ^8.4.0 + version: 8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(tsx@4.20.1)(typescript@5.8.3)(yaml@2.8.0) packages/angular-query-experimental: dependencies: @@ -16891,7 +16894,7 @@ snapshots: '@astrojs/telemetry@3.2.0': dependencies: ci-info: 4.2.0 - debug: 4.4.0 + debug: 4.4.1 dlv: 1.1.3 dset: 3.1.4 is-docker: 3.0.0 @@ -16979,7 +16982,7 @@ snapshots: '@babel/traverse': 7.27.1 '@babel/types': 7.27.1 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -19483,7 +19486,7 @@ snapshots: '@eslint/config-array@0.19.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.4.0 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -19511,7 +19514,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.4.0 + debug: 4.4.1 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -19592,7 +19595,7 @@ snapshots: ci-info: 3.9.0 compression: 1.8.0 connect: 3.7.0 - debug: 4.4.0 + debug: 4.4.1 env-editor: 0.4.2 fast-glob: 3.3.3 form-data: 3.0.1 @@ -19652,7 +19655,7 @@ snapshots: '@expo/plist': 0.2.0 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.4.1 getenv: 1.0.0 glob: 10.4.5 resolve-from: 5.0.0 @@ -19717,7 +19720,7 @@ snapshots: '@expo/spawn-async': 1.7.2 arg: 5.0.2 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.4.1 find-up: 5.0.0 getenv: 1.0.0 minimatch: 3.1.2 @@ -19763,7 +19766,7 @@ snapshots: '@expo/json-file': 9.0.0 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.4.1 fs-extra: 9.1.0 getenv: 1.0.0 glob: 10.4.5 @@ -21189,13 +21192,13 @@ snapshots: '@remix-run/router@1.18.0': {} - '@rollup/plugin-alias@5.1.1(rollup@4.40.1)': + '@rollup/plugin-alias@5.1.1(rollup@4.40.2)': optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 - '@rollup/plugin-commonjs@28.0.3(rollup@4.40.1)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.40.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.4(picomatch@4.0.2) @@ -21203,54 +21206,46 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 - '@rollup/plugin-inject@5.0.5(rollup@4.40.1)': + '@rollup/plugin-inject@5.0.5(rollup@4.40.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) estree-walker: 2.0.2 magic-string: 0.30.17 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 - '@rollup/plugin-json@6.1.0(rollup@4.40.1)': + '@rollup/plugin-json@6.1.0(rollup@4.40.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.40.1)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.40.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 - '@rollup/plugin-replace@6.0.2(rollup@4.40.1)': + '@rollup/plugin-replace@6.0.2(rollup@4.40.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) magic-string: 0.30.17 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 - '@rollup/plugin-terser@0.4.4(rollup@4.40.1)': + '@rollup/plugin-terser@0.4.4(rollup@4.40.2)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.39.0 optionalDependencies: - rollup: 4.40.1 - - '@rollup/pluginutils@5.1.4(rollup@4.40.1)': - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 '@rollup/pluginutils@5.1.4(rollup@4.40.2)': dependencies: @@ -22336,7 +22331,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.8.3) '@typescript-eslint/utils': 8.18.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - debug: 4.4.0 + debug: 4.4.1 eslint: 9.29.0(jiti@2.4.2) ts-api-utils: 1.3.0(typescript@5.8.3) typescript: 5.8.3 @@ -22533,25 +22528,6 @@ snapshots: - rollup - supports-color - '@vercel/nft@0.29.2(rollup@4.40.1)': - dependencies: - '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) - acorn: 8.14.1 - acorn-import-attributes: 1.9.5(acorn@8.14.1) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - node-gyp-build: 4.8.1 - picomatch: 4.0.2 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - '@vercel/routing-utils@5.0.4': dependencies: path-to-regexp: 6.1.0 @@ -23042,7 +23018,7 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.98.0)': dependencies: - webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) + webpack: 5.98.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.98.0) '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': @@ -23052,7 +23028,7 @@ snapshots: '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.98.0)': dependencies: - webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) + webpack: 5.98.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.98.0) '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': @@ -23061,7 +23037,7 @@ snapshots: '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.98.0)': dependencies: - webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) + webpack: 5.98.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.98.0) '@xmldom/xmldom@0.7.13': {} @@ -23553,7 +23529,7 @@ snapshots: '@babel/core': 7.26.10 find-cache-dir: 4.0.0 schema-utils: 4.3.0 - webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) + webpack: 5.98.0(webpack-cli@5.1.4) babel-plugin-istanbul@6.1.1: dependencies: @@ -23939,9 +23915,9 @@ snapshots: builtins@1.0.3: {} - bundle-require@5.1.0(esbuild@0.25.3): + bundle-require@5.1.0(esbuild@0.25.5): dependencies: - esbuild: 0.25.3 + esbuild: 0.25.5 load-tsconfig: 0.2.5 busboy@1.6.0: @@ -26657,7 +26633,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) + webpack: 5.98.0(webpack-cli@5.1.4) htmlparser2@10.0.0: dependencies: @@ -26712,7 +26688,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -28818,14 +28794,14 @@ snapshots: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@netlify/functions': 3.0.4 - '@rollup/plugin-alias': 5.1.1(rollup@4.40.1) - '@rollup/plugin-commonjs': 28.0.3(rollup@4.40.1) - '@rollup/plugin-inject': 5.0.5(rollup@4.40.1) - '@rollup/plugin-json': 6.1.0(rollup@4.40.1) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.40.1) - '@rollup/plugin-replace': 6.0.2(rollup@4.40.1) - '@rollup/plugin-terser': 0.4.4(rollup@4.40.1) - '@vercel/nft': 0.29.2(rollup@4.40.1) + '@rollup/plugin-alias': 5.1.1(rollup@4.40.2) + '@rollup/plugin-commonjs': 28.0.3(rollup@4.40.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.40.2) + '@rollup/plugin-json': 6.1.0(rollup@4.40.2) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.40.2) + '@rollup/plugin-replace': 6.0.2(rollup@4.40.2) + '@rollup/plugin-terser': 0.4.4(rollup@4.40.2) + '@vercel/nft': 0.29.2(encoding@0.1.13)(rollup@4.40.2) archiver: 7.0.1 c12: 3.0.2(magicast@0.3.5) chokidar: 4.0.3 @@ -28867,8 +28843,8 @@ snapshots: pkg-types: 2.1.0 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.40.1 - rollup-plugin-visualizer: 5.14.0(rollup@4.40.1) + rollup: 4.40.2 + rollup-plugin-visualizer: 5.14.0(rollup@4.40.2) scule: 1.3.0 semver: 7.7.2 serve-placeholder: 2.0.2 @@ -30543,14 +30519,14 @@ snapshots: magic-string: 0.30.17 rollup: 4.40.2 - rollup-plugin-visualizer@5.14.0(rollup@4.40.1): + rollup-plugin-visualizer@5.14.0(rollup@4.40.2): dependencies: open: 8.4.2 picomatch: 4.0.2 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 rollup@4.40.1: dependencies: @@ -31584,16 +31560,14 @@ snapshots: webpack-sources: 1.4.3 worker-farm: 1.7.0 - terser-webpack-plugin@5.3.11(esbuild@0.25.3)(webpack@5.98.0): + terser-webpack-plugin@5.3.11(webpack@5.98.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) - optionalDependencies: - esbuild: 0.25.3 + webpack: 5.98.0(webpack-cli@5.1.4) terser@4.8.1: dependencies: @@ -31808,17 +31782,17 @@ snapshots: tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(tsx@4.20.1)(typescript@5.8.3)(yaml@2.8.0): dependencies: - bundle-require: 5.1.0(esbuild@0.25.3) + bundle-require: 5.1.0(esbuild@0.25.5) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 - debug: 4.4.0 - esbuild: 0.25.3 + debug: 4.4.1 + esbuild: 0.25.5 joycon: 3.1.1 picocolors: 1.1.1 postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.20.1)(yaml@2.8.0) resolve-from: 5.0.0 - rollup: 4.40.1 + rollup: 4.40.2 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 @@ -32840,7 +32814,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) + webpack: 5.98.0(webpack-cli@5.1.4) webpack-merge: 5.10.0 webpack-merge@5.10.0: @@ -32888,7 +32862,7 @@ snapshots: transitivePeerDependencies: - supports-color - webpack@5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4): + webpack@5.98.0(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -32910,7 +32884,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(esbuild@0.25.3)(webpack@5.98.0) + terser-webpack-plugin: 5.3.11(webpack@5.98.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: