asset-resolver
Advanced tools
Comparing version 2.0.5 to 2.0.6
33
index.js
@@ -5,6 +5,23 @@ 'use strict'; | ||
const debug = require('debug')('asset-resolver'); | ||
const Bluebird = require('bluebird'); | ||
const resolver = require('./lib/resolver'); | ||
module.exports.getResource = function(file, options = {}) { | ||
function any(promises) { | ||
return Promise.all( | ||
promises.map(promise => | ||
promise.then( | ||
val => { | ||
throw val; | ||
}, | ||
reason => reason | ||
) | ||
) | ||
).then( | ||
reasons => { | ||
throw reasons; | ||
}, | ||
firstResolved => firstResolved | ||
); | ||
} | ||
module.exports.getResource = (file, options = {}) => { | ||
const opts = { | ||
@@ -16,3 +33,3 @@ base: [process.cwd()], | ||
if (typeof opts.base === 'string') { | ||
if (!Array.isArray(opts.base)) { | ||
opts.base = [opts.base]; | ||
@@ -26,9 +43,9 @@ } | ||
}); | ||
return Bluebird.any(promises).catch(Bluebird.AggregateError, errs => { | ||
const msg = [ | ||
'The file "' + file + '" could not be resolved because of:' | ||
].concat(errs.map(err => err.message)); | ||
return any(promises).catch(error => { | ||
const msg = [`The file "${file}" could not be resolved because of:`].concat( | ||
error.map(err => err.message) | ||
); | ||
debug(msg); | ||
return Bluebird.reject(new Error(msg.join(os.EOL))); | ||
return Promise.reject(new Error(msg.join(os.EOL))); | ||
}); | ||
}; |
'use strict'; | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
const url = require('url'); | ||
const fs = require('fs-extra'); | ||
const request = require('request'); | ||
const util = require('util'); | ||
const got = require('got'); | ||
const mime = require('mime'); | ||
const Bluebird = require('bluebird'); | ||
const debug = require('debug')('asset-resolver'); | ||
@@ -13,2 +13,3 @@ const globby = require('globby'); | ||
const cache = {}; | ||
const readFile = util.promisify(fs.readFile); | ||
@@ -20,5 +21,5 @@ function isUrl(resource) { | ||
function handle(filter) { | ||
return function(resource) { | ||
return resource => { | ||
debug('handle request', resource.path); | ||
return Bluebird.resolve(resource) | ||
return Promise.resolve(resource) | ||
.then(filter) | ||
@@ -28,4 +29,4 @@ .then(result => { | ||
debug('FAILED'); | ||
return Bluebird.reject( | ||
new Error(resource.path + ' rejected by filter') | ||
return Promise.reject( | ||
new Error(`${resource.path} rejected by filter`) | ||
); | ||
@@ -59,3 +60,4 @@ } | ||
encoding: null, | ||
rejectUnauthorized: false | ||
rejectUnauthorized: false, | ||
retry: 0 | ||
}; | ||
@@ -65,32 +67,31 @@ | ||
settings.headers = { | ||
Authorization: 'Basic ' + token(opts.user, opts.pass) | ||
Authorization: `Basic ${token(opts.user, opts.pass)}` | ||
}; | ||
} | ||
return new Bluebird((resolve, reject) => { | ||
return new Promise((resolve, reject) => { | ||
// Handle protocol-relative urls | ||
resource = url.resolve('http://te.st', resource); // eslint-disable-line node/no-deprecated-api | ||
request(resource, settings, (err, resp, body) => { | ||
let msg; | ||
if (err) { | ||
debug('Url failed:', err.message || err); | ||
return reject(err); | ||
} | ||
got(resource, settings) | ||
.then(response => { | ||
if (response.statusCode !== 200) { | ||
const msg = `Wrong status code ${response.statusCode} for ${resource}`; | ||
debug(msg); | ||
return reject(new Error(msg)); | ||
} | ||
if (resp.statusCode !== 200) { | ||
msg = 'Wrong status code ' + resp.statusCode + ' for ' + resource; | ||
debug(msg); | ||
return reject(new Error(msg)); | ||
} | ||
const {headers = {}} = response; | ||
const {headers = {}} = resp; | ||
const mimeType = headers['content-type'] || mime.getType(resource); | ||
const mimeType = headers['content-type'] || mime.getType(resource); | ||
resolve({ | ||
contents: body, | ||
path: resource, | ||
mime: mimeType | ||
resolve({ | ||
contents: response.body, | ||
path: resource, | ||
mime: mimeType | ||
}); | ||
}) | ||
.catch(error => { | ||
debug('Url failed:', error.message || error); | ||
return reject(error); | ||
}); | ||
}); | ||
}); | ||
@@ -105,3 +106,3 @@ } | ||
function readAsync(resource) { | ||
return fs.readFile(resource).then(body => { | ||
return readFile(resource).then(body => { | ||
const mimeType = mime.getType(resource); | ||
@@ -111,7 +112,7 @@ | ||
return Bluebird.resolve({ | ||
return { | ||
contents: body, | ||
path: resource, | ||
mime: mimeType | ||
}); | ||
}; | ||
}); | ||
@@ -126,7 +127,4 @@ } | ||
if (isUrl(base)) { | ||
if (!/\/$/.test(base)) { | ||
base += '/'; | ||
} | ||
return url.resolve(base, file); // eslint-disable-line node/no-deprecated-api | ||
// eslint-disable-next-line node/no-deprecated-api | ||
return url.resolve(base.endsWith('/') ? base : `${base}/`, file); | ||
} | ||
@@ -133,0 +131,0 @@ |
{ | ||
"name": "asset-resolver", | ||
"version": "2.0.5", | ||
"version": "2.0.6", | ||
"description": "Find an asset in a set of locations", | ||
@@ -31,17 +31,10 @@ "license": "MIT", | ||
"dependencies": { | ||
"bluebird": "^3.7.1", | ||
"debug": "^4.1.1", | ||
"filesize": "^5.0.3", | ||
"fs-extra": "^8.1.0", | ||
"globby": "^9.2.0", | ||
"got": "^9.6.0", | ||
"hash": "^0.2.1", | ||
"meow": "5.0.0", | ||
"mime": "^2.4.4", | ||
"object": "0.1.1", | ||
"request": "^2.88.0" | ||
"mime": "^2.4.4" | ||
}, | ||
"devDependencies": { | ||
"ava": "^2.4.0", | ||
"es6-promise": "^4.2.8", | ||
"finalhandler": "^1.1.2", | ||
@@ -48,0 +41,0 @@ "get-port": "^5.0.0", |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
11847
5
6
217
- Removedbluebird@^3.7.1
- Removedfilesize@^5.0.3
- Removedfs-extra@^8.1.0
- Removedhash@^0.2.1
- Removedobject@0.1.1
- Removedrequest@^2.88.0
- Removedajv@6.12.6(transitive)
- Removedasn1@0.2.6(transitive)
- Removedassert-plus@1.0.0(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedaws-sign2@0.7.0(transitive)
- Removedaws4@1.13.0(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedbluebird@3.7.2(transitive)
- Removedcaseless@0.12.0(transitive)
- Removedcombined-stream@1.0.8(transitive)
- Removedcore-util-is@1.0.2(transitive)
- Removeddashdash@1.14.1(transitive)
- Removeddelayed-stream@1.0.0(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedextend@3.0.2(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-deep-equal@3.1.3(transitive)
- Removedfast-json-stable-stringify@2.1.0(transitive)
- Removedfilesize@5.0.3(transitive)
- Removedforever-agent@0.6.1(transitive)
- Removedform-data@2.3.3(transitive)
- Removedfs-extra@8.1.0(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedhar-schema@2.0.0(transitive)
- Removedhar-validator@5.1.5(transitive)
- Removedhash@0.2.1(transitive)
- Removedhttp-signature@1.2.0(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedisstream@0.1.2(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-schema-traverse@0.4.1(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsonfile@4.0.0(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@2.1.35(transitive)
- Removedoauth-sign@0.9.0(transitive)
- Removedobject@0.1.1(transitive)
- Removedperformance-now@2.1.0(transitive)
- Removedpsl@1.9.0(transitive)
- Removedpunycode@2.3.1(transitive)
- Removedqs@6.5.3(transitive)
- Removedrequest@2.88.2(transitive)
- Removedsafe-buffer@5.2.1(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedtough-cookie@2.5.0(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removeduniversalify@0.1.2(transitive)
- Removeduri-js@4.4.1(transitive)
- Removeduuid@3.4.0(transitive)
- Removedverror@1.10.0(transitive)