@echojs-ecosystem/query 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -0
- package/dist/index.d.ts +822 -0
- package/dist/index.js +2140 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/provider/context.ts","../src/client/default-client.ts","../src/core/cancelled-error.ts","../src/core/removable.ts","../src/utils/sleep.ts","../src/core/retryer.ts","../src/core/query-state.ts","../src/async/lifecycle.ts","../src/async/abort-control.ts","../src/utils/hash.ts","../src/utils/functional-update.ts","../src/core/query.ts","../src/query/query-options.ts","../src/query/query-status.ts","../src/query/query-observer.ts","../src/query/query-instance.ts","../src/query/create-query.ts","../src/core/infinite-query-state.ts","../src/core/infinite-query.ts","../src/query/infinite-query-status.ts","../src/query/infinite-query-observer.ts","../src/query/infinite-query-instance.ts","../src/query/infinite-query-options.ts","../src/query/create-infinite-query.ts","../src/core/subscribable.ts","../src/utils/match-query.ts","../src/core/query-cache.ts","../src/core/infinite-query-cache.ts","../src/core/mutation-cache.ts","../src/managers/register-client.ts","../src/client/query-client.ts","../src/core/mutation.ts","../src/mutation/mutation-instance.ts","../src/mutation/create-mutation.ts","../src/provider/query-provider.ts","../src/plugin/query-plugin.ts","../src/managers/refetch-stale.ts","../src/managers/focus-manager.ts","../src/managers/online-manager.ts"],"names":["signal","DEFAULT_CACHE_TIME_MS","effect","computed"],"mappings":"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","file":"index.js","sourcesContent":["import type { QueryProvider } from './query-provider'\n\nlet activeProvider: QueryProvider | null = null\n\nexport const getQueryProvider = (): QueryProvider | null => activeProvider\n\nexport const requireQueryProvider = (): QueryProvider => {\n if (!activeProvider) {\n throw new Error(\n 'Query provider is not installed. Call app.use(createQueryProvider(...)) before using queries.',\n )\n }\n return activeProvider\n}\n\nexport const setActiveQueryProvider = (provider: QueryProvider | null): void => {\n activeProvider = provider\n}\n\nexport const resetQueryProvider = (): void => {\n activeProvider = null\n}\n","import type { QueryClient } from '../types'\n\nlet defaultClient: QueryClient | null = null\nlet pendingFactory: (() => QueryClient) | null = null\n\nexport const setDefaultQueryClient = (client: QueryClient): void => {\n defaultClient = client\n}\n\nexport const registerDefaultQueryClientFactory = (factory: () => QueryClient): void => {\n pendingFactory = factory\n}\n\nexport const getDefaultQueryClient = (): QueryClient => {\n if (!defaultClient) {\n if (!pendingFactory) {\n throw new Error(\n '@echojs-ecosystem/query: no default QueryClient. Call createQueryClient() first or pass { client } to .with().',\n )\n }\n defaultClient = pendingFactory()\n pendingFactory = null\n }\n return defaultClient\n}\n\nexport const resetDefaultQueryClient = (): void => {\n defaultClient = null\n pendingFactory = null\n}\n","export type CancelOptions = {\n revert?: boolean\n silent?: boolean\n}\n\nexport class CancelledError extends Error {\n readonly revert?: boolean\n readonly silent?: boolean\n\n constructor(options?: CancelOptions) {\n super('CancelledError')\n this.name = 'CancelledError'\n this.revert = options?.revert\n this.silent = options?.silent\n }\n}\n\nexport const isCancelledError = (value: unknown): value is CancelledError =>\n value instanceof CancelledError\n\nexport const isAbortError = (value: unknown): boolean => {\n if (isCancelledError(value)) return true\n if (!value || typeof value !== 'object') return false\n if (value instanceof DOMException && value.name === 'AbortError') return true\n return (value as { name?: string }).name === 'AbortError'\n}\n","export class Removable {\n protected gcTimeoutId: ReturnType<typeof setTimeout> | undefined\n protected gcTimeMs = Number.POSITIVE_INFINITY\n\n protected scheduleGc(onRemove: () => void): void {\n this.clearGcTimeout()\n if (!Number.isFinite(this.gcTimeMs)) return\n\n this.gcTimeoutId = setTimeout(() => {\n onRemove()\n }, this.gcTimeMs)\n }\n\n protected clearGcTimeout(): void {\n if (this.gcTimeoutId !== undefined) {\n clearTimeout(this.gcTimeoutId)\n this.gcTimeoutId = undefined\n }\n }\n\n updateGcTime(cacheTimeMs: number): void {\n this.gcTimeMs = cacheTimeMs\n }\n}\n","export const sleep = (ms: number): Promise<void> =>\n new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n","import { CancelledError, isAbortError, isCancelledError } from './cancelled-error'\nimport { sleep } from '../utils/sleep'\n\nexport type RetryValue = boolean | number | ((failureCount: number, error: unknown) => boolean)\nexport type RetryDelayValue = number | ((failureCount: number, error: unknown) => number)\n\nexport type RetryerConfig<TData> = {\n fn: () => TData | Promise<TData>\n initialPromise?: Promise<TData>\n onCancel?: (error: CancelledError) => void\n onFail?: (failureCount: number, error: unknown) => void\n retry?: RetryValue\n retryDelay?: RetryDelayValue\n}\n\nconst defaultRetryDelay = (failureCount: number): number =>\n Math.min(1000 * 2 ** failureCount, 30_000)\n\nconst shouldRetry = (\n failureCount: number,\n error: unknown,\n retry: RetryValue | undefined,\n): boolean => {\n if (retry === false || retry === undefined) return false\n if (typeof retry === 'number') return failureCount < retry\n if (retry === true) return true\n return retry(failureCount, error)\n}\n\nconst getRetryDelay = (\n failureCount: number,\n error: unknown,\n retryDelay: RetryDelayValue | undefined,\n): number => {\n if (typeof retryDelay === 'function') return retryDelay(failureCount, error)\n if (typeof retryDelay === 'number') return retryDelay\n return defaultRetryDelay(failureCount)\n}\n\nexport type Retryer<TData> = {\n promise: Promise<TData>\n cancel: (options?: { silent?: boolean }) => void\n start: () => Promise<TData>\n}\n\n/** Adapted from TanStack Query createRetryer. */\nexport const createRetryer = <TData>(config: RetryerConfig<TData>): Retryer<TData> => {\n let failureCount = 0\n let rejectFn!: (error: unknown) => void\n let resolveFn!: (value: TData) => void\n let settled = false\n\n const promise = new Promise<TData>((resolve, reject) => {\n resolveFn = resolve\n rejectFn = reject\n })\n\n const cancel = (options?: { silent?: boolean }): void => {\n if (settled) return\n const error = new CancelledError({ silent: options?.silent })\n config.onCancel?.(error)\n settled = true\n rejectFn(error)\n }\n\n const run = (): void => {\n if (settled) return\n\n const initialPromise = failureCount === 0 ? config.initialPromise : undefined\n\n Promise.resolve(initialPromise ?? config.fn())\n .then((value) => {\n if (settled) return\n settled = true\n resolveFn(value)\n })\n .catch(async (error) => {\n if (settled) return\n\n if (isCancelledError(error) || isAbortError(error)) {\n settled = true\n rejectFn(error)\n return\n }\n\n if (shouldRetry(failureCount, error, config.retry)) {\n failureCount += 1\n config.onFail?.(failureCount, error)\n await sleep(getRetryDelay(failureCount, error, config.retryDelay))\n if (!settled) run()\n return\n }\n\n settled = true\n rejectFn(error)\n })\n }\n\n return {\n promise,\n cancel,\n start: () => {\n run()\n return promise\n },\n }\n}\n","import type { QueryFetchStatus, QueryStatus } from '../types'\n\nexport type QueryState<Data, Error> = {\n data: Data | undefined\n error: Error | null\n status: QueryStatus\n fetchStatus: QueryFetchStatus\n dataUpdatedAt: number\n errorUpdatedAt: number\n fetchFailureCount: number\n isInvalidated: boolean\n hadSuccess: boolean\n}\n\nexport type QueryAction<Data, Error> =\n | { type: 'fetch' }\n | { type: 'success'; data: Data }\n | { type: 'error'; error: Error }\n | { type: 'failed'; failureCount: number; error: Error }\n | { type: 'invalidate' }\n | { type: 'setState'; state: Partial<QueryState<Data, Error>> }\n\nexport const defaultQueryState = <Data, Error>(): QueryState<Data, Error> => ({\n data: undefined,\n error: null,\n status: 'idle',\n fetchStatus: 'idle',\n dataUpdatedAt: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n isInvalidated: false,\n hadSuccess: false,\n})\n\nexport const queryReducer = <Data, Error>(\n state: QueryState<Data, Error>,\n action: QueryAction<Data, Error>,\n): QueryState<Data, Error> => {\n switch (action.type) {\n case 'fetch':\n return {\n ...state,\n fetchStatus: 'fetching',\n ...(state.data === undefined && state.status === 'idle'\n ? { status: 'pending' as const, error: null }\n : {}),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n error: null,\n status: 'success',\n fetchStatus: 'idle',\n dataUpdatedAt: Date.now(),\n fetchFailureCount: 0,\n isInvalidated: false,\n hadSuccess: true,\n }\n case 'error':\n return {\n ...state,\n error: action.error,\n status: 'error',\n fetchStatus: 'idle',\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n isInvalidated: true,\n }\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n error: action.error,\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n default:\n return state\n }\n}\n\nexport const timeUntilStale = (updatedAt: number, staleTimeMs = 0): number =>\n Math.max(updatedAt + staleTimeMs - Date.now(), 0)\n\nexport const isStaleByTime = (\n dataUpdatedAt: number,\n staleTimeMs: number,\n isInvalidated: boolean,\n hasData: boolean,\n): boolean => {\n if (!hasData) return true\n if (isInvalidated) return true\n if (!Number.isFinite(staleTimeMs)) return false\n return timeUntilStale(dataUpdatedAt, staleTimeMs) === 0\n}\n","import type { QueryLifecycleContext } from '../types'\n\nexport const runLifecycle = async <TData, TParams = void, TError = unknown>(\n hooks: {\n onStart?: (ctx: QueryLifecycleContext<TData, TParams, TError>) => void\n onSuccess?: (ctx: QueryLifecycleContext<TData, TParams, TError>) => void\n onError?: (ctx: QueryLifecycleContext<TData, TParams, TError>) => void\n onSettled?: (ctx: QueryLifecycleContext<TData, TParams, TError>) => void\n },\n phase: 'start' | 'success' | 'error' | 'settled',\n ctx: QueryLifecycleContext<TData, TParams, TError>,\n): Promise<void> => {\n if (phase === 'start') hooks.onStart?.(ctx)\n if (phase === 'success') hooks.onSuccess?.(ctx)\n if (phase === 'error') hooks.onError?.(ctx)\n if (phase === 'settled') hooks.onSettled?.(ctx)\n}\n","export type AbortInput = AbortController | AbortSignal | (() => AbortController | AbortSignal)\n\nexport type FetchAbortSource = {\n abortController?: AbortInput\n signal?: AbortInput\n}\n\nexport type FetchAbortHandle = {\n readonly controller: AbortController\n readonly signal: AbortSignal\n /** `false` when user passed their own AbortController */\n readonly ownsController: boolean\n abort(reason?: unknown): void\n dispose(): void\n}\n\nexport type CancelOptions = {\n silent?: boolean\n reason?: unknown\n}\n\nexport const resolveAbortInput = (\n input?: AbortInput,\n): AbortController | AbortSignal | undefined => {\n if (!input) return undefined\n if (typeof input === 'function') return input()\n return input\n}\n\nexport const abortWithReason = (\n controller: AbortController | undefined,\n reason?: unknown,\n): void => {\n if (!controller || controller.signal.aborted) return\n try {\n controller.abort(reason)\n } catch {\n controller.abort()\n }\n}\n\nconst linkSignal = (source: AbortSignal, target: AbortController): (() => void) => {\n if (source.aborted) {\n abortWithReason(target, source.reason)\n return () => {}\n }\n\n const listener = () => abortWithReason(target, source.reason)\n source.addEventListener('abort', listener, { once: true })\n return () => source.removeEventListener('abort', listener)\n}\n\nexport const mergeFetchAbortSource = (\n ...sources: (FetchAbortSource | undefined)[]\n): FetchAbortSource => {\n let abortController: AbortInput | undefined\n let signal: AbortInput | undefined\n\n for (const source of sources) {\n if (!source) continue\n if (source.abortController !== undefined) abortController = source.abortController\n if (source.signal !== undefined) signal = source.signal\n }\n\n return { abortController, signal }\n}\n\n/** Creates the effective AbortController/signal for one fetch or mutation run. */\nexport const createFetchAbortHandle = (source?: FetchAbortSource): FetchAbortHandle => {\n const controllerInput = resolveAbortInput(source?.abortController)\n const signalInput = resolveAbortInput(source?.signal)\n const unlinks: (() => void)[] = []\n\n let controller: AbortController\n let ownsController: boolean\n\n if (controllerInput instanceof AbortController) {\n controller = controllerInput\n ownsController = false\n } else if (controllerInput instanceof AbortSignal) {\n controller = new AbortController()\n ownsController = true\n unlinks.push(linkSignal(controllerInput, controller))\n } else {\n controller = new AbortController()\n ownsController = true\n }\n\n if (signalInput) {\n const external =\n signalInput instanceof AbortSignal ? signalInput : signalInput.signal\n if (external !== controller.signal) {\n unlinks.push(linkSignal(external, controller))\n }\n }\n\n return {\n controller,\n signal: controller.signal,\n ownsController,\n abort: (reason) => abortWithReason(controller, reason),\n dispose: () => {\n for (const unlink of unlinks) unlink()\n },\n }\n}\n","import type { QueryFilter, QueryKey } from '../types'\n\nconst hasObjectPrototype = (value: unknown): boolean =>\n Object.prototype.toString.call(value) === '[object Object]'\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (!hasObjectPrototype(value)) return false\n const record = value as Record<string, unknown>\n const ctor = record.constructor\n if (ctor === undefined) return true\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) return false\n if (!Object.prototype.hasOwnProperty.call(prot, 'isPrototypeOf')) return false\n if (Object.getPrototypeOf(value) !== Object.prototype) return false\n return true\n}\n\n/** TanStack Query stable hash — sorts object keys recursively. */\nexport const hashKey = (queryKey: QueryKey): string =>\n JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce<Record<string, unknown>>((result, key) => {\n result[key] = val[key]\n return result\n }, {})\n : val,\n )\n\nexport const stableHash = hashKey\nexport const normalizeQueryKey = (key: QueryKey): QueryKey => key\n\n/** TanStack Query partial key match. */\nexport const partialMatchKey = (a: QueryKey, b: QueryKey): boolean => {\n if (a === b) return true\n if (typeof a !== typeof b) return false\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const bRecord = b as unknown as Record<string, unknown>\n const aRecord = a as unknown as Record<string, unknown>\n return Object.keys(bRecord).every((key) =>\n partialMatchKey(aRecord[key] as QueryKey, bRecord[key] as QueryKey),\n )\n }\n return false\n}\n\nexport const exactKeyMatch = (target: QueryKey, filter: QueryKey): boolean =>\n filter.length === target.length && partialMatchKey(target, filter)\n\nconst isQueryFilterObject = (\n filter: QueryFilter,\n): filter is { queryKey: QueryKey; exact?: boolean } => !Array.isArray(filter)\n\nexport const matchesQueryFilter = (target: QueryKey, filter: QueryFilter): boolean => {\n if (Array.isArray(filter)) {\n if (filter.length === 0) return true\n return partialMatchKey(target, filter)\n }\n if (isQueryFilterObject(filter)) {\n return filter.exact\n ? exactKeyMatch(target, filter.queryKey)\n : partialMatchKey(target, filter.queryKey)\n }\n return false\n}\n","export type Updater<TInput, TOutput = TInput> = TOutput | ((input: TInput) => TOutput)\n\nexport const functionalUpdate = <TInput, TOutput = TInput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput =>\n typeof updater === 'function'\n ? (updater as (value: TInput) => TOutput)(input)\n : updater\n","import { signal } from '@echojs-ecosystem/reactivity'\n\nimport { CancelledError, isCancelledError } from './cancelled-error'\nimport { Removable } from './removable'\nimport { createRetryer } from './retryer'\nimport {\n defaultQueryState,\n isStaleByTime,\n queryReducer,\n type QueryAction,\n type QueryState,\n} from './query-state'\nimport type { QueryCache } from './query-cache'\nimport type {\n QueryClient,\n QueryDefinition,\n QueryFetchStatus,\n QueryKey,\n QueryLifecycleContext,\n QueryStatus,\n ResolvedInstanceOptions,\n} from '../types'\nimport { runLifecycle } from '../async/lifecycle'\nimport {\n abortWithReason,\n createFetchAbortHandle,\n mergeFetchAbortSource,\n type CancelOptions,\n type FetchAbortSource,\n} from '../async/abort-control'\nimport { hashKey } from '../utils/hash'\nimport { functionalUpdate } from '../utils/functional-update'\n\nexport type QueryObserverLike = {\n onQueryUpdate(): void\n}\n\nexport type QueryConfig<\n TData,\n TParams = void,\n TError = unknown,\n TQueryData = TData,\n> = {\n client: QueryClient\n cache: QueryCache\n definition: QueryDefinition<TData, TParams, TError, TQueryData>\n params: TParams\n queryKey: QueryKey\n options: ResolvedInstanceOptions<TData, TParams, TError>\n}\n\nexport class Query<TData, TParams = void, TError = unknown, TQueryData = TData> extends Removable {\n readonly queryKey: QueryKey\n readonly queryHash: string\n readonly definition: QueryDefinition<TData, TParams, TError, TQueryData>\n readonly client: QueryClient\n\n params: TParams\n options: ResolvedInstanceOptions<TData, TParams, TError>\n\n state: QueryState<TData, TError>\n observers: Set<QueryObserverLike> = new Set()\n\n readonly $data\n readonly $error\n readonly $status\n readonly $fetchStatus\n readonly $pendingCount\n readonly $updatedAt\n readonly $isInvalidated\n\n #retryer: ReturnType<typeof createRetryer<TData>> | undefined\n #abortController: AbortController | undefined\n #abortDispose: (() => void) | undefined\n #cache: QueryCache\n\n constructor(config: QueryConfig<TData, TParams, TError, TQueryData>) {\n super()\n this.client = config.client\n this.#cache = config.cache\n this.definition = config.definition\n this.params = config.params\n this.queryKey = config.queryKey\n this.queryHash = hashKey(config.queryKey)\n this.options = config.options\n\n this.state = defaultQueryState<TData, TError>()\n this.updateGcTime(this.options.cacheTimeMs)\n\n this.$data = signal<TData | undefined>(undefined)\n this.$error = signal<TError | null>(null)\n this.$status = signal<QueryStatus>('idle')\n this.$fetchStatus = signal<QueryFetchStatus>('idle')\n this.$pendingCount = signal(0)\n this.$updatedAt = signal<number | null>(null)\n this.$isInvalidated = signal(false)\n }\n\n get promise(): Promise<TData> | undefined {\n return this.#retryer?.promise\n }\n\n isActive(): boolean {\n return this.observers.size > 0\n }\n\n isStale(): boolean {\n return isStaleByTime(\n this.state.dataUpdatedAt,\n this.options.staleTimeMs,\n this.state.isInvalidated,\n this.state.data !== undefined,\n )\n }\n\n isStaleByTime(staleTimeMs = this.options.staleTimeMs): boolean {\n return isStaleByTime(\n this.state.dataUpdatedAt,\n staleTimeMs,\n this.state.isInvalidated,\n this.state.data !== undefined,\n )\n }\n\n hasData(): boolean {\n return this.state.data !== undefined\n }\n\n addObserver(observer: QueryObserverLike): void {\n if (!this.observers.has(observer)) {\n this.observers.add(observer)\n this.clearGcTimeout()\n }\n }\n\n removeObserver(observer: QueryObserverLike): void {\n if (this.observers.delete(observer) && this.observers.size === 0) {\n this.scheduleGc(() => this.#cache.remove(this))\n }\n }\n\n setData(updater: TData | ((prev: TData | undefined) => TData | undefined)): TData | undefined {\n const next = functionalUpdate(updater, this.state.data)\n this.#dispatch({ type: 'success', data: next as TData })\n return next\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n this.#cache.emit({\n type: 'queryInvalidated',\n queryKey: this.queryKey,\n hash: this.queryHash,\n })\n }\n }\n\n getAbortController(): AbortController | undefined {\n return this.#abortController\n }\n\n getAbortSignal(): AbortSignal | undefined {\n return this.#abortController?.signal\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n abortWithReason(this.#abortController, options?.reason)\n const promise = this.#retryer?.promise\n if (promise) {\n void promise.catch(() => undefined)\n }\n this.#retryer?.cancel(options)\n this.#retryer = undefined\n this.#clearAbortHandle()\n this.#dispatch({ type: 'setState', state: { fetchStatus: 'idle' } })\n return promise ? promise.then(() => undefined).catch(() => undefined) : Promise.resolve()\n }\n\n async fetch(\n options?: { cancelRefetch?: boolean } & FetchAbortSource,\n ): Promise<TData> {\n if (\n this.state.fetchStatus !== 'idle' &&\n this.#retryer\n ) {\n if (options?.cancelRefetch) {\n await this.cancel({ silent: true })\n } else {\n return this.#retryer.promise\n }\n }\n\n const abortHandle = createFetchAbortHandle(\n mergeFetchAbortSource(this.options, options),\n )\n this.#abortController = abortHandle.controller\n this.#abortDispose = abortHandle.dispose\n const { controller: abortController, signal } = abortHandle\n const lifecycleCtx: QueryLifecycleContext<TData, TParams, TError> = {\n params: this.params,\n queryKey: this.queryKey,\n queryClient: this.client,\n }\n\n this.#dispatch({ type: 'fetch' })\n this.$pendingCount.set(this.$pendingCount.peek() + 1)\n void runLifecycle(this.options, 'start', lifecycleCtx)\n\n this.#retryer = createRetryer<TData>({\n fn: async () => {\n const raw: TQueryData = await this.definition.options.queryFn({\n params: this.params,\n signal,\n abortController,\n queryClient: this.client,\n queryKey: this.queryKey,\n })\n\n if (signal.aborted) {\n throw new CancelledError({ silent: true })\n }\n\n const transform = this.definition.options.transform\n return transform ? await transform(raw) : (raw as unknown as TData)\n },\n onCancel: () => abortHandle.abort(),\n onFail: (failureCount, error) => {\n const err = (error instanceof Error ? error : new Error(String(error))) as Error\n this.#dispatch({\n type: 'failed',\n failureCount,\n error: err as TError,\n })\n },\n retry: this.options.retry,\n retryDelay: this.options.retryDelay,\n })\n\n try {\n const data = await this.#retryer.start()\n this.#dispatch({ type: 'success', data })\n this.#cache.emit({\n type: 'queryFetched',\n queryKey: this.queryKey,\n hash: this.queryHash,\n data,\n })\n await runLifecycle(this.options, 'success', { ...lifecycleCtx, data })\n await runLifecycle(this.options, 'settled', { ...lifecycleCtx, data })\n return data\n } catch (error) {\n if (isCancelledError(error)) {\n if (error.silent) {\n return this.state.data as TData\n }\n throw error\n }\n const err = error instanceof Error ? error : new Error(String(error))\n this.#dispatch({ type: 'error', error: err as TError })\n await runLifecycle(this.options, 'error', { ...lifecycleCtx, error: err as TError })\n await runLifecycle(this.options, 'settled', { ...lifecycleCtx, error: err as TError })\n throw error\n } finally {\n this.$pendingCount.set(Math.max(0, this.$pendingCount.peek() - 1))\n this.#retryer = undefined\n this.#clearAbortHandle()\n this.scheduleGc(() => {\n if (this.observers.size === 0) this.#cache.remove(this)\n })\n }\n }\n\n #clearAbortHandle(): void {\n this.#abortDispose?.()\n this.#abortDispose = undefined\n this.#abortController = undefined\n }\n\n onFocus(): void {\n if (this.isActive() && this.isStale() && this.options.refetchOnWindowFocus) {\n void this.fetch()\n }\n }\n\n onOnline(): void {\n if (this.isActive() && this.isStale() && this.options.refetchOnReconnect) {\n void this.fetch()\n }\n }\n\n #dispatch(action: QueryAction<TData, TError>): void {\n this.state = queryReducer(this.state, action)\n this.syncSignals()\n this.#cache.emit({\n type: 'queryUpdated',\n queryKey: this.queryKey,\n hash: this.queryHash,\n })\n for (const observer of this.observers) {\n observer.onQueryUpdate()\n }\n }\n\n private syncSignals(): void {\n this.$data.set(this.state.data)\n this.$error.set(this.state.error)\n this.$status.set(this.state.status)\n this.$fetchStatus.set(this.state.fetchStatus)\n this.$updatedAt.set(this.state.dataUpdatedAt || null)\n this.$isInvalidated.set(this.state.isInvalidated)\n }\n}\n","import type { QueryProvider } from '../provider/query-provider'\nimport type { QueryClientConfig, QueryOptions } from '../types'\n\nconst DEFAULT_CACHE_TIME_MS = 5 * 60_000\n\nexport const defaultQueryOptions = <TData, TParams = void, TError = unknown>(\n config?: QueryClientConfig,\n): Partial<QueryOptions<TData, TParams, TError>> => ({\n staleTime: config?.defaultOptions?.queries?.staleTime ?? 0,\n cacheTime: config?.defaultOptions?.queries?.cacheTime ?? DEFAULT_CACHE_TIME_MS,\n retry: config?.defaultOptions?.queries?.retry ?? false,\n retryDelay: config?.defaultOptions?.queries?.retryDelay ?? 1000,\n keepPreviousData: config?.defaultOptions?.queries?.keepPreviousData ?? false,\n abortPrevious: config?.defaultOptions?.queries?.abortPrevious ?? true,\n})\n\nexport const mergeQueryDefinitionOptions = <TData, TParams = void, TError = unknown, TQueryData = TData>(\n options: QueryOptions<TData, TParams, TError, TQueryData>,\n config?: QueryClientConfig,\n provider?: QueryProvider | null,\n): QueryOptions<TData, TParams, TError, TQueryData> => ({\n ...defaultQueryOptions<TData, TParams, TError>(config),\n ...(provider?.config.defaultOptions?.queries as\n | Partial<QueryOptions<TData, TParams, TError, TQueryData>>\n | undefined),\n ...options,\n} as QueryOptions<TData, TParams, TError, TQueryData>)\n\nexport const toMs = (value: number | undefined, fallback: number): number => {\n if (value === undefined) return fallback\n if (!Number.isFinite(value)) return Number.POSITIVE_INFINITY\n return value\n}\n","import type {\n QueryDefinition,\n QueryFetchStatus,\n QueryInstanceOptions,\n QueryOptions,\n QueryStatus,\n ResolvedInstanceOptions,\n ResolvedQueryOptions,\n} from '../types'\nimport { toMs } from './query-options'\n\nconst DEFAULT_CACHE_TIME_MS = 5 * 60_000\n\nexport const resolveQueryOptions = <TData, TParams = void, TError = unknown, TQueryData = TData>(\n options: QueryOptions<TData, TParams, TError, TQueryData>,\n): ResolvedQueryOptions<TData, TParams, TError, TQueryData> => {\n const staleTime = options.staleTime ?? 0\n const cacheTime = options.cacheTime ?? DEFAULT_CACHE_TIME_MS\n\n return {\n ...options,\n staleTime,\n cacheTime,\n retry: options.retry ?? false,\n retryDelay: options.retryDelay ?? 1000,\n keepPreviousData: options.keepPreviousData ?? false,\n abortPrevious: options.abortPrevious ?? true,\n staleTimeMs: toMs(staleTime, 0),\n cacheTimeMs: toMs(cacheTime, DEFAULT_CACHE_TIME_MS),\n }\n}\n\nexport const resolveInstanceOptions = <\n TData,\n TParams = void,\n TError = unknown,\n TQueryData = TData,\n>(\n definitionOptions: ResolvedQueryOptions<TData, TParams, TError, TQueryData>,\n instanceOptions?: QueryInstanceOptions<TData, TParams, TError>,\n): ResolvedInstanceOptions<TData, TParams, TError> => {\n const staleTime = instanceOptions?.staleTime ?? definitionOptions.staleTime ?? 0\n const cacheTime =\n instanceOptions?.cacheTime ?? definitionOptions.cacheTime ?? DEFAULT_CACHE_TIME_MS\n\n return {\n ...definitionOptions,\n ...instanceOptions,\n staleTime,\n cacheTime,\n staleTimeMs: toMs(staleTime, 0),\n cacheTimeMs: toMs(cacheTime, DEFAULT_CACHE_TIME_MS),\n enabled: instanceOptions?.enabled ?? true,\n refetchOnMount: instanceOptions?.refetchOnMount ?? true,\n refetchOnWindowFocus: instanceOptions?.refetchOnWindowFocus ?? true,\n refetchOnReconnect: instanceOptions?.refetchOnReconnect ?? true,\n keepPreviousData:\n instanceOptions?.keepPreviousData ?? definitionOptions.keepPreviousData ?? false,\n abortPrevious: instanceOptions?.abortPrevious ?? definitionOptions.abortPrevious ?? true,\n retry: instanceOptions?.retry ?? definitionOptions.retry ?? false,\n retryDelay: instanceOptions?.retryDelay ?? definitionOptions.retryDelay ?? 1000,\n onStart: instanceOptions?.onStart ?? definitionOptions.onStart,\n onSuccess: instanceOptions?.onSuccess ?? definitionOptions.onSuccess,\n onError: instanceOptions?.onError ?? definitionOptions.onError,\n onSettled: instanceOptions?.onSettled ?? definitionOptions.onSettled,\n }\n}\n\nexport const isEnabled = (enabled: boolean | (() => boolean)): boolean =>\n typeof enabled === 'function' ? enabled() : enabled\n\nexport const isQueryPending = (status: QueryStatus): boolean => status === 'pending'\n\nexport const isQueryFetching = (fetchStatus: QueryFetchStatus): boolean =>\n fetchStatus === 'fetching'\n\nexport const isQuerySuccess = (status: QueryStatus): boolean => status === 'success'\n\nexport const isQueryError = (status: QueryStatus): boolean => status === 'error'\n\nexport const isQueryIdle = (status: QueryStatus): boolean => status === 'idle'\n\nexport const isQueryPaused = (fetchStatus: QueryFetchStatus): boolean =>\n fetchStatus === 'paused'\n\nexport const resolveDefinitionOptions = <TData, TParams = void, TError = unknown, TQueryData = TData>(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n): ResolvedQueryOptions<TData, TParams, TError, TQueryData> =>\n resolveQueryOptions(definition.options)\n","import { effect } from '@echojs-ecosystem/reactivity'\n\nimport { Query } from '../core/query'\nimport {\n isEnabled,\n resolveDefinitionOptions,\n resolveInstanceOptions,\n} from './query-status'\nimport type {\n QueryClient,\n QueryDefinition,\n QueryInstanceOptions,\n CancelOptions,\n RefetchOptions,\n ResolvedInstanceOptions,\n} from '../types'\nimport { hashKey } from '../utils/hash'\nimport { isCancelledError } from '../core/cancelled-error'\n\nexport class QueryObserver<\n TData,\n TParams = void,\n TError = unknown,\n TQueryData = TData,\n> {\n readonly definition: QueryDefinition<TData, TParams, TError, TQueryData>\n readonly client: QueryClient\n readonly options: ResolvedInstanceOptions<TData, TParams, TError>\n\n #query: Query<TData, TParams, TError, TQueryData> | null = null\n #previousQuery: Query<TData, TParams, TError, TQueryData> | null = null\n #params!: TParams\n #disposeParams: (() => void) | null = null\n #destroyed = false\n #listeners = new Set<() => void>()\n #currentHash: string | null = null\n\n constructor(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n client: QueryClient,\n params: TParams | (() => TParams),\n instanceOptions?: QueryInstanceOptions<TData, TParams, TError>,\n ) {\n this.definition = definition\n this.client = client\n this.options = resolveInstanceOptions(\n resolveDefinitionOptions(definition),\n instanceOptions,\n )\n\n if (typeof params === 'function') {\n this.#disposeParams = effect(() => {\n this.setParams((params as () => TParams)())\n })\n } else {\n this.setParams(params)\n }\n }\n\n getQuery(): Query<TData, TParams, TError, TQueryData> | null {\n return this.#query\n }\n\n getPreviousQuery(): Query<TData, TParams, TError, TQueryData> | null {\n return this.#previousQuery\n }\n\n getParams(): TParams {\n return this.#params\n }\n\n onQueryUpdate(): void {\n for (const listener of this.#listeners) listener()\n }\n\n subscribe(listener: () => void): () => void {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n setParams(params: TParams): void {\n if (this.#destroyed) return\n\n this.#params = params\n const queryKey = this.definition.queryKey(params)\n const hash = hashKey(queryKey)\n\n if (this.#currentHash === hash) {\n void this.maybeFetch(false)\n return\n }\n\n if (this.#query) {\n if (this.options.abortPrevious) {\n void this.#query.cancel({ silent: true })\n }\n this.#detach(this.#query)\n this.#previousQuery = this.options.keepPreviousData ? this.#query : null\n }\n\n this.#currentHash = hash\n this.#query = this.client.queryCache.build({\n client: this.client,\n cache: this.client.queryCache,\n definition: this.definition,\n params,\n queryKey,\n options: this.options,\n })\n\n this.#query.addObserver(this)\n void this.maybeFetch(true)\n this.onQueryUpdate()\n }\n\n maybeFetch(paramsChanged: boolean): void {\n if (!this.#query || !isEnabled(this.options.enabled)) return\n\n const stale = this.#query.isStale()\n const hasData = this.#query.hasData()\n\n if (!hasData || stale) {\n void this.fetch()\n return\n }\n\n if (paramsChanged && this.options.refetchOnMount === true) {\n void this.fetch()\n }\n }\n\n async fetch(options?: RefetchOptions): Promise<TData> {\n if (!this.#query) throw new Error('QueryObserver has no active query')\n\n try {\n return await this.#query.fetch(options)\n } catch (error) {\n if (isCancelledError(error) && !options?.throwOnError) {\n throw error\n }\n if (options?.throwOnError) throw error\n throw error\n }\n }\n\n async refetch(options?: RefetchOptions): Promise<TData> {\n return this.fetch(options)\n }\n\n invalidate(): void {\n this.#query?.invalidate()\n if (this.#query?.isActive()) {\n void this.fetch()\n }\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n return this.#query?.cancel(options) ?? Promise.resolve()\n }\n\n remove(): void {\n if (!this.#query) return\n this.#detach(this.#query)\n this.client.queryCache.remove(this.#query)\n this.#query = null\n this.#currentHash = null\n this.onQueryUpdate()\n }\n\n destroy(): void {\n if (this.#destroyed) return\n this.#destroyed = true\n this.#disposeParams?.()\n if (this.#query) this.#detach(this.#query)\n this.#listeners.clear()\n }\n\n #detach(query: Query<TData, TParams, TError, TQueryData>): void {\n query.removeObserver(this)\n }\n}\n\nexport const trackReactiveParams = <TParams>(\n paramsSource: TParams | (() => TParams),\n onChange: (params: TParams) => void,\n): (() => void) => {\n if (typeof paramsSource !== 'function') {\n onChange(paramsSource)\n return () => {}\n }\n return effect(() => onChange((paramsSource as () => TParams)()))\n}\n","import { computed, signal } from '@echojs-ecosystem/reactivity'\n\nimport { QueryObserver } from './query-observer'\nimport {\n isQueryError,\n isQueryFetching,\n isQueryIdle,\n isQueryPaused,\n isQueryPending,\n isQuerySuccess,\n} from './query-status'\nimport type {\n QueryClient,\n QueryDefinition,\n QueryInstance,\n QueryInstanceOptions,\n QueryStatus,\n CancelOptions,\n RefetchOptions,\n} from '../types'\nimport type { Query } from '../core/query'\n\nconst effectiveQuery = <TData, TParams, TError, TQueryData = TData>(\n observer: QueryObserver<TData, TParams, TError, TQueryData>,\n): Query<TData, TParams, TError, TQueryData> | null => {\n const query = observer.getQuery()\n if (!query) return observer.getPreviousQuery()\n if (query.hasData()) return query\n const prev = observer.getPreviousQuery()\n if (prev && observer.options.keepPreviousData) return prev\n return query\n}\n\nexport const createQueryInstance = <\n TData,\n TParams = void,\n TError = unknown,\n TQueryData = TData,\n>(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n client: QueryClient,\n params: TParams | (() => TParams),\n instanceOptions?: QueryInstanceOptions<TData, TParams, TError>,\n): QueryInstance<TData, TParams, TError> => {\n const observer = new QueryObserver(definition, client, params, instanceOptions)\n const $params = signal<TParams>(observer.getParams())\n\n observer.subscribe(() => $params.set(observer.getParams()))\n\n const readQuery = () => effectiveQuery(observer)\n\n const $data = computed((): TData | undefined => readQuery()?.$data.value() as TData | undefined)\n const $error = computed((): TError | null => readQuery()?.$error.value() as TError | null ?? null)\n const $status = computed((): QueryStatus => readQuery()?.$status.value() ?? 'idle')\n const $fetchStatus = computed(() => observer.getQuery()?.$fetchStatus.value() ?? 'idle')\n const $pendingCount = computed(() => observer.getQuery()?.$pendingCount.value() ?? 0)\n const $updatedAt = computed(() => observer.getQuery()?.$updatedAt.value() ?? null)\n const $isStale = computed(() => observer.getQuery()?.isStale() ?? true)\n const $abortSignal = computed((): AbortSignal | null => readQuery()?.getAbortSignal() ?? null)\n\n return {\n kind: 'query-instance',\n\n value: () => $data.value() as TData | undefined,\n data: () => $data.value() as TData | undefined,\n error: () => $error.value() as TError | null,\n params: () => $params.value() as TParams,\n\n status: () => $status.value(),\n fetchStatus: () => $fetchStatus.value(),\n\n pending: () => isQueryPending($status.value()),\n isPending: () => isQueryPending($status.value()),\n isFirstPending: () => {\n const q = observer.getQuery()\n return q ? q.state.status === 'pending' && !q.state.hadSuccess : false\n },\n isRefetching: () => {\n const q = observer.getQuery()\n return q ? q.state.fetchStatus === 'fetching' && q.hasData() : false\n },\n isFetching: () => isQueryFetching($fetchStatus.value()),\n isSuccess: () => isQuerySuccess($status.value()),\n isError: () => isQueryError($status.value()),\n isIdle: () => isQueryIdle($status.value()),\n isStale: () => $isStale.value(),\n isPaused: () => isQueryPaused($fetchStatus.value()),\n hasData: () => $data.value() !== undefined,\n hasError: () => $error.value() !== null,\n\n refetch: (options?: RefetchOptions) => observer.refetch(options),\n invalidate: () => observer.invalidate(),\n cancel: (options?: CancelOptions) => observer.cancel(options),\n abort: (reason?: unknown) => observer.cancel({ reason }),\n abortController: () => observer.getQuery()?.getAbortController() ?? null,\n abortSignal: () => observer.getQuery()?.getAbortSignal() ?? null,\n remove: () => {\n observer.remove()\n observer.destroy()\n },\n\n subscribe(listener: (data: TData | undefined) => void): () => void {\n return observer.subscribe(() => listener($data.value() as TData | undefined))\n },\n\n $data: $data as QueryInstance<TData, TParams, TError>['$data'],\n $error: $error as QueryInstance<TData, TParams, TError>['$error'],\n $params: $params as QueryInstance<TData, TParams, TError>['$params'],\n $status: $status as QueryInstance<TData, TParams, TError>['$status'],\n $fetchStatus: $fetchStatus as QueryInstance<TData, TParams, TError>['$fetchStatus'],\n $pendingCount: $pendingCount as QueryInstance<TData, TParams, TError>['$pendingCount'],\n $isStale: $isStale as QueryInstance<TData, TParams, TError>['$isStale'],\n $updatedAt: $updatedAt as QueryInstance<TData, TParams, TError>['$updatedAt'],\n $abortSignal: $abortSignal as QueryInstance<TData, TParams, TError>['$abortSignal'],\n }\n}\n","import type { QueryProvider } from '../provider/query-provider'\nimport { getQueryProvider } from '../provider/context'\nimport type {\n QueryDefinition,\n QueryInstance,\n QueryInstanceOptions,\n QueryOptions,\n StoreLike,\n} from '../types'\nimport { getDefaultQueryClient } from '../client/default-client'\nimport { createQueryInstance } from './query-instance'\nimport { mergeQueryDefinitionOptions } from './query-options'\nimport { resolveQueryOptions } from './query-status'\n\nexport type CreateQueryMeta = {\n provider?: QueryProvider | null\n}\n\nexport const createQuery = <\n TData,\n TParams = void,\n TError = unknown,\n TQueryData = TData,\n>(\n options: QueryOptions<TData, TParams, TError, TQueryData>,\n meta?: CreateQueryMeta,\n): QueryDefinition<TData, TParams, TError, TQueryData> => {\n const provider = meta?.provider ?? getQueryProvider()\n const mergedOptions = mergeQueryDefinitionOptions(\n options,\n provider?.config,\n provider,\n )\n const resolved = resolveQueryOptions(mergedOptions)\n\n const definition: QueryDefinition<TData, TParams, TError, TQueryData> = {\n kind: 'query-definition',\n name: options.name,\n options: mergedOptions,\n\n queryKey(params: TParams) {\n return mergedOptions.queryKey(params)\n },\n\n with(\n params: TParams | (() => TParams),\n instanceOptions?: QueryInstanceOptions<TData, TParams, TError>,\n ): QueryInstance<TData, TParams, TError> {\n const client =\n instanceOptions?.client ?? provider?.client ?? getDefaultQueryClient()\n return createQueryInstance(definition, client, params, instanceOptions)\n },\n\n withStore<StoreValue>(\n store: StoreLike<StoreValue>,\n map: (value: StoreValue) => TParams,\n instanceOptions?: QueryInstanceOptions<TData, TParams, TError>,\n ): QueryInstance<TData, TParams, TError> {\n const client =\n instanceOptions?.client ?? provider?.client ?? getDefaultQueryClient()\n return createQueryInstance(\n definition,\n client,\n () => map(store.value()),\n instanceOptions,\n )\n },\n }\n\n void resolved\n return definition\n}\n","import type { InfiniteQueryData, QueryFetchStatus, QueryStatus } from '../types'\n\nexport type InfiniteQueryState<TPage, TPageParam, TError> = {\n data: InfiniteQueryData<TPage, TPageParam> | undefined\n error: TError | null\n status: QueryStatus\n fetchStatus: QueryFetchStatus\n dataUpdatedAt: number\n errorUpdatedAt: number\n fetchFailureCount: number\n isInvalidated: boolean\n hadSuccess: boolean\n fetchingNextPage: boolean\n fetchingPreviousPage: boolean\n}\n\nexport const defaultInfiniteQueryState = <\n TPage,\n TPageParam,\n TError,\n>(): InfiniteQueryState<TPage, TPageParam, TError> => ({\n data: undefined,\n error: null,\n status: 'idle',\n fetchStatus: 'idle',\n dataUpdatedAt: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n isInvalidated: false,\n hadSuccess: false,\n fetchingNextPage: false,\n fetchingPreviousPage: false,\n})\n\nexport type InfiniteQueryAction<TPage, TPageParam, TError> =\n | { type: 'fetch'; direction: 'initial' | 'next' | 'previous' }\n | { type: 'success'; data: InfiniteQueryData<TPage, TPageParam> }\n | { type: 'error'; error: TError }\n | { type: 'failed'; failureCount: number; error: TError }\n | { type: 'invalidate' }\n | { type: 'reset' }\n | { type: 'setState'; state: Partial<InfiniteQueryState<TPage, TPageParam, TError>> }\n\nexport const infiniteQueryReducer = <TPage, TPageParam, TError>(\n state: InfiniteQueryState<TPage, TPageParam, TError>,\n action: InfiniteQueryAction<TPage, TPageParam, TError>,\n): InfiniteQueryState<TPage, TPageParam, TError> => {\n switch (action.type) {\n case 'fetch':\n return {\n ...state,\n fetchStatus: 'fetching',\n fetchingNextPage: action.direction === 'next' || action.direction === 'initial',\n fetchingPreviousPage: action.direction === 'previous',\n ...(state.data === undefined && state.status === 'idle'\n ? { status: 'pending' as const, error: null }\n : {}),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n error: null,\n status: 'success',\n fetchStatus: 'idle',\n dataUpdatedAt: Date.now(),\n fetchFailureCount: 0,\n isInvalidated: false,\n hadSuccess: true,\n fetchingNextPage: false,\n fetchingPreviousPage: false,\n }\n case 'error':\n return {\n ...state,\n error: action.error,\n status: 'error',\n fetchStatus: 'idle',\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n isInvalidated: true,\n fetchingNextPage: false,\n fetchingPreviousPage: false,\n }\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n error: action.error,\n }\n case 'invalidate':\n return { ...state, isInvalidated: true }\n case 'reset':\n return defaultInfiniteQueryState<TPage, TPageParam, TError>()\n case 'setState':\n return { ...state, ...action.state }\n default:\n return state\n }\n}\n","import { signal } from '@echojs-ecosystem/reactivity'\n\nimport { runLifecycle } from '../async/lifecycle'\nimport {\n abortWithReason,\n createFetchAbortHandle,\n mergeFetchAbortSource,\n type CancelOptions,\n type FetchAbortSource,\n} from '../async/abort-control'\nimport { CancelledError, isCancelledError } from './cancelled-error'\nimport {\n defaultInfiniteQueryState,\n infiniteQueryReducer,\n type InfiniteQueryAction,\n type InfiniteQueryState,\n} from './infinite-query-state'\nimport { Removable } from './removable'\nimport { createRetryer } from './retryer'\nimport { hashKey } from '../utils/hash'\nimport { isStaleByTime } from './query-state'\nimport type { InfiniteQueryCache } from './infinite-query-cache'\nimport type {\n InfiniteQueryData,\n InfiniteQueryDefinition,\n InfiniteQueryFetchDirection,\n QueryClient,\n QueryFetchStatus,\n QueryKey,\n QueryStatus,\n RefetchOptions,\n ResolvedInfiniteInstanceOptions,\n} from '../types'\n\nexport type InfiniteQueryObserverLike = {\n onInfiniteQueryUpdate(): void\n}\n\nexport type InfiniteQueryConfig<\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n> = {\n client: QueryClient\n cache: InfiniteQueryCache\n definition: InfiniteQueryDefinition<TPage, TParams, TPageParam, TError>\n params: TParams\n queryKey: QueryKey\n options: ResolvedInfiniteInstanceOptions<TPage, TParams, TPageParam, TError>\n}\n\nexport const hasInfiniteNextPage = <TPage, TPageParam>(\n data: InfiniteQueryData<TPage, TPageParam> | undefined,\n getNextPageParam: (lastPage: TPage, allPages: TPage[]) => TPageParam | undefined | null,\n): boolean => {\n if (!data || data.pages.length === 0) return true\n const lastPage = data.pages[data.pages.length - 1]!\n const next = getNextPageParam(lastPage, data.pages)\n return next !== undefined && next !== null\n}\n\nexport const hasInfinitePreviousPage = <TPage, TPageParam>(\n data: InfiniteQueryData<TPage, TPageParam> | undefined,\n getPreviousPageParam:\n | ((firstPage: TPage, allPages: TPage[]) => TPageParam | undefined | null)\n | undefined,\n): boolean => {\n if (!getPreviousPageParam || !data || data.pages.length === 0) return false\n const firstPage = data.pages[0]!\n const prev = getPreviousPageParam(firstPage, data.pages)\n return prev !== undefined && prev !== null\n}\n\nexport class InfiniteQuery<\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n> extends Removable {\n readonly queryKey: QueryKey\n readonly queryHash: string\n readonly definition: InfiniteQueryDefinition<TPage, TParams, TPageParam, TError>\n readonly client: QueryClient\n\n params: TParams\n options: ResolvedInfiniteInstanceOptions<TPage, TParams, TPageParam, TError>\n\n state: InfiniteQueryState<TPage, TPageParam, TError>\n observers: Set<InfiniteQueryObserverLike> = new Set()\n\n readonly $data\n readonly $error\n readonly $status\n readonly $fetchStatus\n readonly $pendingCount\n readonly $updatedAt\n readonly $isInvalidated\n readonly $fetchingNextPage\n readonly $fetchingPreviousPage\n\n #retryer: ReturnType<typeof createRetryer<TPage>> | undefined\n #abortController: AbortController | undefined\n #abortDispose: (() => void) | undefined\n #cache: InfiniteQueryCache\n #requestId = 0\n\n constructor(config: InfiniteQueryConfig<TPage, TParams, TPageParam, TError>) {\n super()\n this.client = config.client\n this.#cache = config.cache\n this.definition = config.definition\n this.params = config.params\n this.queryKey = config.queryKey\n this.queryHash = hashKey(config.queryKey)\n this.options = config.options\n\n this.state = defaultInfiniteQueryState<TPage, TPageParam, TError>()\n this.updateGcTime(this.options.cacheTimeMs)\n\n this.$data = signal<InfiniteQueryData<TPage, TPageParam> | undefined>(undefined)\n this.$error = signal<TError | null>(null)\n this.$status = signal<QueryStatus>('idle')\n this.$fetchStatus = signal<QueryFetchStatus>('idle')\n this.$pendingCount = signal(0)\n this.$updatedAt = signal<number | null>(null)\n this.$isInvalidated = signal(false)\n this.$fetchingNextPage = signal(false)\n this.$fetchingPreviousPage = signal(false)\n }\n\n isActive(): boolean {\n return this.observers.size > 0\n }\n\n isStale(): boolean {\n return isStaleByTime(\n this.state.dataUpdatedAt,\n this.options.staleTimeMs,\n this.state.isInvalidated,\n this.state.data !== undefined,\n )\n }\n\n hasData(): boolean {\n return this.state.data !== undefined && this.state.data.pages.length > 0\n }\n\n hasNextPage(): boolean {\n return hasInfiniteNextPage(this.state.data, this.definition.options.getNextPageParam)\n }\n\n hasPreviousPage(): boolean {\n return hasInfinitePreviousPage(this.state.data, this.definition.options.getPreviousPageParam)\n }\n\n addObserver(observer: InfiniteQueryObserverLike): void {\n if (!this.observers.has(observer)) {\n this.observers.add(observer)\n this.clearGcTimeout()\n }\n }\n\n removeObserver(observer: InfiniteQueryObserverLike): void {\n if (this.observers.delete(observer) && this.observers.size === 0) {\n this.scheduleGc(() => this.#cache.remove(this))\n }\n }\n\n reset(): void {\n this.#requestId += 1\n void this.cancel({ silent: true })\n this.#dispatch({ type: 'reset' })\n }\n\n getAbortController(): AbortController | undefined {\n return this.#abortController\n }\n\n getAbortSignal(): AbortSignal | undefined {\n return this.#abortController?.signal\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n this.#requestId += 1\n abortWithReason(this.#abortController, options?.reason)\n const promise = this.#retryer?.promise\n this.#retryer?.cancel(options)\n this.#retryer = undefined\n this.#clearAbortHandle()\n this.#dispatch({\n type: 'setState',\n state: {\n fetchStatus: 'idle',\n fetchingNextPage: false,\n fetchingPreviousPage: false,\n },\n })\n return promise ? promise.then(() => undefined).catch(() => undefined) : Promise.resolve()\n }\n\n async refetch(options?: RefetchOptions): Promise<InfiniteQueryData<TPage, TPageParam>> {\n await this.cancel({ silent: true })\n this.#dispatch({ type: 'reset' })\n await this.fetchPage('initial', options)\n if (!this.state.data) {\n throw new Error('Infinite query refetch failed')\n }\n return this.state.data\n }\n\n async fetchNextPage(options?: FetchAbortSource): Promise<TPage | null> {\n if (!this.hasNextPage()) return null\n const direction: InfiniteQueryFetchDirection = this.hasData() ? 'next' : 'initial'\n return this.fetchPage(direction, options)\n }\n\n async fetchPreviousPage(options?: FetchAbortSource): Promise<TPage | null> {\n if (!this.hasPreviousPage()) return null\n return this.fetchPage('previous', options)\n }\n\n async fetchPage(\n direction: InfiniteQueryFetchDirection,\n abortSource?: FetchAbortSource,\n ): Promise<TPage | null> {\n if (direction === 'next' && !this.hasNextPage()) return null\n if (direction === 'previous' && !this.hasPreviousPage()) return null\n\n const requestId = ++this.#requestId\n const abortHandle = createFetchAbortHandle(\n mergeFetchAbortSource(this.options, abortSource),\n )\n this.#abortController = abortHandle.controller\n this.#abortDispose = abortHandle.dispose\n const { controller: abortController, signal } = abortHandle\n\n const { initialPageParam, getNextPageParam, getPreviousPageParam } = this.definition.options\n const current = this.state.data\n let pageParam: TPageParam\n\n if (direction === 'initial') {\n pageParam = initialPageParam\n } else if (direction === 'next') {\n const lastPage = current!.pages[current!.pages.length - 1]!\n pageParam = getNextPageParam(lastPage, current!.pages) as TPageParam\n } else {\n const firstPage = current!.pages[0]!\n pageParam = getPreviousPageParam!(firstPage, current!.pages) as TPageParam\n }\n\n const lifecycleCtx = {\n params: this.params,\n queryKey: this.queryKey,\n queryClient: this.client,\n }\n\n this.#dispatch({ type: 'fetch', direction })\n this.$pendingCount.set(this.$pendingCount.peek() + 1)\n void runLifecycle(this.options, 'start', lifecycleCtx)\n\n this.#retryer = createRetryer<TPage>({\n fn: async () => {\n const page = await this.definition.options.queryFn({\n params: this.params,\n pageParam,\n signal,\n abortController,\n queryClient: this.client,\n queryKey: this.queryKey,\n })\n\n if (signal.aborted) {\n throw new CancelledError({ silent: true })\n }\n\n return page\n },\n onCancel: () => abortHandle.abort(),\n onFail: (failureCount, error) => {\n const err = (error instanceof Error ? error : new Error(String(error))) as Error\n this.#dispatch({ type: 'failed', failureCount, error: err as TError })\n },\n retry: this.options.retry,\n retryDelay: this.options.retryDelay,\n })\n\n try {\n const page = await this.#retryer.start()\n\n if (requestId !== this.#requestId) {\n return null\n }\n\n const nextData = this.#mergePage(direction, pageParam, page)\n this.#dispatch({ type: 'success', data: nextData })\n this.#cache.emit({\n type: 'infiniteQueryFetched',\n queryKey: this.queryKey,\n hash: this.queryHash,\n })\n await runLifecycle(this.options, 'success', { ...lifecycleCtx, data: nextData })\n await runLifecycle(this.options, 'settled', { ...lifecycleCtx, data: nextData })\n return page\n } catch (error) {\n if (requestId !== this.#requestId) {\n return null\n }\n\n if (isCancelledError(error)) {\n if (error.silent) {\n return null\n }\n throw error\n }\n\n const err = error instanceof Error ? error : new Error(String(error))\n this.#dispatch({ type: 'error', error: err as TError })\n await runLifecycle(this.options, 'error', { ...lifecycleCtx, error: err as TError })\n await runLifecycle(this.options, 'settled', { ...lifecycleCtx, error: err as TError })\n throw error\n } finally {\n if (requestId === this.#requestId) {\n this.$pendingCount.set(Math.max(0, this.$pendingCount.peek() - 1))\n this.#retryer = undefined\n this.#clearAbortHandle()\n this.scheduleGc(() => {\n if (this.observers.size === 0) this.#cache.remove(this)\n })\n }\n }\n }\n\n #clearAbortHandle(): void {\n this.#abortDispose?.()\n this.#abortDispose = undefined\n this.#abortController = undefined\n }\n\n onFocus(): void {\n if (this.isActive() && this.isStale() && this.options.refetchOnWindowFocus) {\n void this.refetch()\n }\n }\n\n onOnline(): void {\n if (this.isActive() && this.isStale() && this.options.refetchOnReconnect) {\n void this.refetch()\n }\n }\n\n #mergePage(\n direction: InfiniteQueryFetchDirection,\n pageParam: TPageParam,\n page: TPage,\n ): InfiniteQueryData<TPage, TPageParam> {\n const current = this.state.data\n\n if (direction === 'initial' || !current) {\n return { pages: [page], pageParams: [pageParam] }\n }\n\n if (direction === 'next') {\n return {\n pages: [...current.pages, page],\n pageParams: [...current.pageParams, pageParam],\n }\n }\n\n return {\n pages: [page, ...current.pages],\n pageParams: [pageParam, ...current.pageParams],\n }\n }\n\n #dispatch(action: InfiniteQueryAction<TPage, TPageParam, TError>): void {\n this.state = infiniteQueryReducer(this.state, action)\n this.syncSignals()\n this.#cache.emit({\n type: 'infiniteQueryUpdated',\n queryKey: this.queryKey,\n hash: this.queryHash,\n })\n for (const observer of this.observers) {\n observer.onInfiniteQueryUpdate()\n }\n }\n\n private syncSignals(): void {\n this.$data.set(this.state.data)\n this.$error.set(this.state.error)\n this.$status.set(this.state.status)\n this.$fetchStatus.set(this.state.fetchStatus)\n this.$updatedAt.set(this.state.dataUpdatedAt || null)\n this.$isInvalidated.set(this.state.isInvalidated)\n this.$fetchingNextPage.set(this.state.fetchingNextPage)\n this.$fetchingPreviousPage.set(this.state.fetchingPreviousPage)\n }\n}\n","import type {\n InfiniteQueryDefinition,\n InfiniteQueryInstanceOptions,\n InfiniteQueryOptions,\n ResolvedInfiniteInstanceOptions,\n ResolvedInfiniteQueryOptions,\n} from '../types'\nimport { toMs } from './query-options'\n\nconst DEFAULT_CACHE_TIME_MS = 5 * 60_000\n\nexport const resolveInfiniteQueryOptions = <\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n>(\n options: InfiniteQueryOptions<TPage, TParams, TPageParam, TError>,\n): ResolvedInfiniteQueryOptions<TPage, TParams, TPageParam, TError> => {\n const staleTime = options.staleTime ?? 0\n const cacheTime = options.cacheTime ?? DEFAULT_CACHE_TIME_MS\n\n return {\n ...options,\n staleTime,\n cacheTime,\n retry: options.retry ?? false,\n retryDelay: options.retryDelay ?? 1000,\n keepPreviousData: options.keepPreviousData ?? false,\n abortPrevious: options.abortPrevious ?? true,\n staleTimeMs: toMs(staleTime, 0),\n cacheTimeMs: toMs(cacheTime, DEFAULT_CACHE_TIME_MS),\n }\n}\n\nexport const resolveInfiniteInstanceOptions = <\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n>(\n definitionOptions: ResolvedInfiniteQueryOptions<TPage, TParams, TPageParam, TError>,\n instanceOptions?: InfiniteQueryInstanceOptions<TPage, TParams, TPageParam, TError>,\n): ResolvedInfiniteInstanceOptions<TPage, TParams, TPageParam, TError> => {\n const staleTime = instanceOptions?.staleTime ?? definitionOptions.staleTime ?? 0\n const cacheTime =\n instanceOptions?.cacheTime ?? definitionOptions.cacheTime ?? DEFAULT_CACHE_TIME_MS\n\n return {\n ...definitionOptions,\n ...instanceOptions,\n staleTime,\n cacheTime,\n staleTimeMs: toMs(staleTime, 0),\n cacheTimeMs: toMs(cacheTime, DEFAULT_CACHE_TIME_MS),\n enabled: instanceOptions?.enabled ?? true,\n refetchOnMount: instanceOptions?.refetchOnMount ?? true,\n refetchOnWindowFocus: instanceOptions?.refetchOnWindowFocus ?? true,\n refetchOnReconnect: instanceOptions?.refetchOnReconnect ?? true,\n keepPreviousData: instanceOptions?.keepPreviousData ?? definitionOptions.keepPreviousData ?? false,\n abortPrevious: instanceOptions?.abortPrevious ?? definitionOptions.abortPrevious ?? true,\n retry: instanceOptions?.retry ?? definitionOptions.retry ?? false,\n retryDelay: instanceOptions?.retryDelay ?? definitionOptions.retryDelay ?? 1000,\n onStart: instanceOptions?.onStart ?? definitionOptions.onStart,\n onSuccess: instanceOptions?.onSuccess ?? definitionOptions.onSuccess,\n onError: instanceOptions?.onError ?? definitionOptions.onError,\n onSettled: instanceOptions?.onSettled ?? definitionOptions.onSettled,\n }\n}\n\nexport const resolveInfiniteDefinitionOptions = <\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n>(\n definition: InfiniteQueryDefinition<TPage, TParams, TPageParam, TError>,\n): ResolvedInfiniteQueryOptions<TPage, TParams, TPageParam, TError> =>\n resolveInfiniteQueryOptions(definition.options)\n\nexport { isEnabled } from './query-status'\n","import { effect } from '@echojs-ecosystem/reactivity'\n\nimport { InfiniteQuery } from '../core/infinite-query'\nimport {\n isEnabled,\n resolveInfiniteDefinitionOptions,\n resolveInfiniteInstanceOptions,\n} from './infinite-query-status'\nimport type {\n InfiniteQueryDefinition,\n InfiniteQueryInstanceOptions,\n CancelOptions,\n QueryClient,\n RefetchOptions,\n FetchPageOptions,\n ResolvedInfiniteInstanceOptions,\n} from '../types'\nimport { hashKey } from '../utils/hash'\n\nexport class InfiniteQueryObserver<\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n> {\n readonly definition: InfiniteQueryDefinition<TPage, TParams, TPageParam, TError>\n readonly client: QueryClient\n readonly options: ResolvedInfiniteInstanceOptions<TPage, TParams, TPageParam, TError>\n\n #query: InfiniteQuery<TPage, TParams, TPageParam, TError> | null = null\n #previousQuery: InfiniteQuery<TPage, TParams, TPageParam, TError> | null = null\n #params!: TParams\n #disposeParams: (() => void) | null = null\n #destroyed = false\n #listeners = new Set<() => void>()\n #currentHash: string | null = null\n\n constructor(\n definition: InfiniteQueryDefinition<TPage, TParams, TPageParam, TError>,\n client: QueryClient,\n params: TParams | (() => TParams),\n instanceOptions?: InfiniteQueryInstanceOptions<TPage, TParams, TPageParam, TError>,\n ) {\n this.definition = definition\n this.client = client\n this.options = resolveInfiniteInstanceOptions(\n resolveInfiniteDefinitionOptions(definition),\n instanceOptions,\n )\n\n if (typeof params === 'function') {\n this.#disposeParams = effect(() => {\n this.setParams((params as () => TParams)())\n })\n } else {\n this.setParams(params)\n }\n }\n\n getQuery(): InfiniteQuery<TPage, TParams, TPageParam, TError> | null {\n return this.#query\n }\n\n getPreviousQuery(): InfiniteQuery<TPage, TParams, TPageParam, TError> | null {\n return this.#previousQuery\n }\n\n getParams(): TParams {\n return this.#params\n }\n\n onInfiniteQueryUpdate(): void {\n for (const listener of this.#listeners) listener()\n }\n\n subscribe(listener: () => void): () => void {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n setParams(params: TParams): void {\n if (this.#destroyed) return\n\n this.#params = params\n const queryKey = this.definition.queryKey(params)\n const hash = hashKey(queryKey)\n\n if (this.#currentHash === hash) {\n void this.maybeFetch(false)\n return\n }\n\n if (this.#query) {\n if (this.options.abortPrevious) {\n void this.#query.cancel({ silent: true })\n }\n this.#detach(this.#query)\n this.#previousQuery = this.options.keepPreviousData ? this.#query : null\n }\n\n this.#currentHash = hash\n this.#query = this.client.infiniteQueryCache.build({\n client: this.client,\n cache: this.client.infiniteQueryCache,\n definition: this.definition,\n params,\n queryKey,\n options: this.options,\n })\n\n this.#query.addObserver(this)\n void this.maybeFetch(true)\n this.onInfiniteQueryUpdate()\n }\n\n maybeFetch(paramsChanged: boolean): void {\n if (!this.#query || !isEnabled(this.options.enabled)) return\n\n const stale = this.#query.isStale()\n const hasData = this.#query.hasData()\n\n if (!hasData || stale) {\n void this.#query.fetchNextPage()\n return\n }\n\n if (paramsChanged && this.options.refetchOnMount === true) {\n void this.#query.refetch()\n }\n }\n\n cancel(options?: CancelOptions): void {\n void this.#query?.cancel(options)\n }\n\n remove(): void {\n if (!this.#query) return\n this.#detach(this.#query)\n this.client.infiniteQueryCache.remove(this.#query)\n this.#query = null\n this.#currentHash = null\n this.onInfiniteQueryUpdate()\n }\n\n destroy(): void {\n if (this.#destroyed) return\n this.#destroyed = true\n this.#disposeParams?.()\n if (this.#query) this.#detach(this.#query)\n this.#listeners.clear()\n }\n\n #detach(query: InfiniteQuery<TPage, TParams, TPageParam, TError>): void {\n query.removeObserver(this)\n }\n}\n","import { computed, signal } from '@echojs-ecosystem/reactivity'\n\nimport { InfiniteQueryObserver } from './infinite-query-observer'\nimport { isQueryPending } from './query-status'\nimport type {\n InfiniteQueryData,\n InfiniteQueryDefinition,\n InfiniteQueryInstance,\n InfiniteQueryInstanceOptions,\n CancelOptions,\n FetchPageOptions,\n QueryClient,\n RefetchOptions,\n} from '../types'\nimport type { InfiniteQuery } from '../core/infinite-query'\n\nconst effectiveInfiniteQuery = <TPage, TParams, TPageParam, TError>(\n observer: InfiniteQueryObserver<TPage, TParams, TPageParam, TError>,\n): InfiniteQuery<TPage, TParams, TPageParam, TError> | null => {\n const query = observer.getQuery()\n if (!query) return observer.getPreviousQuery()\n if (query.hasData()) return query\n const prev = observer.getPreviousQuery()\n if (prev && observer.options.keepPreviousData) return prev\n return query\n}\n\nexport const createInfiniteQueryInstance = <\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n>(\n definition: InfiniteQueryDefinition<TPage, TParams, TPageParam, TError>,\n client: QueryClient,\n params: TParams | (() => TParams),\n instanceOptions?: InfiniteQueryInstanceOptions<TPage, TParams, TPageParam, TError>,\n): InfiniteQueryInstance<TPage, TPageParam, TParams, TError> => {\n const observer = new InfiniteQueryObserver(definition, client, params, instanceOptions)\n const $params = signal<TParams>(observer.getParams())\n\n observer.subscribe(() => $params.set(observer.getParams()))\n\n const readQuery = () => effectiveInfiniteQuery(observer)\n\n const readData = (): InfiniteQueryData<TPage, TPageParam> | null => {\n const data = readQuery()?.$data.value() as InfiniteQueryData<TPage, TPageParam> | undefined\n return data ?? null\n }\n\n const $data = computed((): InfiniteQueryData<TPage, TPageParam> | null => readData())\n const $pages = computed((): TPage[] => readData()?.pages ?? [])\n const $pageParams = computed((): TPageParam[] => readData()?.pageParams ?? [])\n const $error = computed((): TError | null => readQuery()?.$error.value() as TError | null ?? null)\n const $pending = computed(() => {\n const q = readQuery()\n return q ? isQueryPending(q.$status.value()) : false\n })\n const $fetching = computed(() => readQuery()?.$fetchStatus.value() === 'fetching')\n const $fetchingNextPage = computed(() => readQuery()?.$fetchingNextPage.value() ?? false)\n const $fetchingPreviousPage = computed(\n () => readQuery()?.$fetchingPreviousPage.value() ?? false,\n )\n const $abortSignal = computed((): AbortSignal | null => readQuery()?.getAbortSignal() ?? null)\n\n const getQuery = () => {\n const q = observer.getQuery()\n if (!q) throw new Error('InfiniteQueryObserver has no active query')\n return q\n }\n\n return {\n kind: 'infinite-query',\n\n pages: () => $pages.value() as TPage[],\n pageParams: () => $pageParams.value() as TPageParam[],\n data: () => $data.value() as InfiniteQueryData<TPage, TPageParam> | null,\n flatMap: <TItem>(selector: (page: TPage) => TItem[]) =>\n ($pages.value() as TPage[]).flatMap((page) => selector(page)),\n\n fetchNextPage: (options?: FetchPageOptions) => getQuery().fetchNextPage(options),\n fetchPreviousPage: (options?: FetchPageOptions) => getQuery().fetchPreviousPage(options),\n refetch: (options?: RefetchOptions) => getQuery().refetch(options),\n reset: () => getQuery().reset(),\n cancel: (options?: CancelOptions) => observer.cancel(options),\n abort: (reason?: unknown) => observer.cancel({ reason }),\n abortController: () => readQuery()?.getAbortController() ?? null,\n abortSignal: () => readQuery()?.getAbortSignal() ?? null,\n remove: () => {\n observer.remove()\n observer.destroy()\n },\n\n hasNextPage: () => readQuery()?.hasNextPage() ?? true,\n hasPreviousPage: () => readQuery()?.hasPreviousPage() ?? false,\n\n pending: () => $pending.value(),\n fetching: () => $fetching.value(),\n fetchingNextPage: () => $fetchingNextPage.value(),\n fetchingPreviousPage: () => $fetchingPreviousPage.value(),\n error: () => $error.value() as TError | null,\n params: () => $params.value() as TParams,\n\n subscribe(listener: (data: InfiniteQueryData<TPage, TPageParam> | null) => void): () => void {\n return observer.subscribe(() => listener($data.value() as InfiniteQueryData<TPage, TPageParam> | null))\n },\n\n $data: $data as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$data'],\n $pages: $pages as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$pages'],\n $pageParams: $pageParams as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$pageParams'],\n $pending: $pending as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$pending'],\n $fetching: $fetching as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$fetching'],\n $fetchingNextPage:\n $fetchingNextPage as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$fetchingNextPage'],\n $fetchingPreviousPage:\n $fetchingPreviousPage as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$fetchingPreviousPage'],\n $error: $error as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$error'],\n $params: $params as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$params'],\n $abortSignal:\n $abortSignal as InfiniteQueryInstance<TPage, TPageParam, TParams, TError>['$abortSignal'],\n }\n}\n","import type { QueryProvider } from '../provider/query-provider'\nimport type { InfiniteQueryOptions, QueryClientConfig } from '../types'\nimport { defaultQueryOptions } from './query-options'\n\nexport const mergeInfiniteQueryDefinitionOptions = <\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n>(\n options: InfiniteQueryOptions<TPage, TParams, TPageParam, TError>,\n config?: QueryClientConfig,\n provider?: QueryProvider | null,\n): InfiniteQueryOptions<TPage, TParams, TPageParam, TError> => {\n const queryDefaults = defaultQueryOptions<unknown, TParams, TError>(config)\n const providerDefaults = provider?.config.defaultOptions?.queries as\n | Partial<InfiniteQueryOptions<TPage, TParams, TPageParam, TError>>\n | undefined\n\n return {\n staleTime: queryDefaults.staleTime,\n cacheTime: queryDefaults.cacheTime,\n retry: queryDefaults.retry,\n retryDelay: queryDefaults.retryDelay,\n keepPreviousData: queryDefaults.keepPreviousData,\n abortPrevious: queryDefaults.abortPrevious,\n ...providerDefaults,\n ...options,\n }\n}\n","import type { QueryProvider } from '../provider/query-provider'\nimport { getQueryProvider } from '../provider/context'\nimport type {\n InfiniteQueryDefinition,\n InfiniteQueryInstance,\n InfiniteQueryInstanceOptions,\n InfiniteQueryOptions,\n StoreLike,\n} from '../types'\nimport { getDefaultQueryClient } from '../client/default-client'\nimport { createInfiniteQueryInstance } from './infinite-query-instance'\nimport { mergeInfiniteQueryDefinitionOptions } from './infinite-query-options'\nimport { resolveInfiniteQueryOptions } from './infinite-query-status'\n\nexport type CreateInfiniteQueryMeta = {\n provider?: QueryProvider | null\n}\n\nexport const createInfiniteQuery = <\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n>(\n options: InfiniteQueryOptions<TPage, TParams, TPageParam, TError>,\n meta?: CreateInfiniteQueryMeta,\n): InfiniteQueryDefinition<TPage, TParams, TPageParam, TError> => {\n const provider = meta?.provider ?? getQueryProvider()\n const mergedOptions = mergeInfiniteQueryDefinitionOptions(\n options,\n provider?.config,\n provider,\n )\n const resolved = resolveInfiniteQueryOptions(mergedOptions)\n\n const definition: InfiniteQueryDefinition<TPage, TParams, TPageParam, TError> = {\n kind: 'infinite-query-definition',\n name: options.name,\n options: mergedOptions,\n\n queryKey(params: TParams) {\n return mergedOptions.queryKey(params)\n },\n\n with(\n params: TParams | (() => TParams),\n instanceOptions?: InfiniteQueryInstanceOptions<TPage, TParams, TPageParam, TError>,\n ): InfiniteQueryInstance<TPage, TPageParam, TParams, TError> {\n const client =\n instanceOptions?.client ?? provider?.client ?? getDefaultQueryClient()\n return createInfiniteQueryInstance(definition, client, params, instanceOptions)\n },\n\n withStore<StoreValue>(\n store: StoreLike<StoreValue>,\n map: (value: StoreValue) => TParams,\n instanceOptions?: InfiniteQueryInstanceOptions<TPage, TParams, TPageParam, TError>,\n ): InfiniteQueryInstance<TPage, TPageParam, TParams, TError> {\n const client =\n instanceOptions?.client ?? provider?.client ?? getDefaultQueryClient()\n return createInfiniteQueryInstance(\n definition,\n client,\n () => map(store.value()),\n instanceOptions,\n )\n },\n }\n\n void resolved\n return definition\n}\n","export type Listener<TEvent> = (event: TEvent) => void\n\nexport class Subscribable<TEvent> {\n protected listeners = new Set<Listener<TEvent>>()\n\n subscribe(listener: Listener<TEvent>): () => void {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n }\n\n protected notify(event: TEvent): void {\n for (const listener of this.listeners) {\n listener(event)\n }\n }\n\n hasListeners(): boolean {\n return this.listeners.size > 0\n }\n}\n","import type { QueryFetchStatus, QueryKey, QueryStatus } from '../types'\nimport { hashKey, partialMatchKey } from './hash'\n\nexport type QueryFilters = {\n exact?: boolean\n queryKey?: QueryKey\n stale?: boolean\n fetchStatus?: QueryFetchStatus\n status?: QueryStatus\n predicate?: (query: QueryLike) => boolean\n}\n\nexport type QueryLike = {\n queryKey: QueryKey\n queryHash: string\n isStale(): boolean\n isActive(): boolean\n state: {\n fetchStatus: QueryFetchStatus\n status: QueryStatus\n }\n}\n\n/** TanStack Query matchQuery — filter queries in cache. */\nexport const matchQuery = (filters: QueryFilters, query: QueryLike): boolean => {\n const { exact, fetchStatus, predicate, queryKey, stale } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashKey(queryKey)) return false\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) return false\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) return false\n if (predicate && !predicate(query)) return false\n\n return true\n}\n","import { Subscribable } from './subscribable'\nimport { Query, type QueryConfig } from './query'\nimport type { QueryCacheEvent, QueryFilter, QueryKey } from '../types'\nimport { hashKey } from '../utils/hash'\nimport { matchQuery, type QueryFilters } from '../utils/match-query'\n\nexport class QueryCache extends Subscribable<QueryCacheEvent> {\n #queries = new Map<string, Query<unknown, void, unknown>>()\n\n get(queryHash: string): Query<unknown, void, unknown> | undefined {\n return this.#queries.get(queryHash)\n }\n\n getByKey(queryKey: QueryKey): Query<unknown, void, unknown> | undefined {\n return this.#queries.get(hashKey(queryKey))\n }\n\n getAll(): Query<unknown, void, unknown>[] {\n return [...this.#queries.values()]\n }\n\n build<TData, TParams = void, TError = unknown, TQueryData = TData>(\n config: QueryConfig<TData, TParams, TError, TQueryData>,\n ): Query<TData, TParams, TError, TQueryData> {\n const hash = hashKey(config.queryKey)\n const cached = this.#queries.get(hash) as\n | Query<TData, TParams, TError, TQueryData>\n | undefined\n if (cached) return cached\n\n const query = new Query(config)\n this.add(query)\n return query\n }\n\n add<TData, TParams = void, TError = unknown, TQueryData = TData>(\n query: Query<TData, TParams, TError, TQueryData>,\n ): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(\n query.queryHash,\n query as unknown as Query<unknown, void, unknown>,\n )\n this.emit({\n type: 'queryAdded',\n queryKey: query.queryKey,\n hash: query.queryHash,\n })\n }\n }\n\n remove<TData, TParams = void, TError = unknown, TQueryData = TData>(\n query: Query<TData, TParams, TError, TQueryData>,\n ): void {\n const cached = this.#queries.get(query.queryHash)\n if (cached && cached.queryHash === query.queryHash) {\n void query.cancel({ silent: true })\n this.#queries.delete(query.queryHash)\n this.emit({\n type: 'queryRemoved',\n queryKey: query.queryKey,\n hash: query.queryHash,\n })\n }\n }\n\n find(filters: QueryFilters): Query<unknown, void, unknown> | undefined {\n return this.getAll().find((query) => matchQuery(filters, query))\n }\n\n findAll(filter: QueryFilter = []): Query<unknown, void, unknown>[] {\n if (Array.isArray(filter)) {\n if (filter.length === 0) return this.getAll()\n return this.getAll().filter((query) =>\n matchQuery({ queryKey: filter }, query),\n )\n }\n const objectFilter = filter as QueryFilters\n return this.getAll().filter((query) =>\n matchQuery(\n { queryKey: objectFilter.queryKey!, exact: objectFilter.exact },\n query,\n ),\n )\n }\n\n clear(): void {\n for (const query of [...this.getAll()]) {\n this.remove(query)\n }\n }\n\n emit(event: QueryCacheEvent): void {\n this.notify(event)\n }\n\n onFocus(): void {\n for (const query of this.getAll()) {\n query.onFocus()\n }\n }\n\n onOnline(): void {\n for (const query of this.getAll()) {\n query.onOnline()\n }\n }\n}\n\nexport const createQueryCache = (): QueryCache => new QueryCache()\n","import { Subscribable } from './subscribable'\nimport { InfiniteQuery, type InfiniteQueryConfig } from './infinite-query'\nimport type { InfiniteQueryCacheEvent, QueryFilter, QueryKey } from '../types'\nimport { hashKey } from '../utils/hash'\nimport { matchQuery, type QueryFilters } from '../utils/match-query'\n\nexport class InfiniteQueryCache extends Subscribable<InfiniteQueryCacheEvent> {\n #queries = new Map<string, InfiniteQuery<unknown, void, unknown, unknown>>()\n\n get(queryHash: string): InfiniteQuery<unknown, void, unknown, unknown> | undefined {\n return this.#queries.get(queryHash)\n }\n\n getByKey(queryKey: QueryKey): InfiniteQuery<unknown, void, unknown, unknown> | undefined {\n return this.#queries.get(hashKey(queryKey))\n }\n\n getAll(): InfiniteQuery<unknown, void, unknown, unknown>[] {\n return [...this.#queries.values()]\n }\n\n build<TPage, TParams = void, TPageParam = unknown, TError = unknown>(\n config: InfiniteQueryConfig<TPage, TParams, TPageParam, TError>,\n ): InfiniteQuery<TPage, TParams, TPageParam, TError> {\n const hash = hashKey(config.queryKey)\n const cached = this.#queries.get(hash) as\n | InfiniteQuery<TPage, TParams, TPageParam, TError>\n | undefined\n if (cached) return cached\n\n const query = new InfiniteQuery(config)\n this.add(query)\n return query\n }\n\n add<TPage, TParams = void, TPageParam = unknown, TError = unknown>(\n query: InfiniteQuery<TPage, TParams, TPageParam, TError>,\n ): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(\n query.queryHash,\n query as unknown as InfiniteQuery<unknown, void, unknown, unknown>,\n )\n this.emit({\n type: 'infiniteQueryAdded',\n queryKey: query.queryKey,\n hash: query.queryHash,\n })\n }\n }\n\n remove<TPage, TParams = void, TPageParam = unknown, TError = unknown>(\n query: InfiniteQuery<TPage, TParams, TPageParam, TError>,\n ): void {\n const cached = this.#queries.get(query.queryHash)\n if (cached && cached.queryHash === query.queryHash) {\n void query.cancel({ silent: true })\n this.#queries.delete(query.queryHash)\n this.emit({\n type: 'infiniteQueryRemoved',\n queryKey: query.queryKey,\n hash: query.queryHash,\n })\n }\n }\n\n find(filters: QueryFilters): InfiniteQuery<unknown, void, unknown, unknown> | undefined {\n return this.getAll().find((query) => matchQuery(filters, query))\n }\n\n findAll(filter: QueryFilter = []): InfiniteQuery<unknown, void, unknown, unknown>[] {\n if (Array.isArray(filter)) {\n if (filter.length === 0) return this.getAll()\n return this.getAll().filter((query) => matchQuery({ queryKey: filter }, query))\n }\n const objectFilter = filter as QueryFilters\n return this.getAll().filter((query) =>\n matchQuery(\n { queryKey: objectFilter.queryKey!, exact: objectFilter.exact },\n query,\n ),\n )\n }\n\n clear(): void {\n for (const query of [...this.getAll()]) {\n this.remove(query)\n }\n }\n\n emit(event: InfiniteQueryCacheEvent): void {\n this.notify(event)\n }\n\n onFocus(): void {\n for (const query of this.getAll()) {\n query.onFocus()\n }\n }\n\n onOnline(): void {\n for (const query of this.getAll()) {\n query.onOnline()\n }\n }\n}\n\nexport const createInfiniteQueryCache = (): InfiniteQueryCache => new InfiniteQueryCache()\n","import { Subscribable } from './subscribable'\nimport type { MutationCacheEvent, MutationCacheListener } from '../types'\n\nexport class MutationCache extends Subscribable<MutationCacheEvent> {\n emit(event: MutationCacheEvent): void {\n this.notify(event)\n }\n\n clear(): void {\n this.listeners.clear()\n }\n}\n\nexport const createMutationCache = (): MutationCache => new MutationCache()\n","import type { QueryClient } from '../types'\n\nconst clients = new Set<QueryClient>()\n\nexport const registerClientWithManagers = (\n client: QueryClient,\n): void => {\n clients.add(client)\n}\n\nexport const getRegisteredClients = (): Set<QueryClient> => clients\n\nexport const resetRegisteredClients = (): void => {\n clients.clear()\n}\n","import { QueryCache, createQueryCache } from '../core/query-cache'\nimport { createInfiniteQueryCache } from '../core/infinite-query-cache'\nimport type { InfiniteQueryCache } from '../core/infinite-query-cache'\nimport { createMutationCache } from '../core/mutation-cache'\nimport type { MutationCache } from '../core/mutation-cache'\nimport { hashKey } from '../utils/hash'\nimport { functionalUpdate } from '../utils/functional-update'\nimport {\n isEnabled,\n resolveDefinitionOptions,\n resolveInstanceOptions,\n} from '../query/query-status'\nimport type {\n QueryClientConfig,\n QueryDefinition,\n QueryFilter,\n QueryInstanceOptions,\n QueryKey,\n} from '../types'\nimport { registerClientWithManagers } from '../managers/register-client'\nimport { registerDefaultQueryClientFactory, setDefaultQueryClient } from './default-client'\nimport { isCancelledError } from '../core/cancelled-error'\n\nconst resolveKeyAndParams = <TData, TParams = void, TError = unknown, TQueryData = TData>(\n keyOrDefinition: QueryKey | QueryDefinition<TData, TParams, TError, TQueryData>,\n params?: TParams,\n): { key: QueryKey } => {\n if (typeof keyOrDefinition === 'object' && keyOrDefinition !== null && 'kind' in keyOrDefinition) {\n return { key: keyOrDefinition.queryKey(params as TParams) }\n }\n return { key: keyOrDefinition as QueryKey }\n}\n\nexport class QueryClient {\n readonly queryCache: QueryCache\n readonly infiniteQueryCache: InfiniteQueryCache\n readonly mutationCache: MutationCache\n\n constructor(config?: QueryClientConfig) {\n this.queryCache = createQueryCache()\n this.infiniteQueryCache = createInfiniteQueryCache()\n this.mutationCache = createMutationCache()\n registerClientWithManagers(this)\n }\n\n async fetchQuery<TData, TParams = void, TError = unknown, TQueryData = TData>(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n params?: TParams,\n options?: QueryInstanceOptions<TData, TParams, TError>,\n ): Promise<TData> {\n const resolvedParams = (params ?? ({} as TParams)) as TParams\n const queryKey = definition.queryKey(resolvedParams)\n const resolvedOptions = resolveInstanceOptions(\n resolveDefinitionOptions(definition),\n options,\n )\n\n if (!isEnabled(resolvedOptions.enabled)) {\n const cached = this.getQueryData<TData, TParams, TError, TQueryData>(definition, resolvedParams)\n if (cached === undefined) {\n throw new Error('Query is disabled and has no cached data')\n }\n return cached\n }\n\n const query = this.queryCache.build({\n client: this,\n cache: this.queryCache,\n definition,\n params: resolvedParams,\n queryKey,\n options: resolvedOptions,\n })\n\n if (query.hasData() && !query.isStale()) {\n return query.state.data as TData\n }\n\n return query.fetch()\n }\n\n async prefetchQuery<TData, TParams = void, TError = unknown, TQueryData = TData>(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n params?: TParams,\n options?: QueryInstanceOptions<TData, TParams, TError>,\n ): Promise<void> {\n await this.fetchQuery(definition, params, options)\n }\n\n async ensureQueryData<TData, TParams = void, TError = unknown, TQueryData = TData>(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n params?: TParams,\n options?: QueryInstanceOptions<TData, TParams, TError>,\n ): Promise<TData> {\n return this.fetchQuery(definition, params, options)\n }\n\n getQueryData<TData>(keyOrDefinition: QueryKey): TData | undefined\n getQueryData<TData, TError = unknown, TQueryData = TData>(\n definition: QueryDefinition<TData, void, TError, TQueryData>,\n ): TData | undefined\n getQueryData<TData, TParams, TError = unknown, TQueryData = TData>(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n params: TParams,\n ): TData | undefined\n getQueryData<TData, TParams = void, TError = unknown, TQueryData = TData>(\n keyOrDefinition: QueryKey | QueryDefinition<TData, TParams, TError, TQueryData>,\n params?: TParams,\n ): TData | undefined {\n const { key } = resolveKeyAndParams<TData, TParams, TError, TQueryData>(keyOrDefinition, params)\n return this.queryCache.getByKey(key)?.state.data as TData | undefined\n }\n\n setQueryData<TData>(\n keyOrDefinition: QueryKey,\n updater: TData | ((prev: TData | undefined) => TData | undefined),\n ): void\n setQueryData<TData>(\n definition: QueryDefinition<TData, void, unknown, unknown>,\n updater: TData | ((prev: TData | undefined) => TData | undefined),\n ): void\n setQueryData<TData, TParams, TError = unknown, TQueryData = TData>(\n definition: QueryDefinition<TData, TParams, TError, TQueryData>,\n params: TParams,\n updater: TData | ((prev: TData | undefined) => TData | undefined),\n ): void\n setQueryData<TData>(\n keyOrDefinition: QueryKey | QueryDefinition<TData, void, unknown, unknown>,\n paramsOrUpdater?: unknown | ((prev: TData | undefined) => TData | undefined),\n updater?: TData | ((prev: TData | undefined) => TData | undefined),\n ): void {\n let key: QueryKey\n let nextUpdater: (prev: TData | undefined) => TData | undefined\n\n if (typeof keyOrDefinition === 'object' && keyOrDefinition !== null && 'kind' in keyOrDefinition) {\n key = keyOrDefinition.queryKey(paramsOrUpdater as never)\n nextUpdater =\n typeof updater === 'function'\n ? (updater as (prev: TData | undefined) => TData | undefined)\n : () => updater as TData\n } else {\n key = keyOrDefinition as QueryKey\n nextUpdater =\n typeof paramsOrUpdater === 'function'\n ? (paramsOrUpdater as (prev: TData | undefined) => TData | undefined)\n : () => paramsOrUpdater as TData\n }\n\n const hash = hashKey(key)\n let query = this.queryCache.get(hash)\n if (!query) {\n throw new Error(`Query not found for key: ${JSON.stringify(key)}`)\n }\n query.setData((prev: TData | undefined) =>\n functionalUpdate(nextUpdater, prev),\n )\n }\n\n invalidateQueries(\n filter: QueryFilter,\n options?: import('../types').InvalidateQueriesOptions,\n ): void {\n const refetchMode = options?.refetch ?? 'active'\n const shouldRefetch = refetchMode !== false && refetchMode !== 'none'\n\n for (const query of this.queryCache.findAll(filter)) {\n query.invalidate()\n\n if (!shouldRefetch) continue\n\n if (refetchMode === 'all' || query.isActive()) {\n void query.fetch().catch(() => undefined)\n }\n }\n }\n\n async refetchQueries(filter: QueryFilter): Promise<void> {\n await Promise.allSettled(\n this.queryCache.findAll(filter).map((query) => query.fetch()),\n )\n }\n\n cancelQueries(filter: QueryFilter): void {\n for (const query of this.queryCache.findAll(filter)) {\n void query.cancel()\n }\n }\n\n removeQueries(filter: QueryFilter): void {\n for (const query of [...this.queryCache.findAll(filter)]) {\n this.queryCache.remove(query)\n }\n }\n\n clear(): void {\n this.queryCache.clear()\n this.infiniteQueryCache.clear()\n this.mutationCache.clear()\n }\n}\n\nexport const createQueryClient = (config?: QueryClientConfig): QueryClient => {\n const client = new QueryClient(config)\n setDefaultQueryClient(client)\n registerDefaultQueryClientFactory(() => client)\n return client\n}\n\nexport type { QueryClient as QueryClientType }\n","import { computed, signal } from '@echojs-ecosystem/reactivity'\n\nimport {\n abortWithReason,\n createFetchAbortHandle,\n mergeFetchAbortSource,\n type CancelOptions,\n} from '../async/abort-control'\nimport { isAbortError, isCancelledError } from './cancelled-error'\nimport { createRetryer } from './retryer'\nimport type { MutationCache } from './mutation-cache'\nimport type {\n MutationDefinition,\n MutationInstance,\n MutationRunOptions,\n MutationStatus,\n QueryClient,\n} from '../types'\n\nlet mutationIdCounter = 0\n\nexport const resetMutationIdCounter = (): void => {\n mutationIdCounter = 0\n}\n\nexport class Mutation<\n TData,\n TVariables,\n TError = unknown,\n TRollback = unknown,\n> {\n readonly id: number\n readonly definition: MutationDefinition<TData, TVariables, TError, TRollback>\n readonly client: QueryClient\n readonly cache: MutationCache\n\n readonly $data\n readonly $error\n readonly $variables\n readonly $status\n readonly $pendingCount\n\n #abortController: AbortController | undefined\n #abortDispose: (() => void) | undefined\n\n constructor(\n definition: MutationDefinition<TData, TVariables, TError, TRollback>,\n client: QueryClient,\n cache: MutationCache,\n ) {\n mutationIdCounter += 1\n this.id = mutationIdCounter\n this.definition = definition\n this.client = client\n this.cache = cache\n\n this.$data = signal<TData | undefined>(undefined)\n this.$error = signal<TError | null>(null)\n this.$variables = signal<TVariables | undefined>(undefined)\n this.$status = signal<MutationStatus>('idle')\n this.$pendingCount = signal(0)\n }\n\n getAbortController(): AbortController | undefined {\n return this.#abortController\n }\n\n getAbortSignal(): AbortSignal | undefined {\n return this.#abortController?.signal\n }\n\n async run(variables: TVariables, runOptions?: MutationRunOptions): Promise<TData> {\n const abortHandle = createFetchAbortHandle(\n mergeFetchAbortSource(this.definition.options, runOptions),\n )\n this.#abortController = abortHandle.controller\n this.#abortDispose = abortHandle.dispose\n const { controller: abortController, signal } = abortHandle\n\n this.$variables.set(variables)\n this.$status.set('pending')\n this.$pendingCount.set(this.$pendingCount.peek() + 1)\n\n this.cache.emit({ type: 'mutationAdded', mutationId: this.id })\n\n let rollback: TRollback | undefined\n\n const lifecycleCtx = {\n variables,\n queryClient: this.client,\n }\n\n try {\n const mutateResult = await this.definition.options.onMutate?.({\n ...lifecycleCtx,\n })\n if (typeof mutateResult !== 'undefined') {\n rollback = mutateResult as TRollback\n }\n\n const retryer = createRetryer<TData>({\n fn: () =>\n this.definition.options.mutationFn({\n variables,\n signal,\n abortController,\n queryClient: this.client,\n }),\n onCancel: () => abortHandle.abort(),\n retry: this.definition.options.retry,\n retryDelay: this.definition.options.retryDelay,\n })\n\n const data = await retryer.start()\n\n this.$data.set(data)\n this.$error.set(null)\n this.$status.set('success')\n\n this.definition.options.onSuccess?.({\n ...lifecycleCtx,\n data,\n rollback,\n })\n\n this.cache.emit({ type: 'mutationUpdated', mutationId: this.id })\n return data\n } catch (error) {\n if (!isCancelledError(error) && !isAbortError(error)) {\n const err = error instanceof Error ? error : new Error(String(error))\n this.$error.set(err as TError)\n this.$status.set('error')\n\n this.definition.options.onError?.({\n ...lifecycleCtx,\n error: err as TError,\n rollback,\n })\n }\n throw error\n } finally {\n this.$pendingCount.set(Math.max(0, this.$pendingCount.peek() - 1))\n this.#clearAbortHandle()\n\n this.definition.options.onSettled?.({\n ...lifecycleCtx,\n data: this.$data.peek() as TData | undefined,\n error: this.$error.peek() as TError | null,\n rollback,\n })\n\n this.cache.emit({ type: 'mutationUpdated', mutationId: this.id })\n }\n }\n\n cancel(options?: CancelOptions): void {\n abortWithReason(this.#abortController, options?.reason)\n }\n\n #clearAbortHandle(): void {\n this.#abortDispose?.()\n this.#abortDispose = undefined\n this.#abortController = undefined\n }\n\n reset(): void {\n this.$data.set(undefined)\n this.$error.set(null)\n this.$variables.set(undefined)\n this.$status.set('idle')\n this.$pendingCount.set(0)\n }\n\n toInstance(): MutationInstance<TData, TVariables, TError> {\n const mutation = this\n\n const $data = computed((): TData | undefined => mutation.$data.value() as TData | undefined)\n const $error = computed((): TError | null => mutation.$error.value() as TError | null)\n const $variables = computed(\n (): TVariables | undefined => mutation.$variables.value() as TVariables | undefined,\n )\n const $status = computed((): MutationStatus => mutation.$status.value())\n const $pendingCount = computed(() => mutation.$pendingCount.value())\n const $abortSignal = computed((): AbortSignal | null => mutation.getAbortSignal() ?? null)\n\n return {\n kind: 'mutation-instance',\n run: (variables, options) => mutation.run(variables, options),\n reset: () => mutation.reset(),\n cancel: (options) => mutation.cancel(options),\n abort: (reason) => mutation.cancel({ reason }),\n abortController: () => mutation.getAbortController() ?? null,\n abortSignal: () => mutation.getAbortSignal() ?? null,\n data: () => $data.value() as TData | undefined,\n error: () => $error.value() as TError | null,\n variables: () => $variables.value() as TVariables | undefined,\n status: () => $status.value(),\n pending: () => $status.value() === 'pending',\n isPending: () => $status.value() === 'pending',\n isSuccess: () => $status.value() === 'success',\n isError: () => $status.value() === 'error',\n isIdle: () => $status.value() === 'idle',\n $data,\n $error,\n $variables,\n $status,\n $pendingCount,\n $abortSignal,\n }\n }\n}\n","import { Mutation } from '../core/mutation'\nimport type {\n MutationDefinition,\n MutationInstance,\n QueryClient,\n} from '../types'\n\nexport const createMutationInstance = <\n TData,\n TVariables,\n TError = unknown,\n TRollback = unknown,\n>(\n definition: MutationDefinition<TData, TVariables, TError, TRollback>,\n client: QueryClient,\n): MutationInstance<TData, TVariables, TError> => {\n const mutation = new Mutation(definition, client, client.mutationCache)\n return mutation.toInstance()\n}\n","import { getDefaultQueryClient } from '../client/default-client'\nimport type { CreateQueryMeta } from '../query/create-query'\nimport { getQueryProvider } from '../provider/context'\nimport type {\n MutationDefinition,\n MutationInstance,\n MutationOptions,\n QueryClient,\n} from '../types'\nimport { createMutationInstance } from './mutation-instance'\n\nexport const createMutation = <\n TData,\n TVariables,\n TError = unknown,\n TRollback = unknown,\n>(\n options: MutationOptions<TData, TVariables, TError, TRollback>,\n meta?: CreateQueryMeta,\n): MutationDefinition<TData, TVariables, TError, TRollback> => {\n const provider = meta?.provider ?? getQueryProvider()\n const mergedOptions: MutationOptions<TData, TVariables, TError, TRollback> = {\n ...(provider?.config.defaultOptions?.mutations as\n | Partial<MutationOptions<TData, TVariables, TError, TRollback>>\n | undefined),\n ...options,\n }\n\n return {\n kind: 'mutation-definition',\n name: mergedOptions.name,\n options: mergedOptions,\n create(opts?: { client?: QueryClient }): MutationInstance<TData, TVariables, TError> {\n const client =\n opts?.client ?? provider?.client ?? getDefaultQueryClient()\n return createMutationInstance(\n {\n kind: 'mutation-definition',\n name: mergedOptions.name,\n options: mergedOptions,\n create: this.create,\n },\n client,\n )\n },\n }\n}\n","import { createQueryClient, QueryClient } from '../client/query-client'\nimport { setDefaultQueryClient } from '../client/default-client'\nimport { createMutation } from '../mutation/create-mutation'\nimport { createQuery } from '../query/create-query'\nimport { createInfiniteQuery } from '../query/create-infinite-query'\nimport { setActiveQueryProvider } from './context'\nimport type {\n InfiniteQueryDefinition,\n InfiniteQueryOptions,\n InvalidateQueriesOptions,\n MutationDefinition,\n MutationOptions,\n QueryDefinition,\n QueryFilter,\n QueryOptions,\n} from '../types'\nimport type { QueryProviderConfig } from './query-provider-types'\n\nexport type {\n QueryProviderConfig,\n QueryProviderDefaultOptions,\n} from './query-provider-types'\n\nexport { getQueryProvider, resetQueryProvider } from './context'\n\nexport class QueryProvider {\n readonly client: QueryClient\n readonly config: QueryProviderConfig\n\n constructor(config: QueryProviderConfig = {}) {\n this.client = config.client ?? createQueryClient(config)\n this.config = { ...config, client: this.client }\n }\n\n createQuery = <\n TData,\n TParams = void,\n TError = unknown,\n TQueryData = TData,\n >(\n options: QueryOptions<TData, TParams, TError, TQueryData>,\n ): QueryDefinition<TData, TParams, TError, TQueryData> =>\n createQuery(options, { provider: this })\n\n createMutation = <\n TData,\n TVariables,\n TError = unknown,\n TRollback = unknown,\n >(\n options: MutationOptions<TData, TVariables, TError, TRollback>,\n ): MutationDefinition<TData, TVariables, TError, TRollback> =>\n createMutation(options, { provider: this })\n\n createInfiniteQuery = <\n TPage,\n TParams = void,\n TPageParam = unknown,\n TError = unknown,\n >(\n options: InfiniteQueryOptions<TPage, TParams, TPageParam, TError>,\n ): InfiniteQueryDefinition<TPage, TParams, TPageParam, TError> =>\n createInfiniteQuery(options, { provider: this })\n\n invalidateQueries(filter: QueryFilter, options?: InvalidateQueriesOptions): void {\n this.client.invalidateQueries(filter, options)\n }\n\n refetchQueries(filter: QueryFilter): Promise<void> {\n return this.client.refetchQueries(filter)\n }\n\n cancelQueries(filter: QueryFilter): void {\n this.client.cancelQueries(filter)\n }\n\n removeQueries(filter: QueryFilter): void {\n this.client.removeQueries(filter)\n }\n}\n\nexport const setQueryProvider = (provider: QueryProvider): void => {\n setActiveQueryProvider(provider)\n setDefaultQueryClient(provider.client)\n}\n","import { QueryProvider, setQueryProvider } from '../provider/query-provider'\nimport type { QueryProviderConfig } from '../provider/query-provider-types'\n\nexport const QUERY_PROVIDER_KEY = Symbol.for('echojs.query.provider')\n\n/** Minimal host shape — compatible with {@link EchoApp} from `@echojs-ecosystem/framework/app`. */\nexport type QueryProviderHost = {\n provide?<T>(key: symbol, value: T): unknown\n}\n\n/** @deprecated Use {@link QueryProviderHost} */\nexport type QueryPluginHost = QueryProviderHost\n\n/** Echo app provider with the active {@link QueryProvider} instance. */\nexport type EchoQueryProvider = {\n name: 'query'\n readonly provider: QueryProvider\n setup: (app: QueryProviderHost) => void\n}\n\n/** @deprecated Use {@link EchoQueryProvider} */\nexport type EchoQueryPlugin = EchoQueryProvider\n\n/** @deprecated Use {@link EchoQueryProvider} */\nexport type QueryPlugin = EchoQueryProvider\n\n/**\n * Creates a query provider: registers the global provider on call and exposes it on `app.use`.\n *\n * ```ts\n * export const queryProvider = createQueryProvider({\n * defaultOptions: { queries: { staleTime: 60_000 } },\n * });\n * ```\n */\nexport const createQueryProvider = (\n config: QueryProviderConfig = {},\n): EchoQueryProvider => {\n const provider = new QueryProvider(config)\n setQueryProvider(provider)\n\n return {\n name: 'query',\n provider,\n setup(app) {\n app.provide?.(QUERY_PROVIDER_KEY, provider)\n },\n }\n}\n\n/** @deprecated Use {@link createQueryProvider} */\nexport const createQueryPlugin = createQueryProvider\n\n/** @deprecated Use {@link createQueryProvider} */\nexport const queryPlugin = createQueryProvider\n\nexport type { QueryProvider, QueryProviderConfig }\n","import { getRegisteredClients } from './register-client'\n\nexport const refetchStaleActiveQueries = (\n _client: unknown,\n reason: 'focus' | 'reconnect',\n): void => {\n for (const client of getRegisteredClients()) {\n if (reason === 'focus') {\n client.queryCache.onFocus()\n client.infiniteQueryCache.onFocus()\n } else {\n client.queryCache.onOnline()\n client.infiniteQueryCache.onOnline()\n }\n }\n}\n","import { signal } from '@echojs-ecosystem/reactivity'\n\nimport type { QueryClient } from '../types'\nimport { getRegisteredClients } from './register-client'\nimport { refetchStaleActiveQueries } from './refetch-stale'\n\nexport class FocusManager {\n readonly #focused = signal(\n typeof document !== 'undefined' ? document.visibilityState === 'visible' : true,\n )\n\n constructor() {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const onVisibility = () => {\n this.setFocused(document.visibilityState === 'visible')\n }\n document.addEventListener('visibilitychange', onVisibility)\n window.addEventListener('focus', () => this.setFocused(true))\n }\n }\n\n isFocused(): boolean {\n return this.#focused.value()\n }\n\n setFocused(focused: boolean): void {\n this.#focused.set(focused)\n if (focused) {\n for (const client of getRegisteredClients()) {\n refetchStaleActiveQueries(client, 'focus')\n }\n }\n }\n\n subscribe(listener: (focused: boolean) => void): () => void {\n return this.#focused.subscribe(() => listener(this.#focused.value()))\n }\n\n onClientRegistered(client: QueryClient): void {\n if (this.isFocused()) {\n refetchStaleActiveQueries(client, 'focus')\n }\n }\n}\n\nexport const focusManager = new FocusManager()\n","import { signal } from '@echojs-ecosystem/reactivity'\n\nimport type { QueryClient } from '../types'\nimport { getRegisteredClients } from './register-client'\nimport { refetchStaleActiveQueries } from './refetch-stale'\n\nconst readOnline = (): boolean => {\n if (typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean') {\n return navigator.onLine\n }\n return true\n}\n\nexport class OnlineManager {\n readonly #online = signal(readOnline())\n\n constructor() {\n if (typeof window !== 'undefined') {\n window.addEventListener('online', () => this.setOnline(true))\n window.addEventListener('offline', () => this.setOnline(false))\n }\n }\n\n isOnline(): boolean {\n return this.#online.value()\n }\n\n setOnline(online: boolean): void {\n const prev = this.#online.peek()\n this.#online.set(online)\n if (!prev && online) {\n for (const client of getRegisteredClients()) {\n refetchStaleActiveQueries(client, 'reconnect')\n }\n }\n }\n\n subscribe(listener: (online: boolean) => void): () => void {\n return this.#online.subscribe(() => listener(this.#online.value()))\n }\n\n onClientRegistered(client: QueryClient): void {\n if (this.isOnline()) {\n refetchStaleActiveQueries(client, 'reconnect')\n }\n }\n}\n\nexport const onlineManager = new OnlineManager()\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@echojs-ecosystem/query",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"files": [
|
|
5
|
+
"dist"
|
|
6
|
+
],
|
|
7
|
+
"type": "module",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"check-types": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.typing.json --noEmit",
|
|
19
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.typing.json --noEmit",
|
|
20
|
+
"lint": "oxlint .",
|
|
21
|
+
"lint:fix": "oxlint . --fix",
|
|
22
|
+
"format": "oxfmt --check .",
|
|
23
|
+
"format:fix": "oxfmt .",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"test:types": "tsc -p tsconfig.typing.json --noEmit",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"test:coverage": "vitest run --coverage"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@echojs-ecosystem/reactivity": "workspace:*"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@echojs-ecosystem/oxc-config": "workspace:*",
|
|
34
|
+
"@echojs-ecosystem/store": "workspace:*",
|
|
35
|
+
"typescript": "5.9.2",
|
|
36
|
+
"vitest": "^4.1.4"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/echojs-ecosystem/echojs-core.git",
|
|
44
|
+
"directory": "packages/query"
|
|
45
|
+
}
|
|
46
|
+
}
|