"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { ReadonlyRequestCookiesError: null, RequestCookiesAdapter: null, getModifiedCookieValues: null, appendMutableCookies: null, MutableRequestCookiesAdapter: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { ReadonlyRequestCookiesError: function() { return ReadonlyRequestCookiesError; }, RequestCookiesAdapter: function() { return RequestCookiesAdapter; }, getModifiedCookieValues: function() { return getModifiedCookieValues; }, appendMutableCookies: function() { return appendMutableCookies; }, MutableRequestCookiesAdapter: function() { return MutableRequestCookiesAdapter; } }); const _cookies = require("../cookies"); const _reflect = require("./reflect"); class ReadonlyRequestCookiesError extends Error { constructor(){ super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options"); } static callable() { throw new ReadonlyRequestCookiesError(); } } class RequestCookiesAdapter { static seal(cookies) { return new Proxy(cookies, { get (target, prop, receiver) { switch(prop){ case "clear": case "delete": case "set": return ReadonlyRequestCookiesError.callable; default: return _reflect.ReflectAdapter.get(target, prop, receiver); } } }); } } const SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for("next.mutated.cookies"); function getModifiedCookieValues(cookies) { const modified = cookies[SYMBOL_MODIFY_COOKIE_VALUES]; if (!modified || !Array.isArray(modified) || modified.length === 0) { return []; } return modified; } function appendMutableCookies(headers, mutableCookies) { const modifiedCookieValues = getModifiedCookieValues(mutableCookies); if (modifiedCookieValues.length === 0) { return false; } // Return a new response that extends the response with // the modified cookies as fallbacks. `res` cookies // will still take precedence. const resCookies = new _cookies.ResponseCookies(headers); const returnedCookies = resCookies.getAll(); // Set the modified cookies as fallbacks. for (const cookie of modifiedCookieValues){ resCookies.set(cookie); } // Set the original cookies as the final values. for (const cookie of returnedCookies){ resCookies.set(cookie); } return true; } class MutableRequestCookiesAdapter { static wrap(cookies, onUpdateCookies) { const responseCookes = new _cookies.ResponseCookies(new Headers()); for (const cookie of cookies.getAll()){ responseCookes.set(cookie); } let modifiedValues = []; const modifiedCookies = new Set(); const updateResponseCookies = ()=>{ var _fetch___nextGetStaticStore; // TODO-APP: change method of getting staticGenerationAsyncStore const staticGenerationAsyncStore = fetch.__nextGetStaticStore == null ? void 0 : (_fetch___nextGetStaticStore = fetch.__nextGetStaticStore.call(fetch)) == null ? void 0 : _fetch___nextGetStaticStore.getStore(); if (staticGenerationAsyncStore) { staticGenerationAsyncStore.pathWasRevalidated = true; } const allCookies = responseCookes.getAll(); modifiedValues = allCookies.filter((c)=>modifiedCookies.has(c.name)); if (onUpdateCookies) { const serializedCookies = []; for (const cookie of modifiedValues){ const tempCookies = new _cookies.ResponseCookies(new Headers()); tempCookies.set(cookie); serializedCookies.push(tempCookies.toString()); } onUpdateCookies(serializedCookies); } }; return new Proxy(responseCookes, { get (target, prop, receiver) { switch(prop){ // A special symbol to get the modified cookie values case SYMBOL_MODIFY_COOKIE_VALUES: return modifiedValues; // TODO: Throw error if trying to set a cookie after the response // headers have been set. case "delete": return function(...args) { modifiedCookies.add(typeof args[0] === "string" ? args[0] : args[0].name); try { target.delete(...args); } finally{ updateResponseCookies(); } }; case "set": return function(...args) { modifiedCookies.add(typeof args[0] === "string" ? args[0] : args[0].name); try { return target.set(...args); } finally{ updateResponseCookies(); } }; default: return _reflect.ReflectAdapter.get(target, prop, receiver); } } }); } } //# sourceMappingURL=request-cookies.js.map