@studiolambda/query 1.0.0 → 1.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"query_react.js","sources":["../src/react/context.ts","../src/react/hooks/useQueryContext.ts","../src/react/hooks/useQueryInstance.ts","../src/react/transition.ts","../src/react/hooks/useQueryTransitionContext.ts","../src/react/hooks/useQueryActions.ts","../src/react/hooks/useQueryStatus.ts","../src/react/hooks/useQuery.ts","../src/react/components/QueryProvider.tsx","../src/react/components/QueryTransition.tsx"],"sourcesContent":["import { createContext } from 'react'\nimport { Query } from 'query:index'\n\nexport interface ContextOptions {\n readonly clearOnForget?: boolean\n readonly ignoreTransitionContext?: boolean\n}\n\nexport interface ContextValue {\n readonly query?: Query\n readonly additional?: ContextOptions\n}\n\nexport const Context = createContext<ContextValue>({\n query: undefined,\n additional: undefined,\n})\n","import { Context, type ContextValue } from 'query/react:context'\nimport { use, useDebugValue } from 'react'\n\nexport function useQueryContext(): ContextValue {\n useDebugValue('useQueryContext')\n\n return use(Context)\n}\n","import { type Query } from 'query:index'\nimport { useQueryContext } from 'query/react:hooks/useQueryContext'\nimport { useDebugValue, useMemo } from 'react'\n\nexport interface QueryInstance {\n readonly query?: Query\n}\n\nexport function useQueryInstance(options?: QueryInstance): Query {\n useDebugValue('useQueryInstance')\n\n const contextOptions = useQueryContext()\n\n function query() {\n const instance = options?.query ?? contextOptions.query\n\n if (!instance) {\n throw new Error(\n 'No query instance was found. Please provide one via the resource options or the query context.'\n )\n }\n\n return instance\n }\n\n return useMemo(query, [options, contextOptions])\n}\n","import { createContext, type TransitionStartFunction } from 'react'\n\nexport interface QueryTransitionContextValue {\n readonly isPending?: boolean\n readonly startTransition?: TransitionStartFunction\n}\n\nexport const TransitionContext = createContext<QueryTransitionContextValue>({\n isPending: undefined,\n startTransition: undefined,\n})\n","import { TransitionContext, type QueryTransitionContextValue } from 'query/react:transition'\nimport { use, useDebugValue } from 'react'\n\nexport function useQueryTransitionContext(): QueryTransitionContextValue {\n useDebugValue('useQueryTransitionContext')\n\n return use(TransitionContext)\n}\n","import { MutateOptions, MutationValue, Options } from 'query:index'\nimport { useCallback, useDebugValue, useMemo } from 'react'\nimport { QueryInstance, useQueryInstance } from './useQueryInstance'\n\nexport interface QueryActions<T = unknown> {\n readonly refetch: (refetchOptions?: Options<T>) => Promise<T>\n readonly mutate: (value: MutationValue<T>, options?: MutateOptions<T>) => Promise<T>\n readonly forget: () => void\n}\n\nexport type QueryActionsOptions<T = unknown> = Options<T> & QueryInstance\n\nexport function useQueryActions<T = unknown>(\n key: string,\n options?: QueryActionsOptions<T>\n): QueryActions<T> {\n useDebugValue('useQueryActions')\n\n const { query, mutate, forget } = useQueryInstance(options)\n\n function refetchHandler(refetchOptions?: Options<T>) {\n return query<T>(key, {\n stale: false,\n ...options,\n ...refetchOptions,\n })\n }\n\n const refetch = useCallback(refetchHandler, [query, key, options])\n\n function mutateHandler<T = unknown>(value: MutationValue<T>, options?: MutateOptions<T>) {\n return mutate(key, value, options)\n }\n\n const localMutate = useCallback(mutateHandler, [mutate, key])\n\n function forgetHandler() {\n forget(key)\n }\n\n const localForget = useCallback(forgetHandler, [forget, key])\n\n function actionsHandler() {\n return { refetch, mutate: localMutate, forget: localForget }\n }\n\n return useMemo(actionsHandler, [refetch, localMutate, localForget])\n}\n","import { useDebugValue, useEffect, useState } from 'react'\nimport { useQueryInstance } from './useQueryInstance'\n\nexport interface Status {\n readonly expiresAt: Date\n readonly isExpired: boolean\n readonly isRefetching: boolean\n readonly isMutating: boolean\n}\n\nexport function useQueryStatus(key: string): Status {\n useDebugValue('useQueryStatus')\n\n const { expiration, subscribe } = useQueryInstance()\n const [expiresAt, setExpiresAt] = useState<Date>(expiration(key) ?? new Date())\n const [isExpired, setIsExpired] = useState(Date.now() > expiresAt.getTime())\n const [isRefetching, setIsRefetching] = useState(false)\n const [isMutating, setIsMutating] = useState(false)\n\n function expirationHandler() {\n if (Date.now() >= expiresAt.getTime()) {\n setIsExpired(true)\n return\n }\n\n setIsExpired(false)\n\n function handler() {\n setIsExpired(true)\n }\n\n const id = setTimeout(handler, expiresAt.getTime() - Date.now())\n\n return function () {\n clearTimeout(id)\n }\n }\n\n useEffect(expirationHandler, [expiresAt])\n\n function subscribeHandler() {\n function onMutating() {\n setIsMutating(true)\n }\n\n function onMutated() {\n setIsMutating(false)\n setExpiresAt(expiration(key) ?? new Date())\n }\n\n function onHydrated() {\n setExpiresAt(expiration(key) ?? new Date())\n }\n\n function onResolved() {\n setExpiresAt(expiration(key) ?? new Date())\n setIsRefetching(false)\n }\n\n function onForgotten() {\n setExpiresAt(expiration(key) ?? new Date())\n }\n\n function onRefetching() {\n setIsRefetching(true)\n }\n\n function onError() {\n setIsRefetching(false)\n setIsMutating(false)\n }\n\n const unsubscribeMutating = subscribe(key, 'mutating', onMutating)\n const unsubscribeMutated = subscribe(key, 'mutated', onMutated)\n const unsubscribeHydrated = subscribe(key, 'hydrated', onHydrated)\n const unsubscribeResolved = subscribe(key, 'resolved', onResolved)\n const unsubscribeForgotten = subscribe(key, 'forgotten', onForgotten)\n const unsubscribeRefetching = subscribe(key, 'refetching', onRefetching)\n const unsubscribeError = subscribe(key, 'error', onError)\n\n return function () {\n unsubscribeMutating()\n unsubscribeMutated()\n unsubscribeHydrated()\n unsubscribeResolved()\n unsubscribeForgotten()\n unsubscribeRefetching()\n unsubscribeError()\n }\n }\n\n useEffect(subscribeHandler, [key, subscribe, expiration, setExpiresAt])\n\n return { expiresAt, isExpired, isRefetching, isMutating }\n}\n","import { useEffect, use, useState, useMemo, useDebugValue, useTransition, useRef } from 'react'\nimport { ContextOptions as ContextOptions } from 'query/react:context'\nimport { Options } from 'query:index'\nimport { useQueryContext } from './useQueryContext'\nimport { QueryInstance, useQueryInstance } from './useQueryInstance'\nimport { useQueryTransitionContext } from './useQueryTransitionContext'\nimport { QueryActions, useQueryActions } from './useQueryActions'\nimport { useQueryStatus, type Status } from './useQueryStatus'\n\ntype AdditionalHooks<T> = QueryActions<T> & Status\n\nexport interface Resource<T = unknown> extends AdditionalHooks<T> {\n data: T\n isPending: boolean\n}\n\nexport type ResourceOptions<T = unknown> = ContextOptions & Options<T> & QueryInstance\n\nexport function useQuery<T = unknown>(key: string, options?: ResourceOptions<T>): Resource<T> {\n useDebugValue('useQuery')\n\n const { additional } = useQueryContext()\n\n const { isPending: isContextPending, startTransition: startContextTransition } =\n useQueryTransitionContext()\n\n const [isLocalPending, startLocalTransition] = useTransition()\n const { query, expiration, subscribe } = useQueryInstance(options)\n\n function ignoreTransitionContextHandler() {\n return options?.ignoreTransitionContext ?? additional?.ignoreTransitionContext ?? false\n }\n\n const ignoreTransitionContext = useMemo(ignoreTransitionContextHandler, [options, additional])\n\n function isPendingHandler() {\n if (ignoreTransitionContext) {\n return isLocalPending\n }\n\n return isContextPending ?? isLocalPending\n }\n\n const isPending = useMemo(isPendingHandler, [\n isContextPending,\n isLocalPending,\n ignoreTransitionContext,\n ])\n\n function startTransitionHandler() {\n if (ignoreTransitionContext) {\n return startLocalTransition\n }\n\n return startContextTransition ?? startLocalTransition\n }\n\n const startTransition = useMemo(startTransitionHandler, [\n startContextTransition,\n startLocalTransition,\n ignoreTransitionContext,\n ])\n\n function clearOnForgetHandler() {\n return options?.clearOnForget ?? additional?.clearOnForget ?? false\n }\n\n const clearOnForget = useMemo(clearOnForgetHandler, [options, additional])\n\n async function promiseHandler() {\n return await query<T>(key, options)\n }\n\n const promise = useMemo(promiseHandler, [query, key, options])\n const initial = useRef<T>(undefined)\n\n if (initial.current === undefined) {\n initial.current = use(promise)\n }\n\n const [data, setData] = useState(initial.current)\n\n function subscribeHandler() {\n function onResolved(event: Event) {\n startTransition(function () {\n setData((event as CustomEvent<T>).detail)\n })\n }\n\n function onMutating(event: Event) {\n startTransition(async function () {\n const value = await (event as CustomEvent<Promise<T>>).detail\n\n startTransition(function () {\n setData(value)\n })\n })\n }\n\n function onMutated(event: Event) {\n startTransition(function () {\n setData((event as CustomEvent<T>).detail)\n })\n }\n\n function onHydrated(event: Event) {\n startTransition(function () {\n setData((event as CustomEvent<T>).detail)\n })\n }\n\n function onRefetching(event: Event) {\n startTransition(async function () {\n const value = await (event as CustomEvent<Promise<T>>).detail\n\n startTransition(function () {\n setData(value)\n })\n })\n }\n\n function onForgotten() {\n if (clearOnForget) {\n startTransition(async function () {\n const data = await query<T>(key, options)\n\n startTransition(function () {\n setData(data)\n })\n })\n }\n }\n\n const unsubscribeResolved = subscribe(key, 'resolved', onResolved)\n const unsubscribeMutating = subscribe(key, 'mutating', onMutating)\n const unsubscribeMutated = subscribe(key, 'mutated', onMutated)\n const unsubscribeHydrated = subscribe(key, 'hydrated', onHydrated)\n const unsubscribeRefetching = subscribe(key, 'refetching', onRefetching)\n const unsubscribeForgotten = subscribe(key, 'forgotten', onForgotten)\n\n return function () {\n unsubscribeResolved()\n unsubscribeMutating()\n unsubscribeMutated()\n unsubscribeHydrated()\n unsubscribeRefetching()\n unsubscribeForgotten()\n }\n }\n\n useEffect(subscribeHandler, [\n query,\n expiration,\n subscribe,\n key,\n clearOnForget,\n options,\n startTransition,\n ])\n\n const actions = useQueryActions<T>(key, options)\n const status = useQueryStatus(key)\n\n function resourceHandler(): Resource<T> {\n return { data, isPending, ...actions, ...status }\n }\n\n return useMemo(resourceHandler, [data, isPending, actions, status])\n}\n","import { useEffect, useMemo, useState, type ReactNode } from 'react'\nimport { Context, ContextValue, type ContextOptions } from 'query/react:context'\nimport { createQuery, Query, type Configuration } from 'query:index'\n\ntype OtherProps = Configuration & ContextOptions\n\nexport interface QueryProviderProps extends OtherProps {\n children?: ReactNode\n}\n\nexport function QueryProvider({\n children,\n clearOnForget,\n broadcast,\n ...options\n}: QueryProviderProps) {\n function initial() {\n return createQuery({ broadcast, ...options })\n }\n\n const [query] = useState<Query>(initial)\n\n function reconfigure() {\n query.configure(options)\n }\n\n useEffect(reconfigure, [query, options])\n\n function broadcastCleanup() {\n if (broadcast) {\n query.configure({ broadcast })\n const unsubscribe = query.subscribeBroadcast()\n\n return function () {\n unsubscribe()\n }\n }\n\n const channel = new BroadcastChannel('query')\n\n query.configure({ broadcast: channel })\n const unsubscribe = query.subscribeBroadcast()\n\n return function () {\n unsubscribe()\n channel.close()\n }\n }\n\n useEffect(broadcastCleanup, [query, broadcast])\n\n function additionalHandler() {\n return { clearOnForget }\n }\n\n const additional = useMemo(additionalHandler, [clearOnForget])\n\n function valueHandler(): ContextValue {\n return { query, additional }\n }\n\n const value = useMemo(valueHandler, [query, additional])\n\n return <Context value={value}>{children}</Context>\n}\n","import { TransitionContext, QueryTransitionContextValue } from 'query/react:transition'\nimport { useMemo, type ReactNode, type TransitionStartFunction } from 'react'\n\nexport interface QueryTransitionProps {\n isPending: boolean\n startTransition: TransitionStartFunction\n children?: ReactNode\n}\n\nexport function QueryTransition({ children, startTransition, isPending }: QueryTransitionProps) {\n function valueHandler(): QueryTransitionContextValue {\n return { startTransition, isPending }\n }\n\n const value = useMemo(valueHandler, [startTransition, isPending])\n\n return <TransitionContext value={value}>{children}</TransitionContext>\n}\n"],"names":["Context","createContext","useQueryContext","useDebugValue","use","useQueryInstance","options","contextOptions","query","instance","useMemo","TransitionContext","useQueryTransitionContext","useQueryActions","key","mutate","forget","refetchHandler","refetchOptions","refetch","useCallback","mutateHandler","value","localMutate","forgetHandler","localForget","actionsHandler","useQueryStatus","expiration","subscribe","expiresAt","setExpiresAt","useState","isExpired","setIsExpired","isRefetching","setIsRefetching","isMutating","setIsMutating","expirationHandler","handler","id","useEffect","subscribeHandler","onMutating","onMutated","onHydrated","onResolved","onForgotten","onRefetching","onError","unsubscribeMutating","unsubscribeMutated","unsubscribeHydrated","unsubscribeResolved","unsubscribeForgotten","unsubscribeRefetching","unsubscribeError","useQuery","additional","isContextPending","startContextTransition","isLocalPending","startLocalTransition","useTransition","ignoreTransitionContextHandler","ignoreTransitionContext","isPendingHandler","isPending","startTransitionHandler","startTransition","clearOnForgetHandler","clearOnForget","promiseHandler","promise","initial","useRef","data","setData","event","actions","status","resourceHandler","QueryProvider","children","broadcast","createQuery","reconfigure","broadcastCleanup","unsubscribe","channel","additionalHandler","valueHandler","jsx","QueryTransition"],"mappings":"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"}
1
+ {"version":3,"file":"query_react.js","sources":["../src/react/context.ts","../src/react/hooks/useQueryContext.ts","../src/react/hooks/useQueryInstance.ts","../src/react/hooks/useQueryActions.ts","../src/react/hooks/useQueryStatus.ts","../src/react/transition.ts","../src/react/hooks/useQueryTransitionContext.ts","../src/react/hooks/useQueryBasic.ts","../src/react/hooks/useQuery.ts","../src/react/components/QueryProvider.tsx","../src/react/components/QueryTransition.tsx"],"sourcesContent":["import { createContext } from 'react'\nimport { type QueryInstance } from './hooks/useQueryInstance'\n\nexport interface ContextValue extends QueryInstance {\n readonly clearOnForget?: boolean\n readonly ignoreTransitionContext?: boolean\n}\n\nexport const Context = createContext<ContextValue>({\n query: undefined,\n clearOnForget: undefined,\n ignoreTransitionContext: undefined,\n})\n","import { Context, type ContextValue } from 'query/react:context'\nimport { use, useDebugValue } from 'react'\n\nexport function useQueryContext(): ContextValue {\n useDebugValue('useQueryContext')\n\n return use(Context)\n}\n","import { type Query } from 'query:index'\nimport { useQueryContext } from 'query/react:hooks/useQueryContext'\nimport { useDebugValue, useMemo } from 'react'\n\nexport interface QueryInstance {\n readonly query?: Query\n}\n\nexport function useQueryInstance(options?: QueryInstance): Query {\n useDebugValue('useQueryInstance')\n\n const { query: cQuery } = useQueryContext()\n const { query: oQuery } = options ?? {}\n\n function query() {\n const instance = oQuery ?? cQuery\n\n if (!instance) {\n throw new Error(\n 'No query instance was found. Please provide one via the resource options or the query context.'\n )\n }\n\n return instance\n }\n\n return useMemo(query, [oQuery, cQuery])\n}\n","import { type MutateOptions, type MutationValue, type Options } from 'query:index'\nimport { useCallback, useDebugValue, useMemo } from 'react'\nimport { useQueryInstance, type QueryInstance } from './useQueryInstance'\n\nexport interface QueryActions<T = unknown> {\n readonly refetch: (refetchOptions?: Options<T>) => Promise<T>\n readonly mutate: (value: MutationValue<T>, options?: MutateOptions<T>) => Promise<T>\n readonly forget: () => void\n}\n\nexport type QueryActionsOptions<T = unknown> = Options<T> & QueryInstance\n\nexport function useQueryActions<T = unknown>(\n key: string,\n options?: QueryActionsOptions<T>\n): QueryActions<T> {\n useDebugValue('useQueryActions')\n\n const {\n expiration: oExpiration,\n fetcher: oFetcher,\n stale: oStale,\n removeOnError: oRemoveOnError,\n fresh: oFresh,\n } = options ?? {}\n\n const { query, mutate, forget } = useQueryInstance(options)\n\n function refetchHandler(refetchOptions?: Options<T>) {\n return query<T>(key, {\n stale: oStale ?? false,\n expiration: oExpiration,\n fetcher: oFetcher,\n removeOnError: oRemoveOnError,\n fresh: oFresh,\n ...refetchOptions,\n })\n }\n\n const refetch = useCallback(refetchHandler, [\n query,\n key,\n oExpiration,\n oFetcher,\n oStale,\n oRemoveOnError,\n oFresh,\n ])\n\n function mutateHandler<T = unknown>(value: MutationValue<T>, options?: MutateOptions<T>) {\n return mutate(key, value, options)\n }\n\n const localMutate = useCallback(mutateHandler, [mutate, key])\n\n async function forgetHandler() {\n await forget(key)\n }\n\n const localForget = useCallback(forgetHandler, [forget, key])\n\n function actionsHandler() {\n return { refetch, mutate: localMutate, forget: localForget }\n }\n\n return useMemo(actionsHandler, [refetch, localMutate, localForget])\n}\n","import { useDebugValue, useEffect, useMemo, useState } from 'react'\nimport { useQueryInstance, type QueryInstance } from './useQueryInstance'\n\nexport interface Status {\n readonly expiresAt: Date\n readonly isExpired: boolean\n readonly isRefetching: boolean\n readonly isMutating: boolean\n}\n\nexport function useQueryStatus(key: string, options?: QueryInstance): Status {\n useDebugValue('useQueryStatus')\n\n const { expiration, subscribe } = useQueryInstance(options)\n const [expiresAt, setExpiresAt] = useState<Date>(expiration(key) ?? new Date())\n const [isExpired, setIsExpired] = useState(Date.now() > expiresAt.getTime())\n const [isRefetching, setIsRefetching] = useState(false)\n const [isMutating, setIsMutating] = useState(false)\n\n function expirationHandler() {\n if (Date.now() >= expiresAt.getTime()) {\n setIsExpired(true)\n return\n }\n\n setIsExpired(false)\n\n function handler() {\n setIsExpired(true)\n }\n\n const id = setTimeout(handler, expiresAt.getTime() - Date.now())\n\n return function () {\n clearTimeout(id)\n }\n }\n\n useEffect(expirationHandler, [expiresAt])\n\n function subscribeHandler() {\n function onMutating() {\n setIsMutating(true)\n }\n\n function onMutated() {\n setIsMutating(false)\n setExpiresAt(expiration(key) ?? new Date())\n }\n\n function onHydrated() {\n setExpiresAt(expiration(key) ?? new Date())\n }\n\n function onResolved() {\n setExpiresAt(expiration(key) ?? new Date())\n setIsRefetching(false)\n }\n\n function onForgotten() {\n setExpiresAt(expiration(key) ?? new Date())\n }\n\n function onRefetching() {\n setIsRefetching(true)\n }\n\n function onError() {\n setIsRefetching(false)\n setIsMutating(false)\n }\n\n const unsubscribeMutating = subscribe(key, 'mutating', onMutating)\n const unsubscribeMutated = subscribe(key, 'mutated', onMutated)\n const unsubscribeHydrated = subscribe(key, 'hydrated', onHydrated)\n const unsubscribeResolved = subscribe(key, 'resolved', onResolved)\n const unsubscribeForgotten = subscribe(key, 'forgotten', onForgotten)\n const unsubscribeRefetching = subscribe(key, 'refetching', onRefetching)\n const unsubscribeError = subscribe(key, 'error', onError)\n\n return function () {\n unsubscribeMutating()\n unsubscribeMutated()\n unsubscribeHydrated()\n unsubscribeResolved()\n unsubscribeForgotten()\n unsubscribeRefetching()\n unsubscribeError()\n }\n }\n\n useEffect(subscribeHandler, [key, subscribe, expiration, setExpiresAt])\n\n function statusHandler() {\n return { expiresAt, isExpired, isRefetching, isMutating }\n }\n\n return useMemo(statusHandler, [expiresAt, isExpired, isRefetching, isMutating])\n}\n","import { createContext, type TransitionStartFunction } from 'react'\n\nexport interface QueryTransitionContextValue {\n readonly isPending?: boolean\n readonly startTransition?: TransitionStartFunction\n}\n\nexport const TransitionContext = createContext<QueryTransitionContextValue>({\n isPending: undefined,\n startTransition: undefined,\n})\n","import { TransitionContext, type QueryTransitionContextValue } from 'query/react:transition'\nimport { use, useDebugValue } from 'react'\n\nexport function useQueryTransitionContext(): QueryTransitionContextValue {\n useDebugValue('useQueryTransitionContext')\n\n return use(TransitionContext)\n}\n","import { useEffect, use, useState, useMemo, useDebugValue, useTransition } from 'react'\nimport { type ContextValue } from 'query/react:context'\nimport { type Options } from 'query:index'\nimport { useQueryContext } from './useQueryContext'\nimport { useQueryInstance, type QueryInstance } from './useQueryInstance'\nimport { useQueryTransitionContext } from './useQueryTransitionContext'\n\nexport interface BasicResource<T = unknown> {\n data: T\n isPending: boolean\n}\n\nexport type BasicResourceOptions<T = unknown> = ContextValue & Options<T> & QueryInstance\n\nexport function useQueryBasic<T = unknown>(\n key: string,\n options?: BasicResourceOptions<T>\n): BasicResource<T> {\n useDebugValue('useQueryBasic')\n\n const { clearOnForget: cClearOnForget, ignoreTransitionContext: cIgnoreTransitionContext } =\n useQueryContext()\n\n const {\n clearOnForget: oClearOnForget,\n ignoreTransitionContext: oIgnoreTransitionContext,\n expiration: oExpiration,\n fetcher: oFetcher,\n stale: oStale,\n removeOnError: oRemoveOnError,\n fresh: oFresh,\n } = options ?? {}\n\n const { isPending: isContextPending, startTransition: startContextTransition } =\n useQueryTransitionContext()\n\n const [isLocalPending, startLocalTransition] = useTransition()\n const { query, expiration, subscribe } = useQueryInstance(options)\n\n function ignoreTransitionContextHandler() {\n return oIgnoreTransitionContext ?? cIgnoreTransitionContext ?? false\n }\n\n const ignoreTransitionContext = useMemo(ignoreTransitionContextHandler, [\n oIgnoreTransitionContext,\n cIgnoreTransitionContext,\n ])\n\n function isPendingHandler() {\n if (ignoreTransitionContext) {\n return isLocalPending\n }\n\n return isContextPending ?? isLocalPending\n }\n\n const isPending = useMemo(isPendingHandler, [\n isContextPending,\n isLocalPending,\n ignoreTransitionContext,\n ])\n\n function startTransitionHandler() {\n if (ignoreTransitionContext) {\n return startLocalTransition\n }\n\n return startContextTransition ?? startLocalTransition\n }\n\n const startTransition = useMemo(startTransitionHandler, [\n startContextTransition,\n startLocalTransition,\n ignoreTransitionContext,\n ])\n\n function clearOnForgetHandler() {\n return oClearOnForget ?? cClearOnForget ?? false\n }\n\n const clearOnForget = useMemo(clearOnForgetHandler, [oClearOnForget, cClearOnForget])\n\n function promiseHandler() {\n return query<T>(key, {\n expiration: oExpiration,\n fetcher: oFetcher,\n stale: oStale,\n removeOnError: oRemoveOnError,\n fresh: oFresh,\n })\n }\n\n const promise = useMemo(promiseHandler, [\n query,\n key,\n oExpiration,\n oFetcher,\n oStale,\n oRemoveOnError,\n oFresh,\n ])\n\n const [data, setData] = useState(() => use(promise))\n\n function subscribeHandler() {\n function onResolved(event: CustomEventInit<T>) {\n startTransition(function () {\n setData(event.detail as T)\n })\n }\n\n function onMutating(event: CustomEventInit<Promise<T>>) {\n startTransition(async function () {\n const value = await (event.detail as Promise<T>)\n\n startTransition(function () {\n setData(value)\n })\n })\n }\n\n function onMutated(event: CustomEventInit<T>) {\n startTransition(function () {\n setData(event.detail as T)\n })\n }\n\n function onHydrated(event: CustomEventInit<T>) {\n startTransition(function () {\n setData(event.detail as T)\n })\n }\n\n function onRefetching(event: CustomEventInit<Promise<T>>) {\n startTransition(async function () {\n const value = await (event.detail as Promise<T>)\n\n startTransition(function () {\n setData(value)\n })\n })\n }\n\n function onForgotten() {\n if (clearOnForget) {\n startTransition(async function () {\n const data = await query<T>(key, {\n expiration: oExpiration,\n fetcher: oFetcher,\n stale: oStale,\n removeOnError: oRemoveOnError,\n fresh: oFresh,\n })\n\n startTransition(function () {\n setData(data)\n })\n })\n }\n }\n\n const unsubscribeResolved = subscribe(key, 'resolved', onResolved)\n const unsubscribeMutating = subscribe(key, 'mutating', onMutating)\n const unsubscribeMutated = subscribe(key, 'mutated', onMutated)\n const unsubscribeHydrated = subscribe(key, 'hydrated', onHydrated)\n const unsubscribeRefetching = subscribe(key, 'refetching', onRefetching)\n const unsubscribeForgotten = subscribe(key, 'forgotten', onForgotten)\n\n return function () {\n unsubscribeResolved()\n unsubscribeMutating()\n unsubscribeMutated()\n unsubscribeHydrated()\n unsubscribeRefetching()\n unsubscribeForgotten()\n }\n }\n\n useEffect(subscribeHandler, [\n query,\n expiration,\n subscribe,\n key,\n clearOnForget,\n oExpiration,\n oFetcher,\n oStale,\n oRemoveOnError,\n oFresh,\n startTransition,\n ])\n\n function resourceHandler(): BasicResource<T> {\n return { data, isPending }\n }\n\n return useMemo(resourceHandler, [data, isPending])\n}\n","import { useMemo, useDebugValue } from 'react'\nimport { type ContextValue } from 'query/react:context'\nimport { type Options } from 'query:index'\nimport { type QueryInstance } from './useQueryInstance'\nimport { useQueryActions, type QueryActions } from './useQueryActions'\nimport { useQueryStatus, type Status } from './useQueryStatus'\nimport { useQueryBasic, type BasicResource } from './useQueryBasic'\n\ntype AdditionalHooks<T> = QueryActions<T> & BasicResource<T> & Status\n\nexport interface Resource<T = unknown> extends AdditionalHooks<T> {\n data: T\n isPending: boolean\n}\n\nexport type ResourceOptions<T = unknown> = ContextValue & Options<T> & QueryInstance\n\nexport function useQuery<T = unknown>(key: string, options?: ResourceOptions<T>): Resource<T> {\n useDebugValue('useQuery')\n\n const basic = useQueryBasic(key, options)\n const actions = useQueryActions<T>(key, options)\n const status = useQueryStatus(key, options)\n\n function resourceHandler(): Resource<T> {\n return { ...basic, ...actions, ...status }\n }\n\n return useMemo(resourceHandler, [basic, actions, status])\n}\n","import { useEffect, useMemo, type ReactNode } from 'react'\nimport { Context, type ContextValue } from 'query/react:context'\nimport { createQuery, type Query } from 'query:index'\n\nexport interface QueryProviderProps extends ContextValue {\n children?: ReactNode\n}\n\nexport function QueryProvider({\n children,\n clearOnForget,\n ignoreTransitionContext,\n query,\n}: QueryProviderProps) {\n function queryInstance() {\n return query ?? createQuery()\n }\n\n const localQuery = useMemo<Query>(queryInstance, [query])\n\n function broadcastCleanup() {\n if (localQuery.broadcast()) {\n const unsubscribe = localQuery.subscribeBroadcast()\n\n return function () {\n unsubscribe()\n }\n }\n\n const channel = new BroadcastChannel('query')\n\n localQuery.configure({ broadcast: channel })\n const unsubscribe = localQuery.subscribeBroadcast()\n\n return function () {\n unsubscribe()\n channel.close()\n }\n }\n\n useEffect(broadcastCleanup, [localQuery])\n\n function valueHandler(): ContextValue {\n return { query, clearOnForget, ignoreTransitionContext }\n }\n\n const value = useMemo(valueHandler, [query, clearOnForget, ignoreTransitionContext])\n\n return <Context value={value}>{children}</Context>\n}\n","import { TransitionContext, type QueryTransitionContextValue } from 'query/react:transition'\nimport { useMemo, type ReactNode, type TransitionStartFunction } from 'react'\n\nexport interface QueryTransitionProps {\n isPending: boolean\n startTransition: TransitionStartFunction\n children?: ReactNode\n}\n\nexport function QueryTransition({ children, startTransition, isPending }: QueryTransitionProps) {\n function valueHandler(): QueryTransitionContextValue {\n return { startTransition, isPending }\n }\n\n const value = useMemo(valueHandler, [startTransition, isPending])\n\n return <TransitionContext value={value}>{children}</TransitionContext>\n}\n"],"names":["Context","createContext","useQueryContext","useDebugValue","use","useQueryInstance","options","cQuery","oQuery","query","instance","useMemo","useQueryActions","key","oExpiration","oFetcher","oStale","oRemoveOnError","oFresh","mutate","forget","refetchHandler","refetchOptions","refetch","useCallback","mutateHandler","value","localMutate","forgetHandler","localForget","actionsHandler","useQueryStatus","expiration","subscribe","expiresAt","setExpiresAt","useState","isExpired","setIsExpired","isRefetching","setIsRefetching","isMutating","setIsMutating","expirationHandler","handler","id","useEffect","subscribeHandler","onMutating","onMutated","onHydrated","onResolved","onForgotten","onRefetching","onError","unsubscribeMutating","unsubscribeMutated","unsubscribeHydrated","unsubscribeResolved","unsubscribeForgotten","unsubscribeRefetching","unsubscribeError","statusHandler","TransitionContext","useQueryTransitionContext","useQueryBasic","cClearOnForget","cIgnoreTransitionContext","oClearOnForget","oIgnoreTransitionContext","isContextPending","startContextTransition","isLocalPending","startLocalTransition","useTransition","ignoreTransitionContextHandler","ignoreTransitionContext","isPendingHandler","isPending","startTransitionHandler","startTransition","clearOnForgetHandler","clearOnForget","promiseHandler","promise","data","setData","event","resourceHandler","useQuery","basic","actions","status","QueryProvider","children","queryInstance","createQuery","localQuery","broadcastCleanup","unsubscribe","channel","valueHandler","jsx","QueryTransition"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Determines the shape of the Cache instance.
3
+ */
4
+ export interface Cache<T = unknown> {
5
+ /**
6
+ * Gets an item from the cache.
7
+ */
8
+ readonly get: (key: string) => T | undefined;
9
+ /**
10
+ * Sets an item to the cache.
11
+ */
12
+ readonly set: (key: string, value: T) => void;
13
+ /**
14
+ * Removes a key-value pair from the cache.
15
+ */
16
+ readonly delete: (key: string) => void;
17
+ /**
18
+ * Returns the current cached keys.
19
+ */
20
+ readonly keys: () => IterableIterator<string>;
21
+ }
22
+ /**
23
+ * Determines how we store items in the items cache.
24
+ */
25
+ export interface ItemsCacheItem<T = unknown> {
26
+ /**
27
+ * Stores the cache item.
28
+ */
29
+ readonly item: Promise<T>;
30
+ /**
31
+ * Determines the expiration date of the item.
32
+ */
33
+ readonly expiresAt: Date;
34
+ }
35
+ /**
36
+ * Determines how we store items in the resolvers cache.
37
+ */
38
+ export interface ResolversCacheItem<T = unknown> {
39
+ /**
40
+ * The resolvable item.
41
+ */
42
+ readonly item: Promise<T>;
43
+ /**
44
+ * The abort controller for the request.
45
+ */
46
+ readonly controller: AbortController;
47
+ }
48
+ /**
49
+ * Determines the cache type.
50
+ */
51
+ export type CacheType = 'resolvers' | 'items';
52
+ /**
53
+ * The caches available on the query.
54
+ */
55
+ export interface Caches {
56
+ /**
57
+ * A cache that contains the resolved items alongside
58
+ * their expiration time.
59
+ */
60
+ readonly items: Cache<ItemsCacheItem>;
61
+ /**
62
+ * A cache that contains the resolvers alongside
63
+ * their abort controllers.
64
+ */
65
+ readonly resolvers: Cache<ResolversCacheItem>;
66
+ }
@@ -1,299 +1,3 @@
1
- /**
2
- * Determines the shape of the Cache instance.
3
- */
4
- export interface Cache<T = unknown> {
5
- /**
6
- * Gets an item from the cache.
7
- */
8
- readonly get: (key: string) => T | undefined;
9
- /**
10
- * Sets an item to the cache.
11
- */
12
- readonly set: (key: string, value: T) => void;
13
- /**
14
- * Removes a key-value pair from the cache.
15
- */
16
- readonly delete: (key: string) => void;
17
- /**
18
- * Returns the current cached keys.
19
- */
20
- readonly keys: () => IterableIterator<string>;
21
- }
22
- /**
23
- * Determines how we store items in the items cache.
24
- */
25
- interface ItemsCacheItem<T = unknown> {
26
- /**
27
- * Stores the cache item.
28
- */
29
- readonly item: T;
30
- /**
31
- * Determines the expiration date of the item.
32
- */
33
- readonly expiresAt: Date;
34
- }
35
- /**
36
- * Determines how we store items in the resolvers cache.
37
- */
38
- interface ResolversCacheItem<T> {
39
- /**
40
- * The resolvable item.
41
- */
42
- readonly item: Promise<T>;
43
- /**
44
- * The abort controller for the request.
45
- */
46
- readonly controller: AbortController;
47
- }
48
- /**
49
- * Represents the available configuration options
50
- * for a query instance.
51
- */
52
- export interface Configuration extends Options {
53
- /**
54
- * Determines the resolved items cache to use.
55
- */
56
- readonly itemsCache?: Cache<ItemsCacheItem>;
57
- /**
58
- * Determines the resolvers cache to use.
59
- */
60
- readonly resolversCache?: Cache<ResolversCacheItem<unknown>>;
61
- /**
62
- * Stores the event system.
63
- */
64
- readonly events?: EventTarget;
65
- /**
66
- * Broadcast channel. This is useful for communicating
67
- * between tabs and windows (browser contexts).
68
- *
69
- * By default it does not use any broadcast channel.
70
- * If a broadcast channel is provided, query
71
- * won't close automatically, therefore, the responsability
72
- * of closing the broadcast channel is up to the user.
73
- */
74
- readonly broadcast?: BroadcastChannel;
75
- }
76
- export interface FetcherAdditional {
77
- /**
78
- * An abort signal to cancel pending queries.
79
- */
80
- readonly signal: AbortSignal;
81
- }
82
- /**
83
- * The available options for query.
84
- */
85
- export interface Options<T = unknown> {
86
- /**
87
- * Determines the item deduplication interval.
88
- * This determines how many milliseconds an item
89
- * is considered valid.
90
- */
91
- readonly expiration?: ExpirationFunction<T>;
92
- /**
93
- * Determines the fetcher function to use.
94
- */
95
- readonly fetcher?: FetcherFunction<T>;
96
- /**
97
- * Determines if we can return a stale item.
98
- * If `true`, it will return the previous stale item
99
- * stored in the cache if it has expired. It will attempt
100
- * to revalidate it in the background. If `false`, the returned
101
- * promise will be the revalidation promise.
102
- */
103
- readonly stale?: boolean;
104
- /**
105
- * Removes the stored item if there is an error in the request.
106
- * By default, we don't remove the item upon failure, only the resolver
107
- * is removed from the cache.
108
- */
109
- readonly removeOnError?: boolean;
110
- /**
111
- * Determines if the result should be a fresh fetched
112
- * instance regardless of any cached value or its expiration time.
113
- */
114
- readonly fresh?: boolean;
115
- }
116
- /**
117
- * Determines the cache type.
118
- */
119
- export type CacheType = 'resolvers' | 'items';
120
- /**
121
- * The mutation function type.
122
- */
123
- export interface MutationFunction<T> {
124
- (previous?: T, expiresAt?: Date): T | Promise<T>;
125
- }
126
- /**
127
- * The available mutation values.
128
- */
129
- export type MutationValue<T> = T | MutationFunction<T>;
130
- /**
131
- * The function type for the event subscription.
132
- */
133
- export interface SubscribeFunction {
134
- (key: string, event: QueryEvent, listener: EventListener): Unsubscriber;
135
- }
136
- /**
137
- * The broadcast payload.
138
- */
139
- export interface BroadcastPayload {
140
- /**
141
- * The event name.
142
- */
143
- readonly event: string;
144
- /**
145
- * The event detail.
146
- */
147
- readonly detail: unknown;
148
- }
149
- /**
150
- * The function type for the broadcast subscription.
151
- */
152
- export interface SubscribeBroadcastFunction {
153
- (): Unsubscriber;
154
- }
155
- /**
156
- * The query function type.
157
- */
158
- export interface QueryFunction {
159
- <T = unknown>(key: string, options?: Options<T>): Promise<T>;
160
- }
161
- export interface ExpirationFunction<T = unknown> {
162
- (item: T): number;
163
- }
164
- export interface FetcherFunction<T = unknown> {
165
- (key: string, additional: FetcherAdditional): Promise<T>;
166
- }
167
- /**
168
- * The mutate function options.
169
- */
170
- export interface HydrateOptions<T = unknown> {
171
- expiration?: ExpirationFunction<T>;
172
- }
173
- /**
174
- * The mutate function options.
175
- */
176
- export interface MutateOptions<T = unknown> {
177
- expiration?: ExpirationFunction<T>;
178
- }
179
- /**
180
- * The mutate function type.
181
- */
182
- export interface MutateFunction {
183
- <T = unknown>(key: string, item: MutationValue<T>, options?: MutateOptions<T>): Promise<T>;
184
- }
185
- /**
186
- * The hydrate function type.
187
- */
188
- export interface HydrateFunction {
189
- <T = unknown>(keys: string | string[], item: T, options?: HydrateOptions<T>): void;
190
- }
191
- /**
192
- * The unsubscriber function.
193
- */
194
- export type Unsubscriber = () => void;
195
- /**
196
- * The caches available on the query.
197
- */
198
- export interface Caches {
199
- /**
200
- * A cache that contains the resolved items alongside
201
- * their expiration time.
202
- */
203
- readonly items: Cache<ItemsCacheItem>;
204
- /**
205
- * A cache that contains the resolvers alongside
206
- * their abort controllers.
207
- */
208
- readonly resolvers: Cache<ResolversCacheItem<unknown>>;
209
- }
210
- /**
211
- * Represents the methods a query
212
- * should implement.
213
- */
214
- export interface Query {
215
- /**
216
- * Configures the current instance of query.
217
- */
218
- readonly configure: (options?: Partial<Configuration>) => void;
219
- /**
220
- * Fetches the key information using a fetcher.
221
- * The returned promise contains the result item.
222
- */
223
- readonly query: QueryFunction;
224
- /**
225
- * Subscribes to a given event & key. The event handler
226
- * does have a payload parameter that will contain relevant
227
- * information depending on the event type.
228
- */
229
- readonly subscribe: SubscribeFunction;
230
- /**
231
- * Subscribes to the broadcast channel
232
- * to listen for other browser context
233
- * events and reproduce them in the current
234
- * context.
235
- */
236
- readonly subscribeBroadcast: SubscribeBroadcastFunction;
237
- /**
238
- * Mutates the key with a given optimistic value.
239
- * The mutated value is considered expired and will be
240
- * replaced immediatly if a refetch happens.
241
- */
242
- readonly mutate: MutateFunction;
243
- /**
244
- * Aborts the active resolvers on each key
245
- * by calling `.abort()` on the `AbortController`.
246
- * The fetcher is responsible for using the
247
- * `AbortSignal` to cancel the job.
248
- */
249
- readonly abort: (key?: string | string[], reason?: unknown) => void;
250
- /**
251
- * Forgets the given keys from the cache.
252
- * Removes items from both, the cache and resolvers.
253
- */
254
- readonly forget: (keys?: string | string[] | RegExp) => void;
255
- /**
256
- * Hydrates the given keys on the cache
257
- * with the given value and expiration time.
258
- */
259
- readonly hydrate: HydrateFunction;
260
- /**
261
- * Returns the given keys for the given cache.
262
- */
263
- readonly keys: (cache?: CacheType) => string[];
264
- /**
265
- * Returns the expiration date of a given key item.
266
- * If the item is not in the cache, it will return `undefined`.
267
- */
268
- readonly expiration: (key: string) => Date | undefined;
269
- /**
270
- * Returns the current snapshot of the given key.
271
- * If the item is not in the items cache, it will return `undefined`.
272
- */
273
- readonly snapshot: <T = unknown>(key: string) => T | undefined;
274
- /**
275
- * Returns the current cache instances in use.
276
- */
277
- readonly caches: () => Caches;
278
- /**
279
- * Returns the event system in use.
280
- */
281
- readonly events: () => EventTarget;
282
- /**
283
- * Returns the broadcast channel in use.
284
- */
285
- readonly broadcast: () => BroadcastChannel | undefined;
286
- }
287
- /**
288
- * Available events on query.
289
- */
290
- export type QueryEvent = 'refetching' | 'resolved' | 'mutating' | 'mutated' | 'aborted' | 'forgotten' | 'hydrated' | 'error';
291
- /**
292
- * Stores the default fetcher function.
293
- */
294
- export declare function defaultFetcher<T>(fetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>): FetcherFunction<T>;
295
- /**
296
- * Creates a new query instance.
297
- */
298
- export declare function createQuery(instanceOptions?: Configuration): Query;
299
- export {};
1
+ export * from './query';
2
+ export * from './cache';
3
+ export * from './options';