| Server IP : 159.203.156.69 / Your IP : 216.73.217.172 Web Server : nginx/1.24.0 System : Linux main-ubuntu 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/tanviranik.com/node_modules/vinext/dist/server/ |
Upload File : |
import { VINEXT_CACHE_HEADER } from "./headers.js";
import { processMiddlewareHeaders } from "./request-pipeline.js";
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
import { NEVER_CACHE_CONTROL, STATIC_CACHE_CONTROL, buildCachedRevalidateCacheControl } from "./cache-control.js";
//#region src/server/app-route-handler-response.ts
const APP_ROUTE_REWRITE_ERROR = "NextResponse.rewrite() was used in a app route handler, this is not currently supported. Please remove the invocation to continue.";
const APP_ROUTE_NEXT_ERROR = "NextResponse.next() was used in a app route handler, this is not supported. See here for more info: https://nextjs.org/docs/messages/next-response-next-in-app-route-handler";
function hasMiddlewareHeader(headers) {
for (const key of headers.keys()) if (key.startsWith("x-middleware-")) return true;
return false;
}
function buildRouteHandlerCacheControl(cacheState, revalidateSeconds, expireSeconds) {
if (revalidateSeconds === 0) return NEVER_CACHE_CONTROL;
if (revalidateSeconds === Infinity) return STATIC_CACHE_CONTROL;
return buildCachedRevalidateCacheControl(cacheState, revalidateSeconds, expireSeconds);
}
function applyRouteHandlerMiddlewareContext(response, middlewareContext) {
if (!middlewareContext.headers && middlewareContext.status == null) return response;
const responseHeaders = new Headers(response.headers);
mergeMiddlewareResponseHeaders(responseHeaders, middlewareContext.headers);
return new Response(response.body, {
status: middlewareContext.status ?? response.status,
statusText: response.statusText,
headers: responseHeaders
});
}
function assertSupportedAppRouteHandlerResponse(response) {
if (response.headers.has("x-middleware-rewrite")) throw new Error(APP_ROUTE_REWRITE_ERROR);
if (response.headers.get("x-middleware-next") === "1") throw new Error(APP_ROUTE_NEXT_ERROR);
}
function buildRouteHandlerCachedResponse(cachedValue, options) {
const headers = new Headers();
for (const [key, value] of Object.entries(cachedValue.headers)) if (Array.isArray(value)) for (const entry of value) headers.append(key, entry);
else headers.set(key, value);
headers.set(VINEXT_CACHE_HEADER, options.cacheState);
const revalidateSeconds = options.cacheControl?.revalidate ?? options.revalidateSeconds;
const expireSeconds = options.cacheControl === void 0 ? void 0 : options.cacheControl.expire ?? options.expireSeconds;
headers.set("Cache-Control", buildRouteHandlerCacheControl(options.cacheState, revalidateSeconds, expireSeconds));
return new Response(options.isHead ? null : cachedValue.body, {
status: cachedValue.status,
headers
});
}
function applyRouteHandlerRevalidateHeader(response, revalidateSeconds, expireSeconds) {
response.headers.set("cache-control", buildRouteHandlerCacheControl("HIT", revalidateSeconds, expireSeconds));
}
function markRouteHandlerCacheMiss(response) {
response.headers.set(VINEXT_CACHE_HEADER, "MISS");
}
function getSetCookieName(cookie) {
const equalsIndex = cookie.indexOf("=");
if (equalsIndex <= 0) return null;
return cookie.slice(0, equalsIndex);
}
function applyMutableCookieFallbacks(headers, pendingCookies) {
if (pendingCookies.length === 0) return;
const returnedCookies = headers.getSetCookie();
const returnedCookieNames = /* @__PURE__ */ new Set();
for (const cookie of returnedCookies) {
const name = getSetCookieName(cookie);
if (name) returnedCookieNames.add(name);
}
const fallbackCookies = /* @__PURE__ */ new Map();
const unkeyedFallbackCookies = [];
for (const cookie of pendingCookies) {
const name = getSetCookieName(cookie);
if (!name) {
unkeyedFallbackCookies.push(cookie);
continue;
}
if (!returnedCookieNames.has(name)) fallbackCookies.set(name, cookie);
}
headers.delete("Set-Cookie");
for (const cookie of unkeyedFallbackCookies) headers.append("Set-Cookie", cookie);
for (const cookie of fallbackCookies.values()) headers.append("Set-Cookie", cookie);
for (const cookie of returnedCookies) headers.append("Set-Cookie", cookie);
}
async function buildAppRouteCacheValue(response) {
const body = await response.arrayBuffer();
const headers = {};
response.headers.forEach((value, key) => {
if (key === "set-cookie" || key === "X-Vinext-Cache".toLowerCase() || key === "cache-control" || key.startsWith("x-middleware-")) return;
headers[key] = value;
});
const setCookies = response.headers.getSetCookie?.() ?? [];
if (setCookies.length > 0) headers["set-cookie"] = setCookies;
return {
kind: "APP_ROUTE",
body,
status: response.status,
headers
};
}
function finalizeRouteHandlerResponse(response, options) {
const { pendingCookies, draftCookie, isHead } = options;
if (pendingCookies.length === 0 && !draftCookie && !isHead && !hasMiddlewareHeader(response.headers)) return response;
const headers = new Headers(response.headers);
processMiddlewareHeaders(headers);
applyMutableCookieFallbacks(headers, pendingCookies);
if (draftCookie) headers.append("Set-Cookie", draftCookie);
return new Response(isHead ? null : response.body, {
status: response.status,
statusText: response.statusText,
headers
});
}
//#endregion
export { applyRouteHandlerMiddlewareContext, applyRouteHandlerRevalidateHeader, assertSupportedAppRouteHandlerResponse, buildAppRouteCacheValue, buildRouteHandlerCachedResponse, finalizeRouteHandlerResponse, markRouteHandlerCacheMiss };
//# sourceMappingURL=app-route-handler-response.js.map