Urara-Blog/node_modules/.pnpm-store/v3/files/ae/5af5f73efea0f22a2c600ca366762736b780e780d5bfbfb965a48e8c31d6ed5e96e1a255479945be4102ef6a33ae2ede45dc665f8e0aad5fbd1585a8dbc5bc
2022-08-14 01:14:53 +08:00

38 lines
761 B
Text

'use strict'
/* 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) {
dispatcher.on('disconnect', () => {
if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
this.finalizer(key)
}
})
}
}
module.exports = function () {
return {
WeakRef: global.WeakRef || CompatWeakRef,
FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer
}
}