Files
YellowLabTools/lib/runner.js
T

69 lines
1.9 KiB
JavaScript

var Q = require('q');
var debug = require('debug')('ylt:runner');
var phantomasWrapper = require('./tools/phantomas/phantomasWrapper');
var jsExecutionTransformer = require('./tools/jsExecutionTransformer');
var weightChecker = require('./tools/weightChecker');
var rulesChecker = require('./rulesChecker');
var scoreCalculator = require('./scoreCalculator');
var Runner = function(params) {
'use strict';
var deferred = Q.defer();
// The pivot format
var data = {
params: params,
toolsResults: {}
};
// Execute Phantomas first
phantomasWrapper.execute(data).then(function(phantomasResults) {
data.toolsResults.phantomas = phantomasResults;
// Treat the JS Execution Tree from offenders
data = jsExecutionTransformer.transform(data);
// Redownload every file
return weightChecker.recheckAllFiles(data);
}).then(function(data) {
// Rules checker
var policies = require('./metadata/policies');
data.rules = rulesChecker.check(data, policies);
// Scores calculator
var scoreProfileGeneric = require('./metadata/scoreProfileGeneric.json');
data.scoreProfiles = {
generic : scoreCalculator.calculate(data, scoreProfileGeneric)
};
delete data.toolsResults.phantomas.metrics.javascriptExecutionTree;
delete data.toolsResults.phantomas.offenders.javascriptExecutionTree;
delete data.toolsResults.phantomas.metrics.scrollExecutionTree;
delete data.toolsResults.phantomas.offenders.scrollExecutionTree;
return data;
}).then(function(data) {
// Finished!
deferred.resolve(data);
}).fail(function(err) {
debug('Run failed');
debug(err);
deferred.reject(err);
});
return deferred.promise;
};
module.exports = Runner;