diff --git a/package.json b/package.json index dc9dc1e..52da2fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "muya", - "version": "2.0.3", + "version": "2.0.4", "author": "samuel.gjabel@gmail.com", "repository": "https://github.com/samuelgjabel/muya", "main": "cjs/index.js", diff --git a/packages/core/types.ts b/packages/core/types.ts index 1bb4bf9..2ce6143 100644 --- a/packages/core/types.ts +++ b/packages/core/types.ts @@ -14,7 +14,7 @@ export interface Cache { export const EMPTY_SELECTOR = (stateValue: T) => stateValue as unknown as S export interface GetState { - (selector?: (stateValue: T) => S): undefined extends S ? T : S + (selector?: (stateValue: T) => S): Awaited /** * Get the cached state value. */ diff --git a/packages/core/use-value.ts b/packages/core/use-value.ts index 54dc9a9..df12f7d 100644 --- a/packages/core/use-value.ts +++ b/packages/core/use-value.ts @@ -2,7 +2,10 @@ import { useDebugValue, useSyncExternalStore } from 'react' import { EMPTY_SELECTOR, type GetState } from './types' import { isError, isPromise } from './utils/is' -export function useValue(state: GetState, selector: (stateValue: T) => S = EMPTY_SELECTOR): undefined extends S ? T : S { +export function useValue( + state: GetState, + selector: (stateValue: T) => S = EMPTY_SELECTOR, +): Awaited { const { emitter } = state const value = useSyncExternalStore( state.emitter.subscribe, @@ -18,5 +21,5 @@ export function useValue(state: GetState, selector: (stateValue: T) => throw value } - return value as undefined extends S ? T : S + return value as Awaited }