nodejs-undici/0002-chore-refine-esbuild-node-detection.patch
Zephyr Lykos 7ae7e7fc8b
Update to 5.28.3 (rhbz#2261973)
This update also fixes GHSA-3787-6prv-h9w3.
2024-02-09 15:22:12 +08:00

59 lines
2.2 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From b285b94aa4a9f4a03524a3af71865666b4683e6d Mon Sep 17 00:00:00 2001
From: Zephyr Lykos <git@mochaa.ws>
Date: Wed, 31 Jan 2024 15:26:16 +0800
Subject: [PATCH] chore: refine esbuild & node detection
When using the loader for external builtins, `esbuildDetection` is
undefined. This commit defines `__UNDICI_IS_NODE__` on `globalThis`
in the loader and deletes it after loading Undici. `esbuildDetection`
has also been extracted as a variable at the top level of the module,
to support deleting `__UNDICI_IS_NODE__` on `globalThis` to avoid
polluting the global namespace.
---
build/wasm.js | 2 ++
lib/fetch/index.js | 8 ++++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/build/wasm.js b/build/wasm.js
index 1104cfec..cd227256 100644
--- a/build/wasm.js
+++ b/build/wasm.js
@@ -101,6 +101,8 @@ if (EXTERNAL_PATH) {
writeFileSync(join(ROOT, 'loader.js'), `
'use strict'
+globalThis.__UNDICI_IS_NODE__ = true
module.exports = require('node:module').createRequire('${EXTERNAL_PATH}/loader.js')('./index-fetch.js')
+delete globalThis.__UNDICI_IS_NODE__
`)
}
diff --git a/lib/fetch/index.js b/lib/fetch/index.js
index dea20696..52129884 100644
--- a/lib/fetch/index.js
+++ b/lib/fetch/index.js
@@ -64,6 +64,10 @@ const { webidl } = require('./webidl')
const { STATUS_CODES } = require('http')
const GET_OR_HEAD = ['GET', 'HEAD']
+const defaultUserAgent = typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined'
+ ? 'node'
+ : 'undici'
+
/** @type {import('buffer').resolveObjectURL} */
let resolveObjectURL
let ReadableStream = globalThis.ReadableStream
@@ -1352,8 +1356,8 @@ async function httpNetworkOrCacheFetch (
// 14. If httpRequests header list does not contain `User-Agent`, then
// user agents should append `User-Agent`/default `User-Agent` value to
// httpRequests header list.
- if (!httpRequest.headersList.contains('user-agent')) {
- httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')
+ if (!httpRequest.headersList.contains('user-agent', true)) {
+ httpRequest.headersList.append('user-agent', defaultUserAgent)
}
// 15. If httpRequests cache mode is "default" and httpRequests header
--
2.43.0