You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			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
 |