From 55a4f1fc869e41aca748c63d3018f0448b1606e0 Mon Sep 17 00:00:00 2001 From: pack Date: Sun, 9 Aug 2026 10:37:07 +0000 Subject: first commit --- .../undici/lib/web/fetch/dispatcher-weakref.js | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 node_modules/undici/lib/web/fetch/dispatcher-weakref.js (limited to 'node_modules/undici/lib/web/fetch/dispatcher-weakref.js') diff --git a/node_modules/undici/lib/web/fetch/dispatcher-weakref.js b/node_modules/undici/lib/web/fetch/dispatcher-weakref.js new file mode 100644 index 0000000..6ac5f37 --- /dev/null +++ b/node_modules/undici/lib/web/fetch/dispatcher-weakref.js @@ -0,0 +1,46 @@ +'use strict' + +const { kConnected, kSize } = require('../../core/symbols') + +class CompatWeakRef { + constructor (value) { + this.value = value + } + + deref () { + return this.value[kConnected] === 0 && this.value[kSize] === 0 + ? undefined + : this.value + } +} + +class CompatFinalizer { + constructor (finalizer) { + this.finalizer = finalizer + } + + register (dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key) + } + }) + } + } + + unregister (key) {} +} + +module.exports = function () { + // FIXME: remove workaround when the Node bug is backported to v18 + // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 + if (process.env.NODE_V8_COVERAGE && process.version.startsWith('v18')) { + process._rawDebug('Using compatibility WeakRef and FinalizationRegistry') + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + } + } + return { WeakRef, FinalizationRegistry } +} -- cgit v1.2.3