@studiolambda/query 1.1.1 → 1.3.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/dist/query.cjs +1 -1
- package/dist/query.cjs.map +1 -1
- package/dist/query.js +129 -124
- package/dist/query.js.map +1 -1
- package/dist/query_react.cjs +1 -1
- package/dist/query_react.cjs.map +1 -1
- package/dist/query_react.js +225 -192
- package/dist/query_react.js.map +1 -1
- package/dist/src/query/options.d.ts +44 -10
- package/dist/src/react/_internal.d.ts +1 -0
- package/dist/src/react/components/QueryPrefetch.d.ts +7 -0
- package/dist/src/react/components/QueryPrefetchTags.d.ts +9 -0
- package/dist/src/react/hooks/useQueryPrefetch.d.ts +2 -0
- package/dist/src/react/index.d.ts +3 -0
- package/package.json +43 -26
package/dist/query_react.js.map
CHANGED
|
@@ -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/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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"}
|
|
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/_internal.ts","../src/react/hooks/useQueryPrefetch.ts","../src/react/components/QueryProvider.tsx","../src/react/components/QueryTransition.tsx","../src/react/components/QueryPrefetch.tsx","../src/react/components/QueryPrefetchTags.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<T>(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<T>(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 { useMemo, useRef } from 'react'\n\nfunction keysEqual<T>(arr1: T[], arr2: T[]): boolean {\n if (arr1.length !== arr2.length) {\n return false\n }\n\n return arr1.every((value, index) => value === arr2[index])\n}\n\nexport function useStableKeys(keys: string[]) {\n const prevKeysRef = useRef<string[]>([])\n\n function stableKeysHandler() {\n if (!keysEqual(prevKeysRef.current, keys)) {\n prevKeysRef.current = keys\n }\n\n return prevKeysRef.current\n }\n\n return useMemo(stableKeysHandler, [keys])\n}\n","import { useDebugValue, useMemo } from 'react'\nimport { QueryInstance, useQueryInstance } from './useQueryInstance'\nimport { useStableKeys } from 'query/react:_internal'\n\nexport function useQueryPrefetch(keys: string[], options?: QueryInstance) {\n useDebugValue('useQueryPrefetch')\n\n const stableKeys = useStableKeys(keys)\n const { query } = useQueryInstance(options)\n\n void useMemo(() => stableKeys.map((key) => query(key)), [query, stableKeys])\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","import type { QueryInstance } from 'query/react:hooks/useQueryInstance'\nimport { useQueryPrefetch } from 'query/react:hooks/useQueryPrefetch'\nimport { ReactNode } from 'react'\n\nexport interface QueryPrefetchProps extends QueryInstance {\n keys: string[]\n children?: ReactNode\n}\n\nexport function QueryPrefetch({ keys, query, children }: QueryPrefetchProps) {\n useQueryPrefetch(keys, { query })\n\n return children\n}\n","import { useStableKeys } from 'query/react:_internal'\nimport type { QueryInstance } from 'query/react:hooks/useQueryInstance'\nimport { useQueryPrefetch } from 'query/react:hooks/useQueryPrefetch'\nimport { ReactNode, useMemo, LinkHTMLAttributes } from 'react'\n\ntype Additional = LinkHTMLAttributes<HTMLLinkElement> & QueryInstance\n\nexport interface QueryPrefetchTagsProps extends Additional {\n keys: string[]\n children?: ReactNode\n}\n\nexport function QueryPrefetchTags({ keys, children, ...options }: QueryPrefetchTagsProps) {\n useQueryPrefetch(keys, options)\n\n const stableKeys = useStableKeys(keys)\n\n function tagsHandler() {\n return stableKeys.map((key) => <link rel=\"preload\" href={key} as=\"fetch\" {...options} />)\n }\n\n const tags = useMemo(tagsHandler, [stableKeys, options])\n\n return (\n <>\n {tags}\n {children}\n </>\n )\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","keysEqual","arr1","arr2","index","useStableKeys","keys","prevKeysRef","useRef","stableKeysHandler","useQueryPrefetch","stableKeys","QueryProvider","children","queryInstance","createQuery","localQuery","broadcastCleanup","unsubscribe","channel","valueHandler","jsx","QueryTransition","QueryPrefetch","QueryPrefetchTags","tagsHandler","tags","jsxs","Fragment"],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ export interface Options<T = unknown> {
|
|
|
42
42
|
* This determines how many milliseconds an item
|
|
43
43
|
* is considered valid.
|
|
44
44
|
*/
|
|
45
|
-
readonly expiration?:
|
|
45
|
+
readonly expiration?: ExpirationOptionFunction<T>;
|
|
46
46
|
/**
|
|
47
47
|
* Determines the fetcher function to use.
|
|
48
48
|
*/
|
|
@@ -102,7 +102,7 @@ export type SubscribeBroadcastFunction = {
|
|
|
102
102
|
export type QueryFunction = {
|
|
103
103
|
<T = unknown>(key: string, options?: Options<T>): Promise<T>;
|
|
104
104
|
};
|
|
105
|
-
export type
|
|
105
|
+
export type ExpirationOptionFunction<T = unknown> = {
|
|
106
106
|
(item: T): number;
|
|
107
107
|
};
|
|
108
108
|
export type FetcherFunction<T = unknown> = {
|
|
@@ -112,13 +112,13 @@ export type FetcherFunction<T = unknown> = {
|
|
|
112
112
|
* The mutate function options.
|
|
113
113
|
*/
|
|
114
114
|
export interface HydrateOptions<T = unknown> {
|
|
115
|
-
expiration?:
|
|
115
|
+
expiration?: ExpirationOptionFunction<T>;
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
118
118
|
* The mutate function options.
|
|
119
119
|
*/
|
|
120
120
|
export interface MutateOptions<T = unknown> {
|
|
121
|
-
expiration?:
|
|
121
|
+
expiration?: ExpirationOptionFunction<T>;
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* The mutate function type.
|
|
@@ -139,12 +139,37 @@ export type Unsubscriber = () => void;
|
|
|
139
139
|
export type OnceFunction = {
|
|
140
140
|
<T = unknown>(key: string, event: QueryEvent): Promise<CustomEventInit<T>>;
|
|
141
141
|
};
|
|
142
|
-
export type
|
|
142
|
+
export type SequenceFunction = {
|
|
143
143
|
<T = unknown>(key: string, event: QueryEvent): AsyncGenerator<CustomEventInit<T>>;
|
|
144
144
|
};
|
|
145
|
+
export type NextFunction = {
|
|
146
|
+
<T = unknown>(keys: string | {
|
|
147
|
+
[K in keyof T]: string;
|
|
148
|
+
}): Promise<T>;
|
|
149
|
+
};
|
|
150
|
+
export type StreamFunction = {
|
|
151
|
+
<T = unknown>(keys: string | {
|
|
152
|
+
[K in keyof T]: string;
|
|
153
|
+
}): AsyncGenerator<T>;
|
|
154
|
+
};
|
|
145
155
|
export type ConfigureFunction = {
|
|
146
156
|
(options?: Partial<Configuration>): void;
|
|
147
157
|
};
|
|
158
|
+
export type AbortFunction = {
|
|
159
|
+
(key?: string | string[], reason?: unknown): void;
|
|
160
|
+
};
|
|
161
|
+
export type SnapshotFunction = {
|
|
162
|
+
<T = unknown>(key: string): Promise<T | undefined>;
|
|
163
|
+
};
|
|
164
|
+
export type KeysFunction = {
|
|
165
|
+
(cache?: CacheType): string[];
|
|
166
|
+
};
|
|
167
|
+
export type ExpirationFunction = {
|
|
168
|
+
(key: string): Date | undefined;
|
|
169
|
+
};
|
|
170
|
+
export type ForgetFunction = {
|
|
171
|
+
(keys?: string | string[] | RegExp): Promise<void>;
|
|
172
|
+
};
|
|
148
173
|
/**
|
|
149
174
|
* Represents the methods a query
|
|
150
175
|
* should implement.
|
|
@@ -190,12 +215,12 @@ export interface Query {
|
|
|
190
215
|
* The fetcher is responsible for using the
|
|
191
216
|
* `AbortSignal` to cancel the job.
|
|
192
217
|
*/
|
|
193
|
-
readonly abort:
|
|
218
|
+
readonly abort: AbortFunction;
|
|
194
219
|
/**
|
|
195
220
|
* Forgets the given keys from the cache.
|
|
196
221
|
* Removes items from both, the cache and resolvers.
|
|
197
222
|
*/
|
|
198
|
-
readonly forget:
|
|
223
|
+
readonly forget: ForgetFunction;
|
|
199
224
|
/**
|
|
200
225
|
* Hydrates the given keys on the cache
|
|
201
226
|
* with the given value and expiration time.
|
|
@@ -204,17 +229,17 @@ export interface Query {
|
|
|
204
229
|
/**
|
|
205
230
|
* Returns the given keys for the given cache.
|
|
206
231
|
*/
|
|
207
|
-
readonly keys:
|
|
232
|
+
readonly keys: KeysFunction;
|
|
208
233
|
/**
|
|
209
234
|
* Returns the expiration date of a given key item.
|
|
210
235
|
* If the item is not in the cache, it will return `undefined`.
|
|
211
236
|
*/
|
|
212
|
-
readonly expiration:
|
|
237
|
+
readonly expiration: ExpirationFunction;
|
|
213
238
|
/**
|
|
214
239
|
* Returns the current snapshot of the given key.
|
|
215
240
|
* If the item is not in the items cache, it will return `undefined`.
|
|
216
241
|
*/
|
|
217
|
-
readonly snapshot:
|
|
242
|
+
readonly snapshot: SnapshotFunction;
|
|
218
243
|
/**
|
|
219
244
|
* Returns the first event on the given key that happens.
|
|
220
245
|
*
|
|
@@ -225,6 +250,15 @@ export interface Query {
|
|
|
225
250
|
/**
|
|
226
251
|
* A generator that is able to stream events as they come in.
|
|
227
252
|
*/
|
|
253
|
+
readonly sequence: SequenceFunction;
|
|
254
|
+
/**
|
|
255
|
+
* Returns the next queries performed by lambda query.
|
|
256
|
+
*/
|
|
257
|
+
readonly next: NextFunction;
|
|
258
|
+
/**
|
|
259
|
+
* Returns an async generator that returns the next queries
|
|
260
|
+
* as they come in.
|
|
261
|
+
*/
|
|
228
262
|
readonly stream: StreamFunction;
|
|
229
263
|
/**
|
|
230
264
|
* Returns the current cache instances in use.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useStableKeys(keys: string[]): string[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { QueryInstance } from '../hooks/useQueryInstance';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
export interface QueryPrefetchProps extends QueryInstance {
|
|
4
|
+
keys: string[];
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare function QueryPrefetch({ keys, query, children }: QueryPrefetchProps): ReactNode;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { QueryInstance } from '../hooks/useQueryInstance';
|
|
2
|
+
import { ReactNode, LinkHTMLAttributes } from 'react';
|
|
3
|
+
type Additional = LinkHTMLAttributes<HTMLLinkElement> & QueryInstance;
|
|
4
|
+
export interface QueryPrefetchTagsProps extends Additional {
|
|
5
|
+
keys: string[];
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function QueryPrefetchTags({ keys, children, ...options }: QueryPrefetchTagsProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -5,7 +5,10 @@ export * from './hooks/useQueryInstance';
|
|
|
5
5
|
export * from './hooks/useQueryContext';
|
|
6
6
|
export * from './hooks/useQueryTransitionContext';
|
|
7
7
|
export * from './hooks/useQueryActions';
|
|
8
|
+
export * from './hooks/useQueryPrefetch';
|
|
8
9
|
export * from './context';
|
|
9
10
|
export * from './transition';
|
|
10
11
|
export * from './components/QueryProvider';
|
|
11
12
|
export * from './components/QueryTransition';
|
|
13
|
+
export * from './components/QueryPrefetch';
|
|
14
|
+
export * from './components/QueryPrefetchTags';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studiolambda/query",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"stale-while-revalidate",
|
|
@@ -20,6 +20,11 @@
|
|
|
20
20
|
"email": "soc@erik.cat",
|
|
21
21
|
"url": "https://erik.cat"
|
|
22
22
|
},
|
|
23
|
+
"homepage": "https://erik.cat/blog/query-docs",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "https://github.com/StudioLambda/Query.git"
|
|
27
|
+
},
|
|
23
28
|
"engines": {
|
|
24
29
|
"node": ">=18.0.0"
|
|
25
30
|
},
|
|
@@ -46,16 +51,28 @@
|
|
|
46
51
|
],
|
|
47
52
|
"scripts": {
|
|
48
53
|
"build": "vite build",
|
|
54
|
+
"prebuild": "npm run lint",
|
|
55
|
+
"lint": "eslint .",
|
|
49
56
|
"dev": "vitest",
|
|
50
57
|
"test": "vitest run",
|
|
51
58
|
"test:ui": "vitest --ui --coverage",
|
|
52
59
|
"test:cover": "vitest run --coverage",
|
|
53
60
|
"prepack": "npm run build"
|
|
54
61
|
},
|
|
62
|
+
"devEngines": {
|
|
63
|
+
"packageManager": {
|
|
64
|
+
"name": "npm",
|
|
65
|
+
"version": ">=11.0.0"
|
|
66
|
+
},
|
|
67
|
+
"runtime": {
|
|
68
|
+
"name": "node",
|
|
69
|
+
"version": ">=24.0.0"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
55
72
|
"peerDependencies": {
|
|
56
|
-
"react": "^19.
|
|
57
|
-
"react-dom": "^19.
|
|
58
|
-
"solid-js": "^1.9.
|
|
73
|
+
"react": "^19.1.0",
|
|
74
|
+
"react-dom": "^19.1.0",
|
|
75
|
+
"solid-js": "^1.9.0"
|
|
59
76
|
},
|
|
60
77
|
"peerDependenciesMeta": {
|
|
61
78
|
"react": {
|
|
@@ -68,29 +85,29 @@
|
|
|
68
85
|
"optional": true
|
|
69
86
|
}
|
|
70
87
|
},
|
|
88
|
+
"sideEffects": false,
|
|
71
89
|
"devDependencies": {
|
|
72
|
-
"@types/node": "^
|
|
73
|
-
"@types/react": "19.
|
|
74
|
-
"@types/react-dom": "19.
|
|
75
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
76
|
-
"@typescript-eslint/parser": "^8.
|
|
77
|
-
"@vitejs/plugin-react": "^
|
|
78
|
-
"@vitest/coverage-v8": "^3.
|
|
79
|
-
"
|
|
80
|
-
"eslint": "^
|
|
81
|
-
"eslint-plugin-react-
|
|
82
|
-
"eslint-plugin-react-refresh": "^0.4.19",
|
|
90
|
+
"@types/node": "^24.3.1",
|
|
91
|
+
"@types/react": "19.1.12",
|
|
92
|
+
"@types/react-dom": "19.1.9",
|
|
93
|
+
"@typescript-eslint/eslint-plugin": "^8.43.0",
|
|
94
|
+
"@typescript-eslint/parser": "^8.43.0",
|
|
95
|
+
"@vitejs/plugin-react": "^5.0.2",
|
|
96
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
97
|
+
"eslint": "^9.35.0",
|
|
98
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
99
|
+
"eslint-plugin-react-refresh": "^0.4.20",
|
|
83
100
|
"eslint-plugin-solid": "^0.14.5",
|
|
84
|
-
"globals": "^
|
|
85
|
-
"happy-dom": "^
|
|
86
|
-
"react": "^19.
|
|
87
|
-
"react-dom": "^19.
|
|
88
|
-
"solid-js": "^1.9.
|
|
89
|
-
"typescript": "~5.
|
|
90
|
-
"typescript-eslint": "^8.
|
|
91
|
-
"vite": "^
|
|
92
|
-
"vite-plugin-dts": "^4.5.
|
|
93
|
-
"vite-plugin-solid": "^2.11.
|
|
94
|
-
"vitest": "^3.
|
|
101
|
+
"globals": "^16.3.0",
|
|
102
|
+
"happy-dom": "^18.0.1",
|
|
103
|
+
"react": "^19.1.1",
|
|
104
|
+
"react-dom": "^19.1.1",
|
|
105
|
+
"solid-js": "^1.9.9",
|
|
106
|
+
"typescript": "~5.9.2",
|
|
107
|
+
"typescript-eslint": "^8.43.0",
|
|
108
|
+
"vite": "^7.1.5",
|
|
109
|
+
"vite-plugin-dts": "^4.5.4",
|
|
110
|
+
"vite-plugin-solid": "^2.11.8",
|
|
111
|
+
"vitest": "^3.2.4"
|
|
95
112
|
}
|
|
96
113
|
}
|