blob: afdc5c8b33948b0c78f8735c8156c81b2adb1102 [file] [log] [blame]
Nikolay Vitkovd76576c2024-12-02 14:10:151'use strict';
2
3var $TypeError = require('es-errors/type');
4
5var $byteLength = require('array-buffer-byte-length');
6
7var isArrayBuffer = require('is-array-buffer');
8
9var availableTypedArrays = require('available-typed-arrays')();
10
11// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
12
13module.exports = function IsDetachedBuffer(arrayBuffer) {
14 if (!isArrayBuffer(arrayBuffer)) {
15 throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
16 }
17 if ($byteLength(arrayBuffer) === 0) {
18 try {
19 new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
20 } catch (error) {
21 return !!error && error.name === 'TypeError';
22 }
23 }
24 return false;
25};