58 lines
3.2 KiB
JavaScript
58 lines
3.2 KiB
JavaScript
import { RequestCookiesAdapter } from "../../server/web/spec-extension/adapters/request-cookies";
|
|
import { HeadersAdapter } from "../../server/web/spec-extension/adapters/headers";
|
|
import { RequestCookies } from "../../server/web/spec-extension/cookies";
|
|
import { actionAsyncStorage } from "./action-async-storage.external";
|
|
import { DraftMode } from "./draft-mode";
|
|
import { trackDynamicDataAccessed } from "../../server/app-render/dynamic-rendering";
|
|
import { staticGenerationAsyncStorage } from "./static-generation-async-storage.external";
|
|
import { getExpectedRequestStore } from "./request-async-storage.external";
|
|
/**
|
|
* This function allows you to read the HTTP incoming request headers in
|
|
* [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),
|
|
* [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations),
|
|
* [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers) and
|
|
* [Middleware](https://nextjs.org/docs/app/building-your-application/routing/middleware).
|
|
*
|
|
* Read more: [Next.js Docs: `headers`](https://nextjs.org/docs/app/api-reference/functions/headers)
|
|
*/ export function headers() {
|
|
const callingExpression = "headers";
|
|
const staticGenerationStore = staticGenerationAsyncStorage.getStore();
|
|
if (staticGenerationStore) {
|
|
if (staticGenerationStore.forceStatic) {
|
|
// When we are forcing static we don't mark this as a Dynamic read and we return an empty headers object
|
|
return HeadersAdapter.seal(new Headers({}));
|
|
} else {
|
|
// We will return a real headers object below so we mark this call as reading from a dynamic data source
|
|
trackDynamicDataAccessed(staticGenerationStore, callingExpression);
|
|
}
|
|
}
|
|
return getExpectedRequestStore(callingExpression).headers;
|
|
}
|
|
export function cookies() {
|
|
const callingExpression = "cookies";
|
|
const staticGenerationStore = staticGenerationAsyncStorage.getStore();
|
|
if (staticGenerationStore) {
|
|
if (staticGenerationStore.forceStatic) {
|
|
// When we are forcing static we don't mark this as a Dynamic read and we return an empty cookies object
|
|
return RequestCookiesAdapter.seal(new RequestCookies(new Headers({})));
|
|
} else {
|
|
// We will return a real headers object below so we mark this call as reading from a dynamic data source
|
|
trackDynamicDataAccessed(staticGenerationStore, callingExpression);
|
|
}
|
|
}
|
|
const requestStore = getExpectedRequestStore(callingExpression);
|
|
const asyncActionStore = actionAsyncStorage.getStore();
|
|
if ((asyncActionStore == null ? void 0 : asyncActionStore.isAction) || (asyncActionStore == null ? void 0 : asyncActionStore.isAppRoute)) {
|
|
// We can't conditionally return different types here based on the context.
|
|
// To avoid confusion, we always return the readonly type here.
|
|
return requestStore.mutableCookies;
|
|
}
|
|
return requestStore.cookies;
|
|
}
|
|
export function draftMode() {
|
|
const callingExpression = "draftMode";
|
|
const requestStore = getExpectedRequestStore(callingExpression);
|
|
return new DraftMode(requestStore.draftMode);
|
|
}
|
|
|
|
//# sourceMappingURL=headers.js.map
|