Initial boiler plate project
This commit is contained in:
101
node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js
generated
vendored
Normal file
101
node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js
generated
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
0 && (module.exports = {
|
||||
addRefreshMarkerToActiveParallelSegments: null,
|
||||
refreshInactiveParallelSegments: null
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
addRefreshMarkerToActiveParallelSegments: function() {
|
||||
return addRefreshMarkerToActiveParallelSegments;
|
||||
},
|
||||
refreshInactiveParallelSegments: function() {
|
||||
return refreshInactiveParallelSegments;
|
||||
}
|
||||
});
|
||||
const _applyflightdata = require("./apply-flight-data");
|
||||
const _fetchserverresponse = require("./fetch-server-response");
|
||||
const _segment = require("../../../shared/lib/segment");
|
||||
async function refreshInactiveParallelSegments(options) {
|
||||
const fetchedSegments = new Set();
|
||||
await refreshInactiveParallelSegmentsImpl({
|
||||
...options,
|
||||
rootTree: options.updatedTree,
|
||||
fetchedSegments
|
||||
});
|
||||
}
|
||||
async function refreshInactiveParallelSegmentsImpl(param) {
|
||||
let { state, updatedTree, updatedCache, includeNextUrl, fetchedSegments, rootTree = updatedTree, canonicalUrl } = param;
|
||||
const [, parallelRoutes, refetchPath, refetchMarker] = updatedTree;
|
||||
const fetchPromises = [];
|
||||
if (refetchPath && refetchPath !== canonicalUrl && refetchMarker === "refresh" && // it's possible for the tree to contain multiple segments that contain data at the same URL
|
||||
// we keep track of them so we can dedupe the requests
|
||||
!fetchedSegments.has(refetchPath)) {
|
||||
fetchedSegments.add(refetchPath) // Mark this URL as fetched
|
||||
;
|
||||
// Eagerly kick off the fetch for the refetch path & the parallel routes. This should be fine to do as they each operate
|
||||
// independently on their own cache nodes, and `applyFlightData` will copy anything it doesn't care about from the existing cache.
|
||||
const fetchPromise = (0, _fetchserverresponse.fetchServerResponse)(new URL(refetchPath, location.origin), // refetch from the root of the updated tree, otherwise it will be scoped to the current segment
|
||||
// and might not contain the data we need to patch in interception route data (such as dynamic params from a previous segment)
|
||||
[
|
||||
rootTree[0],
|
||||
rootTree[1],
|
||||
rootTree[2],
|
||||
"refetch"
|
||||
], includeNextUrl ? state.nextUrl : null, state.buildId).then((fetchResponse)=>{
|
||||
const flightData = fetchResponse[0];
|
||||
if (typeof flightData !== "string") {
|
||||
for (const flightDataPath of flightData){
|
||||
// we only pass the new cache as this function is called after clearing the router cache
|
||||
// and filling in the new page data from the server. Meaning the existing cache is actually the cache that's
|
||||
// just been created & has been written to, but hasn't been "committed" yet.
|
||||
(0, _applyflightdata.applyFlightData)(updatedCache, updatedCache, flightDataPath);
|
||||
}
|
||||
} else {
|
||||
// When flightData is a string, it suggests that the server response should have triggered an MPA navigation
|
||||
// I'm not 100% sure of this decision, but it seems unlikely that we'd want to introduce a redirect side effect
|
||||
// when refreshing on-screen data, so handling this has been ommitted.
|
||||
}
|
||||
});
|
||||
fetchPromises.push(fetchPromise);
|
||||
}
|
||||
for(const key in parallelRoutes){
|
||||
const parallelFetchPromise = refreshInactiveParallelSegmentsImpl({
|
||||
state,
|
||||
updatedTree: parallelRoutes[key],
|
||||
updatedCache,
|
||||
includeNextUrl,
|
||||
fetchedSegments,
|
||||
rootTree,
|
||||
canonicalUrl
|
||||
});
|
||||
fetchPromises.push(parallelFetchPromise);
|
||||
}
|
||||
await Promise.all(fetchPromises);
|
||||
}
|
||||
function addRefreshMarkerToActiveParallelSegments(tree, path) {
|
||||
const [segment, parallelRoutes, , refetchMarker] = tree;
|
||||
// a page segment might also contain concatenated search params, so we do a partial match on the key
|
||||
if (segment.includes(_segment.PAGE_SEGMENT_KEY) && refetchMarker !== "refresh") {
|
||||
tree[2] = path;
|
||||
tree[3] = "refresh";
|
||||
}
|
||||
for(const key in parallelRoutes){
|
||||
addRefreshMarkerToActiveParallelSegments(parallelRoutes[key], path);
|
||||
}
|
||||
}
|
||||
|
||||
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=refetch-inactive-parallel-segments.js.map
|
||||
Reference in New Issue
Block a user