| "use strict"; |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| 0 && (module.exports = { |
| fromNodeOutgoingHttpHeaders: null, |
| normalizeNextQueryParam: 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; |
| }, |
| normalizeNextQueryParam: function() { |
| return normalizeNextQueryParam; |
| }, |
| splitCookiesString: function() { |
| return splitCookiesString; |
| }, |
| toNodeOutgoingHttpHeaders: function() { |
| return toNodeOutgoingHttpHeaders; |
| }, |
| validateURL: function() { |
| return validateURL; |
| } |
| }); |
| const _constants = require("../../lib/constants"); |
| 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 === ',') { |
| |
| lastComma = pos; |
| pos += 1; |
| skipWhitespace(); |
| nextStart = pos; |
| while(pos < cookiesString.length && notSpecialChar()){ |
| pos += 1; |
| } |
| |
| if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') { |
| |
| cookiesSeparatorFound = true; |
| |
| pos = nextStart; |
| cookiesStrings.push(cookiesString.substring(start, lastComma)); |
| start = pos; |
| } else { |
| |
| |
| 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') { |
| |
| |
| |
| 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 Object.defineProperty(new Error(`URL is malformed "${String(url)}". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, { |
| cause: error |
| }), "__NEXT_ERROR_CODE", { |
| value: "E61", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| } |
| function normalizeNextQueryParam(key) { |
| const prefixes = [ |
| _constants.NEXT_QUERY_PARAM_PREFIX, |
| _constants.NEXT_INTERCEPTION_MARKER_PREFIX |
| ]; |
| for (const prefix of prefixes){ |
| if (key !== prefix && key.startsWith(prefix)) { |
| return key.substring(prefix.length); |
| } |
| } |
| return null; |
| } |
|
|
| |