@c11/engine.db
Version:
The engine db
115 lines • 9.01 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var flattenDeep_1 = __importDefault(require("lodash/flattenDeep"));
var uniq_1 = __importDefault(require("uniq"));
var decomposePath_1 = __importDefault(require("./decomposePath"));
var shouldUpdate = function (source, path) {
var result = false;
if (path.substr(0, source.length) === source ||
source.substr(0, path.length) === path) {
result = true;
}
return result;
};
var isNestedDynamic = function (db, source, path) {
return Object.keys(db.dynamic.fullDeps).some(function (x) {
if (path.substr(0, x.length) === x) {
return db.dynamic.fullDeps[x].some(function (y) {
return source.substr(0, y.length) === y;
});
}
});
};
var isValueInWildcard = function (value, parts) {
if (value === void 0) { value = {}; }
if (parts === void 0) { parts = []; }
var val = value;
for (var i = 0; i < parts.length - 1; i += 1) {
if (!val[parts[i]]) {
return false;
}
val = val[parts[i]];
}
return true;
};
var isWildcardTrigger = function (source, path, value) {
if (!path.includes("*")) {
return false;
}
var sourceParts = source.split("/");
sourceParts.shift();
var pathParts = path.split("/");
pathParts.shift();
for (var i = 0; i < pathParts.length - 1; i += 1) {
var part = pathParts[i];
if (part === "*") {
if (i === sourceParts.length - 1 &&
pathParts.length > sourceParts.length) {
var result = isValueInWildcard(value, pathParts.splice(i + 1, pathParts.length - 1));
return result;
}
else {
return true;
}
}
else if (sourceParts[i] !== part) {
return false;
}
}
return true;
};
function pathTriggers(db, path, value) {
if (value === void 0) { value = undefined; }
var trigger = [];
var parts = (0, decomposePath_1.default)(path);
//@ts-ignore
parts.push(path);
parts.forEach(function (x) {
if (db.updates.triggers[x]) {
db.updates.triggers[x].forEach(function (y) {
if (db.dynamic.staticDeps[path]) {
var paths = db.dynamic.staticDeps[path];
paths.forEach(function (z) {
if (shouldUpdate(y, z)) {
trigger.push(y);
}
});
}
else if (shouldUpdate(path, y)) {
trigger.push(y);
}
else if (isNestedDynamic(db, path, y)) {
trigger.push(y);
}
else if (isWildcardTrigger(path, y, value)) {
trigger.push(y);
}
else {
// console.log("[excluding]", x, "for", y, "and", path);
}
});
}
});
// @TODO: Suboptimal way, this should be precompiled
var reg = new RegExp("^" + path, "g");
Object.keys(db.updates.triggers).forEach(function (x) {
if (x.search(reg) !== -1) {
db.updates.triggers[x].forEach(function (y) {
trigger.push(y);
});
}
});
var dep = db.dynamic.inverseDeps[path];
if (dep) {
trigger = trigger.concat(dep);
}
trigger = (0, flattenDeep_1.default)(trigger);
trigger.push(path);
trigger = (0, uniq_1.default)(trigger);
return trigger;
}
exports.default = pathTriggers;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aFRyaWdnZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZuL3BhdGhUcmlnZ2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1FQUF5QztBQUN6Qyw4Q0FBd0I7QUFDeEIsa0VBQTRDO0FBRTVDLElBQU0sWUFBWSxHQUFHLFVBQUMsTUFBYyxFQUFFLElBQVk7SUFDaEQsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRW5CLElBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLE1BQU07UUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFDdEM7UUFDQSxNQUFNLEdBQUcsSUFBSSxDQUFDO0tBQ2Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixJQUFNLGVBQWUsR0FBRyxVQUFDLEVBQU8sRUFBRSxNQUFjLEVBQUUsSUFBWTtJQUM1RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUM7Z0JBQ25DLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixJQUFNLGlCQUFpQixHQUFHLFVBQUMsS0FB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
;