source: trip-planner-front/node_modules/wrappy/wrappy.js@ eed0bf8

Last change on this file since eed0bf8 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 905 bytes
RevLine 
[6a3a178]1// Returns a wrapper function that returns a wrapped callback
2// The wrapper function should do some stuff, and return a
3// presumably different callback function.
4// This makes sure that own properties are retained, so that
5// decorations and such are not lost along the way.
6module.exports = wrappy
7function wrappy (fn, cb) {
8 if (fn && cb) return wrappy(fn)(cb)
9
10 if (typeof fn !== 'function')
11 throw new TypeError('need wrapper function')
12
13 Object.keys(fn).forEach(function (k) {
14 wrapper[k] = fn[k]
15 })
16
17 return wrapper
18
19 function wrapper() {
20 var args = new Array(arguments.length)
21 for (var i = 0; i < args.length; i++) {
22 args[i] = arguments[i]
23 }
24 var ret = fn.apply(this, args)
25 var cb = args[args.length-1]
26 if (typeof ret === 'function' && ret !== cb) {
27 Object.keys(cb).forEach(function (k) {
28 ret[k] = cb[k]
29 })
30 }
31 return ret
32 }
33}
Note: See TracBrowser for help on using the repository browser.