'use strict'; var callBound = require('call-bound'); /** @type {undefined | ((thisArg: SharedArrayBuffer) => number)} */ var $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true); /** @type {import('.')} */ module.exports = $byteLength ? function isSharedArrayBuffer(obj) { if (!obj || typeof obj !== 'object') { return false; } try { // @ts-expect-error TS can't figure out this closed-over variable is non-nullable, and it's fine that `obj` might not be a SAB $byteLength(obj); return true; } catch (e) { return false; } } : function isSharedArrayBuffer(_obj) { // eslint-disable-line no-unused-vars return false; };