universalify.js 793 B

12345678910111213141516171819202122232425262728293031
  1. var promisify = require('./promisify');
  2. var callbackify = require('./callbackify');
  3. var last = require('./last');
  4. var isFn = require('./isFn');
  5. exports = function(fn, type) {
  6. var callbackFn;
  7. var promiseFn;
  8. if (type === 'callback') {
  9. callbackFn = fn;
  10. promiseFn = promisify(fn);
  11. } else {
  12. promiseFn = fn;
  13. callbackFn = callbackify(fn);
  14. }
  15. return function() {
  16. for (
  17. var _len = arguments.length, args = new Array(_len), _key = 0;
  18. _key < _len;
  19. _key++
  20. ) {
  21. args[_key] = arguments[_key];
  22. }
  23. if (isFn(last(args))) {
  24. callbackFn.apply(this, args);
  25. } else {
  26. return promiseFn.apply(this, args);
  27. }
  28. };
  29. };
  30. module.exports = exports;