@x-ray/core
Version:
X-Ray Core
115 lines (86 loc) • 2.78 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.save = void 0;
var _path = _interopRequireDefault(require("path"));
var _dirdir = require("dirdir");
var _imageminPngout = _interopRequireDefault(require("imagemin-pngout"));
var _iterama = require("iterama");
var _pAll = _interopRequireDefault(require("p-all"));
var _tarmap = require("tarmap");
var _tsfn = require("tsfn");
var _constants = require("../constants");
var _getTarFilePath = require("../get-tar-file-path");
const optimizePng = (0, _imageminPngout.default)({
strategy: 2
});
const save = async options => {
const saveMap = options.keys.reduce((acc, key) => {
const [name, id] = key.split('::');
const filePath = options.pathsMap.get(name);
if (!acc.has(filePath)) {
acc.set(filePath, {
name,
ids: new Set()
});
}
acc.get(filePath).ids.add(id);
return acc;
}, new Map());
for (const [filePath, {
name,
ids
}] of saveMap) {
const tarFilePath = (0, _getTarFilePath.getTarFilePath)({
examplesFilePath: filePath,
examplesName: name,
pluginName: options.pluginName
});
const tarFileDir = _path.default.dirname(tarFilePath);
await (0, _dirdir.makeDir)(tarFileDir);
const tarMap = await (0, _tarmap.TarMap)(tarFilePath);
await (0, _pAll.default)((0, _iterama.map)(id => async () => {
const result = options.results.get(filePath).results.get(id);
switch (result.type) {
case 'NEW':
{
let data;
if (options.encoding === 'image') {
data = await optimizePng(Buffer.from(result.data));
} else {
data = Buffer.from(result.data);
}
tarMap.write(id, data);
if ((0, _tsfn.isDefined)(result.meta)) {
tarMap.write(`${id}-meta`, Buffer.from(JSON.stringify(result.meta)));
}
break;
}
case 'DIFF':
{
let data;
if (options.encoding === 'image') {
data = await optimizePng(Buffer.from(result.data));
} else {
data = Buffer.from(result.data);
}
tarMap.write(id, data);
if ((0, _tsfn.isDefined)(result.meta)) {
tarMap.write(`${id}-meta`, Buffer.from(JSON.stringify(result.meta)));
}
break;
}
case 'DELETED':
{
tarMap.delete(id);
tarMap.delete(`${id}-meta`);
}
}
})(ids), {
concurrency: _constants.WRITE_RESULT_CONCURRENCY
});
await tarMap.save();
}
};
exports.save = save;