bpms_site/.svn/pristine/fa/fa7f14c67c3c453dc9752816aee0f15ced55bb72.svn-base
2025-11-02 16:38:49 +03:30

123 lines
4.1 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "proxyRequest", {
enumerable: true,
get: function() {
return proxyRequest;
}
});
const _cookies = require("next/dist/compiled/@edge-runtime/cookies");
const _nexturl = require("../../../../web/next-url");
const _cleanurl = require("./clean-url");
function proxyRequest(request, { dynamic }, hooks) {
function handleNextUrlBailout(prop) {
switch(prop){
case "search":
case "searchParams":
case "toString":
case "href":
case "origin":
hooks.staticGenerationBailout(`nextUrl.${prop}`);
return;
default:
return;
}
}
const cache = {};
const handleForceStatic = (url, prop)=>{
switch(prop){
case "search":
return "";
case "searchParams":
if (!cache.searchParams) cache.searchParams = new URLSearchParams();
return cache.searchParams;
case "url":
case "href":
if (!cache.url) cache.url = (0, _cleanurl.cleanURL)(url);
return cache.url;
case "toJSON":
case "toString":
if (!cache.url) cache.url = (0, _cleanurl.cleanURL)(url);
if (!cache.toString) cache.toString = ()=>cache.url;
return cache.toString;
case "headers":
if (!cache.headers) cache.headers = new Headers();
return cache.headers;
case "cookies":
if (!cache.headers) cache.headers = new Headers();
if (!cache.cookies) cache.cookies = new _cookies.RequestCookies(cache.headers);
return cache.cookies;
case "clone":
if (!cache.url) cache.url = (0, _cleanurl.cleanURL)(url);
return ()=>new _nexturl.NextURL(cache.url);
default:
break;
}
};
const wrappedNextUrl = new Proxy(request.nextUrl, {
get (target, prop) {
handleNextUrlBailout(prop);
if (dynamic === "force-static" && typeof prop === "string") {
const result = handleForceStatic(target.href, prop);
if (result !== undefined) return result;
}
const value = target[prop];
if (typeof value === "function") {
return value.bind(target);
}
return value;
},
set (target, prop, value) {
handleNextUrlBailout(prop);
target[prop] = value;
return true;
}
});
const handleReqBailout = (prop)=>{
switch(prop){
case "headers":
hooks.headerHooks.headers();
return;
// if request.url is accessed directly instead of
// request.nextUrl we bail since it includes query
// values that can be relied on dynamically
case "url":
case "body":
case "blob":
case "json":
case "text":
case "arrayBuffer":
case "formData":
hooks.staticGenerationBailout(`request.${prop}`);
return;
default:
return;
}
};
return new Proxy(request, {
get (target, prop) {
handleReqBailout(prop);
if (prop === "nextUrl") {
return wrappedNextUrl;
}
if (dynamic === "force-static" && typeof prop === "string") {
const result = handleForceStatic(target.url, prop);
if (result !== undefined) return result;
}
const value = target[prop];
if (typeof value === "function") {
return value.bind(target);
}
return value;
},
set (target, prop, value) {
handleReqBailout(prop);
target[prop] = value;
return true;
}
});
}
//# sourceMappingURL=proxy-request.js.map