wrap.js 674 B

1234567891011121314151617181920212223242526272829
  1. 'use strict';
  2. module.exports = mod => {
  3. const wrapped = (args1, args2, args3, args4) => {
  4. // arrow function can't bind arguments, and can't use rest in node@4, sign
  5. const args = [ args1, args2, args3, args4 ];
  6. for (let i = args.length - 1; i >= 0; i--) {
  7. if (args[i] !== undefined) break;
  8. args.pop();
  9. }
  10. return new Promise((resolve, reject) => {
  11. args.push(function mZmodulesWrapCallback(err, result) {
  12. if (err) {
  13. reject(err);
  14. } else {
  15. resolve(result);
  16. }
  17. });
  18. mod.apply(null, args);
  19. });
  20. };
  21. for (const key in mod) {
  22. wrapped[key] = mod[key];
  23. }
  24. return wrapped;
  25. };