1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 'use strict';
- var hasToStringTag = require('has-tostringtag/shams')();
- var callBound = require('call-bound');
- var $toString = callBound('Object.prototype.toString');
- /** @type {import('.')} */
- var isStandardArguments = function isArguments(value) {
- if (
- hasToStringTag
- && value
- && typeof value === 'object'
- && Symbol.toStringTag in value
- ) {
- return false;
- }
- return $toString(value) === '[object Arguments]';
- };
- /** @type {import('.')} */
- var isLegacyArguments = function isArguments(value) {
- if (isStandardArguments(value)) {
- return true;
- }
- return value !== null
- && typeof value === 'object'
- && 'length' in value
- && typeof value.length === 'number'
- && value.length >= 0
- && $toString(value) !== '[object Array]'
- && 'callee' in value
- && $toString(value.callee) === '[object Function]';
- };
- var supportsStandardArguments = (function () {
- return isStandardArguments(arguments);
- }());
- // @ts-expect-error TODO make this not error
- isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests
- /** @type {import('.')} */
- module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;
|