var gulpRetire = function (file, encoding, callback) { var options = { jsRepository: 'https://raw.github.com/RetireJS/retire.js/master/repository/jsrepository.json', nodeRepository: 'https://raw.github.com/RetireJS/retire.js/master/repository/npmrepository.json' }; if (file.isStream()) { return callback(createError(file, 'Streams are not supported')); } scanner.on('vulnerable-dependency-found', function(e) { return callback(createError(file, 'Vulnerable library found')); }); scanner.on('dependency-found', function(e) { }); var vulnerabilityRepoLoaded = function(repository) { scanner.scanJsFile(file.path, repository, options); }; if (!options.nocache) { options.cachedir = path.resolve(os.tmpdir(), '.retire-cache/'); } if (/^http[s]?:/.test(options.jsRepository)) { repo.loadrepository(options.jsRepository, options).on('done', vulnerabilityRepoLoaded); } else { repo.loadrepositoryFromFile(options.jsRepository, options).on('done', vulnerabilityRepoLoaded); } };
grunt.event.once('retire-load-node', function() { repo.loadrepository(options.nodeRepository, options).on('done', function(repo) { nodeRepo = repo; grunt.event.emit('retire-node-scan', filesSrc); }); });
grunt.event.once('retire-load-js', function() { repo.loadrepository(options.jsRepository, options).on('done', function(repo) { jsRepo = repo; grunt.event.emit('retire-js-repo'); }); });
} else { events.emit('phantom-ready'); } }); events.on('begin', function() { console.log('Reading file ' + dfile + ' ...'); new lazy(fs.createReadStream(dfile)) .lines .forEach(function(domain) { if (domain) events.emit('domain', domain); }); }); if (!fs.existsSync(funcsfile)) { repo.loadrepository('https://raw.github.com/bekk/retire.js/master/repository/jsrepository.json', {nocache:true}) .on('done', function(jsrepo) { var funcs = []; for (var i in jsrepo) { for (var j in jsrepo[i].extractors.func) { funcs.push({"component" : i, func : jsrepo[i].extractors.func[j]}); } } fs.writeFile(funcsfile, JSON.stringify(funcs), function(err) { if (err) { console.log(err); process.exit(1); } events.emit('begin'); }); });