assets
Version:
An asset manager for node
41 lines (32 loc) • 993 B
JavaScript
var encodeBuffer = require('./__utils__/encodeBuffer');
var extend = require('lodash/extend');
var fs = require('fs');
var mime = require('mime');
var Promise = require('bluebird');
var resolvePath = require('./path');
var url = require('url');
var preadFile = Promise.promisify(fs.readFile);
module.exports = function (to, options, callback) {
var toUrl;
/* eslint-disable no-param-reassign */
if (typeof options === 'function') {
callback = options;
options = {};
}
options = extend({
basePath: '.',
loadPaths: []
}, options);
/* eslint-enable */
toUrl = url.parse(to);
return resolvePath(toUrl.pathname, options)
.then(function (resolvedPath) {
var mediaType = mime.getType(resolvedPath);
return preadFile(resolvedPath)
.then(function (buffer) {
var content = encodeBuffer(buffer, mediaType);
return 'data:' + mediaType + ';' + content + (toUrl.hash || '');
});
})
.nodeify(callback);
};