2 const lazy = (mod, fn, id) => mod === undefined ? fn(id) : mod;
4 module.exports = fn => {
9 if (arguments.length === 0) {
10 mod = lazy(mod, fn, id);
16 [].forEach.call(arguments, prop => {
17 Object.defineProperty(ret, prop, {
19 mod = lazy(mod, fn, id);
20 if (typeof mod[prop] === 'function') {
22 return mod[prop].apply(mod, arguments);
36 module.exports.proxy = fn => {
41 get: (target, property) => {
42 mod = lazy(mod, fn, id);
43 return Reflect.get(mod, property);
45 apply: (target, thisArg, argumentsList) => {
46 mod = lazy(mod, fn, id);
47 return Reflect.apply(mod, thisArg, argumentsList);
51 return new Proxy(() => {}, handler);