| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 'use strict';var bind = require('function-bind');var GetIntrinsic = require('get-intrinsic');var $apply = GetIntrinsic('%Function.prototype.apply%');var $call = GetIntrinsic('%Function.prototype.call%');var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);var $max = GetIntrinsic('%Math.max%');if ($defineProperty) {	try {		$defineProperty({}, 'a', { value: 1 });	} catch (e) {		// IE 8 has a broken defineProperty		$defineProperty = null;	}}module.exports = function callBind(originalFunction) {	var func = $reflectApply(bind, $call, arguments);	if ($gOPD && $defineProperty) {		var desc = $gOPD(func, 'length');		if (desc.configurable) {			// original length, plus the receiver, minus any additional arguments (after the receiver)			$defineProperty(				func,				'length',				{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }			);		}	}	return func;};var applyBind = function applyBind() {	return $reflectApply(bind, $apply, arguments);};if ($defineProperty) {	$defineProperty(module.exports, 'apply', { value: applyBind });} else {	module.exports.apply = applyBind;}
 |