UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

81 lines (80 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processRuleCfg = exports.getChartRules = exports.getChartRule = exports.builtInRules = void 0; var tslib_1 = require("tslib"); var rules_1 = require("./rules"); exports.builtInRules = Object.keys(rules_1.rules); /** * * @param id rule id * @returns the rule object or null if `id` not exist in built-in rules */ var getChartRule = function (id) { if (Object.keys(rules_1.rules).includes(id)) { return rules_1.rules[id]; } return null; }; exports.getChartRule = getChartRule; /** * * @param ids rule list * @returns rule object list */ var getChartRules = function (ids) { var chartRules = {}; ids.forEach(function (id) { if (Object.keys(rules_1.rules).includes(id)) { chartRules[id] = rules_1.rules[id]; } }); return chartRules; }; exports.getChartRules = getChartRules; /** * processing ckb config and setup ckb used for advising * @param ruleCfg rule configuration * @returns rule base Record<string, RuleModule> */ var processRuleCfg = function (ruleCfg) { if (!ruleCfg) { // no specific rule configuration -> return default rules return (0, exports.getChartRules)(exports.builtInRules); } // step 1: remove excluded rule var ruleBase = (0, exports.getChartRules)(exports.builtInRules); if (ruleCfg.exclude) { // have `exclude` definition var toExclude = ruleCfg.exclude; toExclude.forEach(function (id) { if (Object.keys(ruleBase).includes(id)) { delete ruleBase[id]; } }); } // step 2: remove rules that are not included if (ruleCfg.include) { var toInclude_1 = ruleCfg.include; Object.keys(ruleBase).forEach(function (id) { if (!toInclude_1.includes(id)) { delete ruleBase[id]; } }); } // step 3: combine ruleBase and custom rules var finalRuleBase = tslib_1.__assign(tslib_1.__assign({}, ruleBase), ruleCfg.custom); // step 4: check options var options = ruleCfg.options; if (options) { var ruleWithOption = Object.keys(options); ruleWithOption.forEach(function (rule) { if (Object.keys(finalRuleBase).includes(rule)) { var ruleOption = options[rule]; finalRuleBase[rule] = tslib_1.__assign(tslib_1.__assign({}, finalRuleBase[rule]), { option: ruleOption }); } }); } return finalRuleBase; }; exports.processRuleCfg = processRuleCfg; tslib_1.__exportStar(require("./types"), exports);