"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "prepareFlightRouterStateForRequest", { enumerable: true, get: function() { return prepareFlightRouterStateForRequest; } }); const _segment = require("../shared/lib/segment"); function prepareFlightRouterStateForRequest(flightRouterState, isHmrRefresh) { // HMR requests need the complete, unmodified state for proper functionality if (isHmrRefresh) { return encodeURIComponent(JSON.stringify(flightRouterState)); } return encodeURIComponent(JSON.stringify(stripClientOnlyDataFromFlightRouterState(flightRouterState))); } /** * Recursively strips client-only data from FlightRouterState while preserving * server-needed information for proper rendering decisions. */ function stripClientOnlyDataFromFlightRouterState(flightRouterState) { const [segment, parallelRoutes, , refreshMarker, isRootLayout] = flightRouterState; // __PAGE__ segments are always fetched from the server, so there's // no need to send them up const cleanedSegment = stripSearchParamsFromPageSegment(segment); // Recursively process parallel routes const cleanedParallelRoutes = {}; for (const [key, childState] of Object.entries(parallelRoutes)){ cleanedParallelRoutes[key] = stripClientOnlyDataFromFlightRouterState(childState); } const result = [ cleanedSegment, cleanedParallelRoutes, null, shouldPreserveRefreshMarker(refreshMarker) ? refreshMarker : null ]; // Append optional fields if present if (isRootLayout !== undefined) { result[4] = isRootLayout; } return result; } /** * Strips search parameters from __PAGE__ segments to prevent sensitive * client-side data from being sent to the server. */ function stripSearchParamsFromPageSegment(segment) { if (typeof segment === "string" && segment.startsWith(_segment.PAGE_SEGMENT_KEY + "?")) { return _segment.PAGE_SEGMENT_KEY; } return segment; } /** * Determines whether the refresh marker should be sent to the server * Client-only markers like 'refresh' are stripped, while server-needed markers * like 'refetch' and 'inside-shared-layout' are preserved. */ function shouldPreserveRefreshMarker(refreshMarker) { return Boolean(refreshMarker && refreshMarker !== "refresh"); } if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=flight-data-helpers.js.map