123456789101112131415161718192021222324252627282930313233343536373839 |
- 'use strict';
- var GetIntrinsic = require('get-intrinsic');
- var $ArrayBuffer = GetIntrinsic('%ArrayBuffer%');
- var $DataView = GetIntrinsic('%DataView%', true);
- var callBound = require('call-bind/callBound');
- // node <= 0.10, < 0.11.4 has a nonconfigurable own property instead of a prototype getter
- var $dataViewBuffer = callBound('DataView.prototype.buffer', true);
- var isTypedArray = require('is-typed-array');
- /** @type {import('.')} */
- module.exports = function isDataView(x) {
- if (!x || typeof x !== 'object' || !$DataView || isTypedArray(x)) {
- return false;
- }
- if ($dataViewBuffer) {
- try {
- $dataViewBuffer(x);
- return true;
- } catch (e) {
- return false;
- }
- }
- if (
- ('getInt8' in x)
- && typeof x.getInt8 === 'function'
- && x.getInt8 === new $DataView(new $ArrayBuffer(1)).getInt8
- ) {
- return true;
- }
- return false;
- };
|