index.js 438 Bytes
'use strict';

var callBound = require('call-bind/callBound');

var $deref = callBound('WeakRef.prototype.deref', true);

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 {
			$deref(value);
			return true;
		} catch (e) {
			return false;
		}
	};