rsnext/packages/next/client/components/request-async-storage.ts
Jiachi Liu f975e3f7ff
Replace global with globalThis (#42627)
`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
2022-11-08 14:45:30 +01:00

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()
}