rekwest
Version:
The robust request library that humanity deserves 🌐
77 lines (76 loc) • 2.43 kB
JavaScript
;
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;