f975e3f7ff
`globalThis` is available since node12 which becomes a preferrence rather than `global`. Besides, in the client components like `next/image` or async hooks we should prefer to use `globalThis` since `global` isn't available in browser
20 lines
543 B
TypeScript
20 lines
543 B
TypeScript
import type { AsyncLocalStorage } from 'async_hooks'
|
|
import type {
|
|
ReadonlyHeaders,
|
|
ReadonlyRequestCookies,
|
|
} from '../../server/app-render'
|
|
|
|
export interface RequestStore {
|
|
headers: ReadonlyHeaders
|
|
cookies: ReadonlyRequestCookies
|
|
previewData: any
|
|
}
|
|
|
|
export let requestAsyncStorage: AsyncLocalStorage<RequestStore> | RequestStore =
|
|
{} as any
|
|
|
|
// @ts-expect-error we provide this on globalThis in
|
|
// the edge and node runtime
|
|
if (globalThis.AsyncLocalStorage) {
|
|
requestAsyncStorage = new (globalThis as any).AsyncLocalStorage()
|
|
}
|