current commit
260714.7 · lib,tools: add `node-core/func-name-matching` lint rule
'use strict';

const {
  ArrayBufferIsView,
  ObjectDefineProperties,
  TypedArrayPrototypeGetSymbolToStringTag,
} = primordials;

function isDataView(value) {
  return ArrayBufferIsView(value) && TypedArrayPrototypeGetSymbolToStringTag(value) === undefined;
}

function isTypedArray(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) !== undefined;
}

function isUint8Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Uint8Array';
}

function isUint8ClampedArray(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Uint8ClampedArray';
}

function isUint16Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Uint16Array';
}

function isUint32Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Uint32Array';
}

function isInt8Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Int8Array';
}

function isInt16Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Int16Array';
}

function isInt32Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Int32Array';
}

function isFloat16Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Float16Array';
}

function isFloat32Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Float32Array';
}

function isFloat64Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'Float64Array';
}

function isBigInt64Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'BigInt64Array';
}

function isBigUint64Array(value) {
  return TypedArrayPrototypeGetSymbolToStringTag(value) === 'BigUint64Array';
}

module.exports = {
  ...internalBinding('types'),
  isArrayBufferView: ArrayBufferIsView,
  isDataView,
  isTypedArray,
  isUint8Array,
  isUint8ClampedArray,
  isUint16Array,
  isUint32Array,
  isInt8Array,
  isInt16Array,
  isInt32Array,
  isFloat16Array,
  isFloat32Array,
  isFloat64Array,
  isBigInt64Array,
  isBigUint64Array,
};

let isCryptoKeyFn;
let isKeyObjectFn;

ObjectDefineProperties(module.exports, {
  isKeyObject: {
    __proto__: null,
    configurable: false,
    enumerable: true,
    value: function isKeyObject(obj) {
      if (!process.versions.openssl) {
        return false;
      }

      if (!isKeyObjectFn) {
        ({ isKeyObject: isKeyObjectFn } = require('internal/crypto/keys'));
      }

      return isKeyObjectFn(obj);
    },
  },
  isCryptoKey: {
    __proto__: null,
    configurable: false,
    enumerable: true,
    value: function isCryptoKey(obj) {
      if (!process.versions.openssl) {
        return false;
      }

      if (!isCryptoKeyFn) {
        ({ isCryptoKey: isCryptoKeyFn } = require('internal/crypto/keys'));
      }

      return isCryptoKeyFn(obj);
    },
  },
});