UNPKG

926 BJavaScriptView Raw
1// Create a deferredConfig prototype so that we can check for it when reviewing the configs later.
2function DeferredConfig() {}
3DeferredConfig.prototype.prepare = function() {};
4DeferredConfig.prototype.resolve = function() {};
5
6// Accept a function that we'll use to resolve this value later and return a 'deferred' configuration value to resolve it later.
7function deferConfig(func) {
8 var obj = Object.create(DeferredConfig.prototype);
9 obj.prepare = function(config, prop, property) {
10 var original = prop[property]._original;
11 obj.resolve = function() {
12 var value = func.call(config, config, original);
13 Object.defineProperty(prop, property, {value: value});
14 return value;
15 };
16 Object.defineProperty(prop, property, {get: function() { return obj.resolve(); }});
17 return obj;
18 };
19 return obj;
20}
21
22module.exports.deferConfig = deferConfig;
23module.exports.DeferredConfig = DeferredConfig;