| 'use strict'; |
| |
| var setFunctionLength = require('set-function-length'); |
| |
| var $defineProperty = require('es-define-property'); |
| |
| var callBindBasic = require('call-bind-apply-helpers'); |
| var applyBind = require('call-bind-apply-helpers/applyBind'); |
| |
| module.exports = function callBind(originalFunction) { |
| var func = callBindBasic(arguments); |
| var adjustedLength = originalFunction.length - (arguments.length - 1); |
| return setFunctionLength( |
| func, |
| 1 + (adjustedLength > 0 ? adjustedLength : 0), |
| true |
| ); |
| }; |
| |
| if ($defineProperty) { |
| $defineProperty(module.exports, 'apply', { value: applyBind }); |
| } else { |
| module.exports.apply = applyBind; |
| } |