backoffice/node_modules/lazy-req/index.js

37 lines
636 B
JavaScript

'use strict';
module.exports = function (fn) {
return function (id) {
var mod;
return function () {
if (!arguments.length) {
mod = lazy(mod, fn, id);
return mod;
}
var ret = {};
[].forEach.call(arguments, function (prop) {
Object.defineProperty(ret, prop, {
get: function () {
mod = lazy(mod, fn, id);
if (typeof mod[prop] === 'function') {
return function () {
return mod[prop].apply(mod, arguments);
};
}
return mod[prop];
}
});
});
return ret;
};
};
function lazy(mod, fn, id) {
return mod !== undefined ? mod : fn(id);
}
};