Spaces:
Paused
Paused
| const corsSafeListedMethods = /** @type {const} */ (['GET', 'HEAD', 'POST']) | |
| const corsSafeListedMethodsSet = new Set(corsSafeListedMethods) | |
| const nullBodyStatus = /** @type {const} */ ([101, 204, 205, 304]) | |
| const redirectStatus = /** @type {const} */ ([301, 302, 303, 307, 308]) | |
| const redirectStatusSet = new Set(redirectStatus) | |
| /** | |
| * @see https://fetch.spec.whatwg.org/#block-bad-port | |
| */ | |
| const badPorts = /** @type {const} */ ([ | |
| '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', | |
| '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', | |
| '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', | |
| '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', | |
| '2049', '3659', '4045', '4190', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6679', | |
| '6697', '10080' | |
| ]) | |
| const badPortsSet = new Set(badPorts) | |
| /** | |
| * @see https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header | |
| */ | |
| const referrerPolicyTokens = /** @type {const} */ ([ | |
| 'no-referrer', | |
| 'no-referrer-when-downgrade', | |
| 'same-origin', | |
| 'origin', | |
| 'strict-origin', | |
| 'origin-when-cross-origin', | |
| 'strict-origin-when-cross-origin', | |
| 'unsafe-url' | |
| ]) | |
| /** | |
| * @see https://w3c.github.io/webappsec-referrer-policy/#referrer-policies | |
| */ | |
| const referrerPolicy = /** @type {const} */ ([ | |
| '', | |
| ...referrerPolicyTokens | |
| ]) | |
| const referrerPolicyTokensSet = new Set(referrerPolicyTokens) | |
| const requestRedirect = /** @type {const} */ (['follow', 'manual', 'error']) | |
| const safeMethods = /** @type {const} */ (['GET', 'HEAD', 'OPTIONS', 'TRACE']) | |
| const safeMethodsSet = new Set(safeMethods) | |
| const requestMode = /** @type {const} */ (['navigate', 'same-origin', 'no-cors', 'cors']) | |
| const requestCredentials = /** @type {const} */ (['omit', 'same-origin', 'include']) | |
| const requestCache = /** @type {const} */ ([ | |
| 'default', | |
| 'no-store', | |
| 'reload', | |
| 'no-cache', | |
| 'force-cache', | |
| 'only-if-cached' | |
| ]) | |
| /** | |
| * @see https://fetch.spec.whatwg.org/#request-body-header-name | |
| */ | |
| const requestBodyHeader = /** @type {const} */ ([ | |
| 'content-encoding', | |
| 'content-language', | |
| 'content-location', | |
| 'content-type', | |
| // See https://github.com/nodejs/undici/issues/2021 | |
| // 'Content-Length' is a forbidden header name, which is typically | |
| // removed in the Headers implementation. However, undici doesn't | |
| // filter out headers, so we add it here. | |
| 'content-length' | |
| ]) | |
| /** | |
| * @see https://fetch.spec.whatwg.org/#enumdef-requestduplex | |
| */ | |
| const requestDuplex = /** @type {const} */ ([ | |
| 'half' | |
| ]) | |
| /** | |
| * @see http://fetch.spec.whatwg.org/#forbidden-method | |
| */ | |
| const forbiddenMethods = /** @type {const} */ (['CONNECT', 'TRACE', 'TRACK']) | |
| const forbiddenMethodsSet = new Set(forbiddenMethods) | |
| const subresource = /** @type {const} */ ([ | |
| 'audio', | |
| 'audioworklet', | |
| 'font', | |
| 'image', | |
| 'manifest', | |
| 'paintworklet', | |
| 'script', | |
| 'style', | |
| 'track', | |
| 'video', | |
| 'xslt', | |
| '' | |
| ]) | |
| const subresourceSet = new Set(subresource) | |
| module.exports = { | |
| subresource, | |
| forbiddenMethods, | |
| requestBodyHeader, | |
| referrerPolicy, | |
| requestRedirect, | |
| requestMode, | |
| requestCredentials, | |
| requestCache, | |
| redirectStatus, | |
| corsSafeListedMethods, | |
| nullBodyStatus, | |
| safeMethods, | |
| badPorts, | |
| requestDuplex, | |
| subresourceSet, | |
| badPortsSet, | |
| redirectStatusSet, | |
| corsSafeListedMethodsSet, | |
| safeMethodsSet, | |
| forbiddenMethodsSet, | |
| referrerPolicyTokens: referrerPolicyTokensSet | |
| } | |