130 lines
4.2 KiB
JavaScript
130 lines
4.2 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
0 && (module.exports = {
|
||
|
fromNodeOutgoingHttpHeaders: null,
|
||
|
splitCookiesString: null,
|
||
|
toNodeOutgoingHttpHeaders: null,
|
||
|
validateURL: null
|
||
|
});
|
||
|
function _export(target, all) {
|
||
|
for(var name in all)Object.defineProperty(target, name, {
|
||
|
enumerable: true,
|
||
|
get: all[name]
|
||
|
});
|
||
|
}
|
||
|
_export(exports, {
|
||
|
fromNodeOutgoingHttpHeaders: function() {
|
||
|
return fromNodeOutgoingHttpHeaders;
|
||
|
},
|
||
|
splitCookiesString: function() {
|
||
|
return splitCookiesString;
|
||
|
},
|
||
|
toNodeOutgoingHttpHeaders: function() {
|
||
|
return toNodeOutgoingHttpHeaders;
|
||
|
},
|
||
|
validateURL: function() {
|
||
|
return validateURL;
|
||
|
}
|
||
|
});
|
||
|
function fromNodeOutgoingHttpHeaders(nodeHeaders) {
|
||
|
const headers = new Headers();
|
||
|
for (let [key, value] of Object.entries(nodeHeaders)){
|
||
|
const values = Array.isArray(value) ? value : [
|
||
|
value
|
||
|
];
|
||
|
for (let v of values){
|
||
|
if (typeof v === "undefined") continue;
|
||
|
if (typeof v === "number") {
|
||
|
v = v.toString();
|
||
|
}
|
||
|
headers.append(key, v);
|
||
|
}
|
||
|
}
|
||
|
return headers;
|
||
|
}
|
||
|
function splitCookiesString(cookiesString) {
|
||
|
var cookiesStrings = [];
|
||
|
var pos = 0;
|
||
|
var start;
|
||
|
var ch;
|
||
|
var lastComma;
|
||
|
var nextStart;
|
||
|
var cookiesSeparatorFound;
|
||
|
function skipWhitespace() {
|
||
|
while(pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))){
|
||
|
pos += 1;
|
||
|
}
|
||
|
return pos < cookiesString.length;
|
||
|
}
|
||
|
function notSpecialChar() {
|
||
|
ch = cookiesString.charAt(pos);
|
||
|
return ch !== "=" && ch !== ";" && ch !== ",";
|
||
|
}
|
||
|
while(pos < cookiesString.length){
|
||
|
start = pos;
|
||
|
cookiesSeparatorFound = false;
|
||
|
while(skipWhitespace()){
|
||
|
ch = cookiesString.charAt(pos);
|
||
|
if (ch === ",") {
|
||
|
// ',' is a cookie separator if we have later first '=', not ';' or ','
|
||
|
lastComma = pos;
|
||
|
pos += 1;
|
||
|
skipWhitespace();
|
||
|
nextStart = pos;
|
||
|
while(pos < cookiesString.length && notSpecialChar()){
|
||
|
pos += 1;
|
||
|
}
|
||
|
// currently special character
|
||
|
if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") {
|
||
|
// we found cookies separator
|
||
|
cookiesSeparatorFound = true;
|
||
|
// pos is inside the next cookie, so back up and return it.
|
||
|
pos = nextStart;
|
||
|
cookiesStrings.push(cookiesString.substring(start, lastComma));
|
||
|
start = pos;
|
||
|
} else {
|
||
|
// in param ',' or param separator ';',
|
||
|
// we continue from that comma
|
||
|
pos = lastComma + 1;
|
||
|
}
|
||
|
} else {
|
||
|
pos += 1;
|
||
|
}
|
||
|
}
|
||
|
if (!cookiesSeparatorFound || pos >= cookiesString.length) {
|
||
|
cookiesStrings.push(cookiesString.substring(start, cookiesString.length));
|
||
|
}
|
||
|
}
|
||
|
return cookiesStrings;
|
||
|
}
|
||
|
function toNodeOutgoingHttpHeaders(headers) {
|
||
|
const nodeHeaders = {};
|
||
|
const cookies = [];
|
||
|
if (headers) {
|
||
|
for (const [key, value] of headers.entries()){
|
||
|
if (key.toLowerCase() === "set-cookie") {
|
||
|
// We may have gotten a comma joined string of cookies, or multiple
|
||
|
// set-cookie headers. We need to merge them into one header array
|
||
|
// to represent all the cookies.
|
||
|
cookies.push(...splitCookiesString(value));
|
||
|
nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies;
|
||
|
} else {
|
||
|
nodeHeaders[key] = value;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return nodeHeaders;
|
||
|
}
|
||
|
function validateURL(url) {
|
||
|
try {
|
||
|
return String(new URL(String(url)));
|
||
|
} catch (error) {
|
||
|
throw new Error(`URL is malformed "${String(url)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, {
|
||
|
cause: error
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//# sourceMappingURL=utils.js.map
|