1234567891011121314151617181920212223 |
- // Create a deferredConfig prototype so that we can check for it when reviewing the configs later.
- function DeferredConfig() {}
- DeferredConfig.prototype.prepare = function() {};
- DeferredConfig.prototype.resolve = function() {};
- // Accept a function that we'll use to resolve this value later and return a 'deferred' configuration value to resolve it later.
- function deferConfig(func) {
- var obj = Object.create(DeferredConfig.prototype);
- obj.prepare = function(config, prop, property) {
- var original = prop[property]._original;
- obj.resolve = function() {
- var value = func.call(config, config, original);
- Object.defineProperty(prop, property, {value: value});
- return value;
- };
- Object.defineProperty(prop, property, {get: function() { return obj.resolve(); }});
- return obj;
- };
- return obj;
- }
- module.exports.deferConfig = deferConfig;
- module.exports.DeferredConfig = DeferredConfig;
|