summaryrefslogtreecommitdiff
path: root/lib/reflect.js
blob: 53cfa44f82e0ad1b27251eea914cf7677738ccfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
'use strict';

export default function reflect(fn) {
    return function reflectOn() {
        var args = Array.prototype.slice.call(arguments);
        var reflectCallback = args.pop();

        args.push(function callback(err) {
            if (err) {
                reflectCallback(null, {
                    error: err
                });
            } else {
                var cbArgs = Array.prototype.slice.call(arguments, 1);
                var value = null;
                if (cbArgs.length === 1) {
                    value = cbArgs[0];
                } else if (cbArgs.length > 1) {
                    value = cbArgs;
                }
                reflectCallback(null, {
                    value: value
                });
            }
        });

        return fn.apply(this, args);
    };
}