UNPKG

@tucmc/hazel

Version:
77 lines (76 loc) 3.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DMapUtil = void 0; const fs_1 = __importDefault(require("fs")); const Debugger_1 = require("../debugger/Debugger"); class DMapUtil { static debug = new Debugger_1.Debugger('DMapUtil'); static buildChanges(data) { const fname = `${new Date().getTime()}.json`; this.debug.info(`generating review file ${fname}`); let changes; let live = false; if (Array.isArray(data)) { changes = data .filter((v) => v.isEdited()) .map((v) => { return { type: !v.document || v.synthesized ? 'create' : v.isDeleted() ? 'delete' : 'update', _docID: v.document, from: v.saved, to: v.document ? v.synthesized ? v.data() : v.changes : v.getOriginal() }; }); } else { live = data.isLive(); if (!data.isLive()) { this.debug.warn('changes from cached DMap are not accepted by the database changes handler by default.'); } changes = data .filter((_, v) => v.isEdited()) .map((_, v) => { return { type: !v.document || v.synthesized ? 'create' : v.isDeleted() ? 'delete' : 'update', _docID: v.document, from: v.saved, to: v.document ? v.synthesized ? v.data() : v.changes : v.getOriginal() }; }); } const deletion = changes.filter((c) => c.type === 'delete'); const update = changes.filter((c) => c.type === 'update'); const create = changes.filter((c) => c.type === 'create'); this.debug.info(`change analysed with ${changes.length} entities affected (${deletion.length} deletion, ${update.length} update, ${create.length} creation).`); fs_1.default.writeFileSync(`review/${process.env.RUNTIME_MODE}/${fname}`, JSON.stringify(changes, null, 4)); return { changes: changes, isLive: live }; } static loadChanges(fpath) { const changes = JSON.parse(fs_1.default.readFileSync(fpath).toString()); const deletion = changes.filter((c) => c.type === 'delete'); const update = changes.filter((c) => c.type === 'update'); const create = changes.filter((c) => c.type === 'create'); this.debug.info(`change loaded from ${fpath} with ${changes.length} entities affected (${deletion.length} deletion, ${update.length} update, ${create.length} creation).`); return { changes: changes, isLive: false }; } } exports.DMapUtil = DMapUtil;