@tdb/web
Version:
Common condiguration for serving a web-site and testing web-based UI components.
101 lines (77 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports._createMemory = undefined;
var _memoryFs = require('memory-fs');
var _memoryFs2 = _interopRequireDefault(_memoryFs);
var _fs = require('./utils/fs');
var _fs2 = _interopRequireDefault(_fs);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _paths = require('./paths');
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var stringify = JSON.stringify,
parse = JSON.parse;
var initializeMFS = function initializeMFS() {
var mfs = new _memoryFs2.default();
mfs.mkdirSync('/assets');
return mfs;
};
var cleanup = function cleanup(mfs) {
mfs.rmdirSync('/assets');
mfs.mkdirSync('/assets');
return mfs;
};
var createSync = function createSync(cacheDir, fs, mfs) {
return function (hash, stats) {
mfs = cleanup(mfs);
mfs.writeFileSync('/stats.json', stringify(stats));
return _bluebird2.default.resolve(stats.assets).map(function (_ref) {
var name = _ref.name;
return name;
}).map(function (filename) {
return _bluebird2.default.props({
filename,
buffer: fs.readFileAsync(_path2.default.join(cacheDir, hash, filename))
});
}).each(function (_ref2) {
var filename = _ref2.filename,
buffer = _ref2.buffer;
mfs.writeFileSync(_path2.default.posix.join('/assets', filename), buffer);
});
};
};
var createGetAssets = function createGetAssets(mfs) {
return function () {
return mfs.readdirSync('/assets').map(function (filename) {
return {
filename,
buffer: mfs.readFileSync(_path2.default.posix.join('/assets', filename))
};
});
};
};
var createGetStats = function createGetStats(mfs) {
return function () {
try {
var buffer = mfs.readFileSync('/stats.json');
return parse(buffer);
} catch (err) {
return null;
}
};
};
var _createMemory = exports._createMemory = function _createMemory(fs, cacheDir) {
return function () {
var mfs = initializeMFS();
return {
sync: createSync(cacheDir, fs, mfs),
getAssets: createGetAssets(mfs),
getStats: createGetStats(mfs)
};
};
};
exports.default = _createMemory(_fs2.default, _paths.cacheDir);