src/utils/ImageLoader.js
/**
@author: Tom Clement (tjclement)
@license NPOSL-3.0
@copyright Bizboard, 2015
*/
if (typeof window !== 'undefined') {
/* Unbundled build, loaded dynamically through System.import() */
exports.build = false;
exports.fetch = function (load) {
var absolutePath = load.address.replace('.js', '').substr('file:'.length);
return new Promise(function (resolve) {
resolve('module.exports = "' + absolutePath + '"');
});
};
} else {
/* Bundled build, loaded from bundle.js */
var fs = require('fs');
var path = require('path');
exports.build = true;
exports.fetch = function (load) {
return new Promise(function (resolve, reject) {
var absolutePath = load.address.replace('.js', '').substr('file:'.length);
copyFile(absolutePath, resolve, reject);
});
};
function copyFile(source, resolve, reject) {
var cbCalled = false;
var dir = 'img';
var target = `${dir}/${path.basename(source)}`;
var absoluteDir = `www/${dir}`;
var absoluteTarget = `www/${target}`;
fs.mkdir(absoluteDir, function (mkdirError) {
if (mkdirError && mkdirError.code !== 'EEXIST') {
return reject(mkdirError);
}
var rd = fs.createReadStream(source);
rd.on('error', function (err) {
done(err);
});
var wr = fs.createWriteStream(absoluteTarget);
wr.on('error', function (err) {
done(err);
});
wr.on('close', function (ex) {
done();
});
rd.pipe(wr);
function done(error) {
if (!cbCalled) {
if (!error && resolve) {
return resolve('module.exports = \'' + target + '\';');
} else if (reject) {
console.log('Error copying imported image:', error);
return reject(error);
}
cbCalled = true;
}
}
});
}
}