@c11/engine.db
Version:
The engine db
87 lines • 6.78 kB
JavaScript
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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
;