UNPKG

@x-ray/core

Version:
115 lines (86 loc) 2.78 kB
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;