UNPKG

rekwest

Version:

The robust request library that humanity deserves 🌐

77 lines (76 loc) 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.preflight = void 0; var _nodeHttp = _interopRequireDefault(require("node:http2")); var _constants = require("./constants.cjs"); var _cookies = require("./cookies.cjs"); var _utils = require("./utils.cjs"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const { HTTP2_HEADER_AUTHORITY, HTTP2_HEADER_AUTHORIZATION, HTTP2_HEADER_COOKIE, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_SCHEME, HTTP2_METHOD_GET, HTTP2_METHOD_HEAD } = _nodeHttp.default.constants; const preflight = options => { let { cookies, credentials, h2, headers, method, url } = options; if (h2) { options.endStream = [HTTP2_METHOD_GET, HTTP2_METHOD_HEAD].includes(method); } else { headers = (0, _utils.stripHeaders)(headers, [HTTP2_HEADER_AUTHORITY, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_SCHEME]); } if (credentials === _constants.requestCredentials.omit) { cookies = false; headers = (0, _utils.stripHeaders)(headers, [HTTP2_HEADER_AUTHORIZATION, HTTP2_HEADER_COOKIE]); url.password = url.username = ''; } if (cookies !== false && credentials !== _constants.requestCredentials.omit) { let cookie = _cookies.Cookies.jar.has(url.origin); if (Object(cookies) === cookies && [_constants.requestCredentials.include, _constants.requestCredentials.sameOrigin].includes(credentials)) { if (cookie) { cookie = new _cookies.Cookies(cookies, options); _cookies.Cookies.jar.get(url.origin).forEach((val, key) => { if (!cookie.has(key)) { cookie.set(key, val); } }); _cookies.Cookies.jar.set(url.origin, cookie); } else { cookie = new _cookies.Cookies(cookies, options); _cookies.Cookies.jar.set(url.origin, cookie); } } else { cookie &&= _cookies.Cookies.jar.get(url.origin); } options.headers = { ...(cookie && { [HTTP2_HEADER_COOKIE]: cookie }), ...headers }; } options.headers = { ...headers, ...(h2 && { [HTTP2_HEADER_AUTHORITY]: url.host, [HTTP2_HEADER_METHOD]: method, [HTTP2_HEADER_PATH]: `${url.pathname}${url.search}`, [HTTP2_HEADER_SCHEME]: url.protocol.replace(/\p{Punctuation}/gu, '') }) }; return options; }; exports.preflight = preflight;