getLastModified(path, optimizerContext, function(err, lastModified) {
                    if (err) {
                        return lastModifiedDataHolder.reject(err);
                    }

                    lastModifiedDataHolder.resolve(lastModified);
                });
Example #2
0
            writeFileDataHolder.done(function (err) {
                if (err) {
                    return streamDataHolder.reject(err);
                }

                streamDataHolder.resolve(fs.createReadStream(fullPath, {encoding: store.encoding}));
            });
Example #3
0
    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);
        }
    },
Example #4
0
 var lastModified = this.doLastModified(optimizerContext, function(err, lastModified) {
     if (err) {
         lastModifiedDataHolder.reject(err);
     } else {
         lastModifiedDataHolder.resolve(lastModified == null ? 0 : lastModified);
     }
 });
Example #5
0
 function done(err, optimizedPage) {
     if (err) {
         optimizedPageDataHolder.reject(err);
     } else {
         optimizedPageDataHolder.resolve(optimizedPage);
     }
 }
Example #6
0
            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);
            });
Example #7
0
            this.getDependencies(optimizerContext, function(err, dependencies) {
                if (err) {
                    return manifestDataHolder.reject(err);
                }

                var manifest = null;
                if (dependencies) {
                    manifest = _this.createPackageManifest(dependencies);
                }

                manifestDataHolder.resolve(manifest);
            });
Example #8
0
        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);
        });
Example #9
0
    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);
        }
    },