UNPKG

@c11/engine.db

Version:

The engine db

87 lines 6.78 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.triggerListenerFn = void 0; require("setimmediate"); var engine_utils_1 = require("@c11/engine.utils"); var isPlainObject_1 = __importDefault(require("lodash/isPlainObject")); var isArray_1 = __importDefault(require("lodash/isArray")); var getRefinedValue_1 = require("./getRefinedValue"); var err_1 = __importDefault(require("./err")); var isWildcardPath_1 = require("./isWildcardPath"); function callNode(db, path, i, patch) { if (patch === void 0) { patch = []; } var fns = db.updates.fns[path]; if (!fns || !fns[i] || !fns[i].fn) { return; } var fn = fns[i].fn; var refinee = fns[i].refinee; var isWildcard = (0, isWildcardPath_1.isWildcardPath)(path); // Wildcard triggers need concrete values to have meaning // as such wildcard existance shouldn't trigger other wildcard paths if (isWildcard && patch[0] && patch[0].op === "test" && (0, isWildcardPath_1.isWildcardPath)(patch[0].path)) { return; } var val = (0, getRefinedValue_1.getRefinedValue)(db, path, patch, refinee); var replacer = function (key, value) { if ((0, isPlainObject_1.default)(value) || (0, isArray_1.default)(value) || value !== Object(value)) { return value; } else if (typeof value === "symbol" || value instanceof Symbol) { return value.toString(); } return (0, engine_utils_1.randomId)(); }; var cacheTest = JSON.stringify(val, replacer); var cacheIndex = isWildcard && patch[0] ? i + "-" + patch[0].path : i; if (!db.updates.cache[path].hasOwnProperty(cacheIndex) || db.updates.cache[path][cacheIndex] !== cacheTest) { db.updates.cache[path][cacheIndex] = cacheTest; (function () { try { fn.call(null, val, patch); } catch (e) { if (e instanceof Error) { (0, err_1.default)(db, "/err/types/on/2", { path: path, error: e.message + " " + e.stack, errObj: e, }); } } })(); } } function triggerListener(db, path, patch) { if (patch === void 0) { patch = []; } var fns = db.updates.fns[path]; if (!fns) { return; } var ids = Object.keys(fns); var len = ids.length; var _loop_1 = function (i) { setImmediate(function () { callNode(db, path, ids[i], patch); }); }; for (var i = 0; i < len; i += 1) { _loop_1(i); } } function triggerListenerFn(db, path, fnId, patch) { if (patch === void 0) { patch = []; } setImmediate(function () { callNode(db, path, fnId, patch); }); } exports.triggerListenerFn = triggerListenerFn; exports.default = triggerListener; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlckxpc3RlbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZuL3RyaWdnZXJMaXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3QkFBc0I7QUFDdEIsa0RBQTZDO0FBQzdDLHVFQUFpRDtBQUNqRCwyREFBcUM7QUFDckMscURBQW9EO0FBQ3BELDhDQUF3QjtBQUV4QixtREFBa0Q7QUFFbEQsU0FBUyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBbUI7SUFBbkIsc0JBQUEsRUFBQSxVQUFtQjtJQUNoRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNqQyxPQUFPO0tBQ1I7SUFFRCxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25CLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDN0IsSUFBSSxVQUFVLEdBQUcsSUFBQSwrQkFBYyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRDLHlEQUF5RDtJQUN6RCxvRUFBb0U7SUFDcEUsSUFDRSxVQUFVO1FBQ1YsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNSLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTTtRQUN0QixJQUFBLCtCQUFjLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUM3QjtRQUNBLE9BQU87S0FDUjtJQUVELElBQUksR0FBRyxHQUFHLElBQUEsaUNBQWUsRUFBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxP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