'use strict'; var callBound = require('call-bound'); // eslint-disable-next-line no-extra-parens var $deref = /** @type {(thisArg: WeakRef) => T | undefined} */ (callBound('WeakRef.prototype.deref', true)); /** @type {import('.')} */ module.exports = typeof WeakRef === 'undefined' ? function isWeakRef(_value) { // eslint-disable-line no-unused-vars return false; } : function isWeakRef(value) { if (!value || typeof value !== 'object') { return false; } try { // @ts-expect-error $deref(value); return true; } catch (e) { return false; } };