getLastModified(path, optimizerContext, function(err, lastModified) { if (err) { return lastModifiedDataHolder.reject(err); } lastModifiedDataHolder.resolve(lastModified); });
writeFileDataHolder.done(function (err) { if (err) { return streamDataHolder.reject(err); } streamDataHolder.resolve(fs.createReadStream(fullPath, {encoding: store.encoding})); });
lastModified: function(optimizerContext, callback) { ok(typeof callback === 'function', 'callback is required'); if (this._lastModifiedDataHolder) { // Attach a listener to the current in-progres check return this._lastModifiedDataHolder.done(callback); } var lastModifiedDataHolder; this._lastModifiedDataHolder = lastModifiedDataHolder = new DataHolder(); this._lastModifiedDataHolder.done(callback); var lastModified = this.doLastModified(optimizerContext, function(err, lastModified) { if (err) { lastModifiedDataHolder.reject(err); } else { lastModifiedDataHolder.resolve(lastModified == null ? 0 : lastModified); } }); if ((lastModified !== undefined) && !lastModifiedDataHolder.isSettled()) { // if doLastModified returned value synchronously and did not // call the callback then resolve key lastModifiedDataHolder.resolve(lastModified); } },
var lastModified = this.doLastModified(optimizerContext, function(err, lastModified) { if (err) { lastModifiedDataHolder.reject(err); } else { lastModifiedDataHolder.resolve(lastModified == null ? 0 : lastModified); } });
function done(err, optimizedPage) { if (err) { optimizedPageDataHolder.reject(err); } else { optimizedPageDataHolder.resolve(optimizedPage); } }
this.loadPackageManifest(optimizerContext, function(err, result) { if (err) { return manifestDataHolder.reject(err); } if (!result) { return manifestDataHolder.resolve(null); } var dependencyRegistry = _this.__dependencyRegistry; var OptimizerManifest = require('../OptimizerManifest'); var manifest; if (typeof result === 'string') { var manifestPath = result; var from = _this.getParentManifestDir(); try { manifest = _this.createPackageManifest(manifestLoader.load(manifestPath, from)); } catch(e) { var err; if (e.fileNotFound) { err = new Error('Optimizer manifest not found for path "' + manifestPath + '" (searching from "' + from + '"). Dependency: ' + this.toString()); } else { err = new Error('Unable to load optimizer manifest for path "' + manifestPath + '". Dependency: ' + _this.toString() + '. Exception: ' + (e.stack || e)); } callback(err); } } else if (!OptimizerManifest.isOptimizerManifest(result)) { manifest = new OptimizerManifest({ manifest: result, dependencyRegistry: dependencyRegistry, dirname: _this.getParentManifestDir(), filename: _this.getParentManifestPath() }); } else { manifest = result; } manifestDataHolder.resolve(manifest); });
this.getDependencies(optimizerContext, function(err, dependencies) { if (err) { return manifestDataHolder.reject(err); } var manifest = null; if (dependencies) { manifest = _this.createPackageManifest(dependencies); } manifestDataHolder.resolve(manifest); });
var key = this.doCalculateKey(optimizerContext, function(err, key) { if (err) { keyDataHolder.reject(err); return; } if (logger.isDebugEnabled()) { logger.debug('Calculated key for ' + _this.toString() + ': ' + key); } if (typeof key !== 'string') { keyDataHolder.reject(new Error('Invalid key: ' + key)); } keyDataHolder.resolve(key); });
calculateKey: function(optimizerContext, callback) { ok(typeof callback === 'function', 'callback is required'); if (this._key !== undefined) { return callback(null, this._key); } if (this._keyDataHolder) { // Attach a listener to the current in-progres check return this._keyDataHolder.done(callback); } var _this = this; // no data holder so let's create one var keyDataHolder; this._keyDataHolder = keyDataHolder = new DataHolder(); _this._keyDataHolder.done(callback); var key = this.doCalculateKey(optimizerContext, function(err, key) { if (err) { keyDataHolder.reject(err); return; } if (logger.isDebugEnabled()) { logger.debug('Calculated key for ' + _this.toString() + ': ' + key); } if (typeof key !== 'string') { keyDataHolder.reject(new Error('Invalid key: ' + key)); } keyDataHolder.resolve(key); }); // if doCalculateKey returned value synchronously and did not // call the callback then resolve key if ((key !== undefined) && !keyDataHolder.isSettled()) { keyDataHolder.resolve(key); } },