123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- 'use strict';
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
- function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
- var typeChecker = require('typechecker');
- module.exports = function ambi(method) {
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
-
- var fireMethod = void 0,
- introspectMethod = void 0;
-
-
-
- if (typeChecker.isArray(method)) {
- var _method = _slicedToArray(method, 2);
- fireMethod = _method[0];
- introspectMethod = _method[1];
- } else {
- fireMethod = introspectMethod = method;
- }
-
- var simpleArguments = args.slice(0, -1);
- var completionCallback = args.slice(-1)[0];
-
- if (!typeChecker.isFunction(completionCallback)) {
- throw new Error('ambi was called without a completion callback');
- }
-
- var givenArgumentsLength = args.length;
- var acceptedArgumentsLength = introspectMethod.length;
- var argumentsDifferenceLength = null;
- var executeAsynchronously = null;
-
-
-
- if (givenArgumentsLength === acceptedArgumentsLength) {
- executeAsynchronously = true;
- }
-
-
-
-
- else if (givenArgumentsLength < acceptedArgumentsLength) {
- executeAsynchronously = true;
- argumentsDifferenceLength = acceptedArgumentsLength - givenArgumentsLength;
- args = simpleArguments.slice().concat(new Array(argumentsDifferenceLength)).concat([completionCallback]);
- }
-
-
-
-
-
-
- else {
- executeAsynchronously = false;
- args = simpleArguments.slice();
- }
-
- if (executeAsynchronously) {
-
- fireMethod.apply(undefined, _toConsumableArray(args));
- }
-
-
- else {
-
- var result = fireMethod.apply(undefined, _toConsumableArray(args));
-
- if (typeChecker.isError(result)) {
-
- var err = result;
- completionCallback(err);
- } else {
-
- completionCallback(null, result);
- }
- }
-
-
-
-
- return null;
- };
|