Skip to content

Commit

Permalink
fix: add return type to useCachedAsyncData (#72)
Browse files Browse the repository at this point in the history
  • Loading branch information
dulnan authored Aug 25, 2024
1 parent bf54b93 commit 6af7c4a
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions src/runtime/composables/useCachedAsyncData.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import type { NuxtApp, AsyncDataOptions } from 'nuxt/app'
import type { DefaultAsyncDataValue } from '#app/defaults'
import type { NuxtApp, AsyncDataOptions, AsyncData, NuxtError } from 'nuxt/app'
import type {
DefaultAsyncDataErrorValue,
DefaultAsyncDataValue,
} from '#app/defaults'
import type { PickFrom } from '#app/composables/asyncData'
import { useAsyncData, useDataCache, useNuxtApp } from '#imports'

type KeysOf<T> = Array<
Expand Down Expand Up @@ -100,14 +104,21 @@ function isValidMaxAge(v?: unknown): v is number {
*/
export function useCachedAsyncData<
ResT,
NuxtErrorDataT = unknown,
DataT = ResT,
PickKeys extends KeysOf<DataT> = KeysOf<DataT>,
DefaultT = null,
>(
key: string,
handler: (app?: NuxtApp) => Promise<ResT>,
providedOptions?: CachedAsyncDataOptions<ResT, DataT, PickKeys, DefaultT>,
) {
): AsyncData<
PickFrom<DataT, PickKeys> | DefaultT,
| (NuxtErrorDataT extends Error | NuxtError
? NuxtErrorDataT
: NuxtError<NuxtErrorDataT>)
| DefaultAsyncDataErrorValue
> {
const options: CachedAsyncDataOptions<ResT, DataT, PickKeys, DefaultT> =
providedOptions && typeof providedOptions === 'object'
? providedOptions
Expand All @@ -123,7 +134,7 @@ export function useCachedAsyncData<
app.static.data.__firstHydrationTime = Date.now()
}

return useAsyncData<ResT, unknown, DataT, PickKeys, DefaultT>(
return useAsyncData<ResT, NuxtErrorDataT, DataT, PickKeys, DefaultT>(
key,
async () => {
const result = await handler(app)
Expand Down Expand Up @@ -203,7 +214,7 @@ export function useCachedAsyncData<
}

// Code for server-side caching.
return useAsyncData<ResT, unknown, DataT, PickKeys, DefaultT>(
return useAsyncData<ResT, NuxtErrorDataT, DataT, PickKeys, DefaultT>(
key,
async (app) => {
const { value, addToCache } = await useDataCache<DataT>(
Expand Down

0 comments on commit 6af7c4a

Please sign in to comment.