Spaces:
Runtime error
Runtime error
| /* istanbul ignore file: only for Node 12 */ | |
| 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) | |
| } | |
| }) | |
| } | |
| } | |
| } | |
| module.exports = function () { | |
| // FIXME: remove workaround when the Node bug is fixed | |
| // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 | |
| if (process.env.NODE_V8_COVERAGE) { | |
| return { | |
| WeakRef: CompatWeakRef, | |
| FinalizationRegistry: CompatFinalizer | |
| } | |
| } | |
| return { | |
| WeakRef: global.WeakRef || CompatWeakRef, | |
| FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer | |
| } | |
| } | |