Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
TestRunner.prototype._makeBowerSandbox = function _makeBowerSandbox(next) {
if (this._cancelled) return next('cancelled');
// check bower.json, component.json, and .bower.json
BowerJson.find(this._root, function(error, file) {
if (error) return next(['No bower json file found', error]);
BowerJson.read(file, function(error, info) {
if (error) return next(['Invalid bower.json', error]);
if (!(typeof info.name === 'string')) return next('package name is required');
// Make sure the name doesn't break out of our sandbox
var packageRoot = path.resolve(this._sandbox, info.name);
if (packageRoot.indexOf(this._sandbox) !== 0) {
return next('Inavlid package name: ' + info.name);
}
shelljs.mv(this._root, packageRoot);
this._root = packageRoot;
next();
}.bind(this));
async.eachSeries(Object.keys(d), function (dep, next) {
bowerJSON.find(__root + '/bower_components/' + dep, function (err, file) {
if (file) {
return next();
}
console.log('installing ' + dep);
bower.commands
.install([dep + '#' + d[dep]], {
save: false,
force: true,
forceLatest: true
})
.on('error', function (err) {
console.log('error installing bower dependency ' + dep + ' for ' + self.name);
console.log(err);
next();
})
.on('end', function () {
packages.forEach(function(package){
bowerJson.find(path.resolve(options.directory, package), function(err, filename){
if (!filename){
output[package] = {licenses: 'UNKNOWN'};
completed.push(package);
return;
}
bowerJson.read(filename, function(err, bowerData){
if (!!err) {
callback(null, err);
return;
}
var moduleInfo = {licenses: []};
if (bowerData.license) moduleInfo.licenses = moduleInfo.licenses.concat(bowerData.license);
if (bowerData.repository) moduleInfo.repository = bowerData.repository;
if (bowerData.homepage) moduleInfo.homepage = bowerData.homepage;
return new Promise(function (resolve, reject) {
bowerJson.find('.', function (err, filename) {
if (err) {
reject(err);
} else {
resolve(filename);
}
});
}).then(function (filename) {
return fs.readFileAsync(filename, 'utf8').then(function (content) {