#2219 Validating directives agains list of legal configuration keys

This commit is contained in:
Knut Sveidqvist 2021-08-05 01:05:34 +02:00
parent 711fb7d748
commit 37fae09ce4
2 changed files with 26 additions and 10 deletions

View File

@ -1142,4 +1142,15 @@ top of the chart
config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
config.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
const keyify = (obj, prefix = '') =>
Object.keys(obj).reduce((res, el) => {
if( Array.isArray(obj[el]) ) {
return res;
} else if( typeof obj[el] === 'object' && obj[el] !== null ) {
return [...res, prefix + el, ...keyify(obj[el],'')];
}
return [...res, prefix + el];
}, []);
export const configKeys = keyify(config, '');
export default config;

View File

@ -14,6 +14,7 @@ import {
select,
} from 'd3';
import common from './diagrams/common/common';
import { configKeys } from './defaultConfig';
import { log } from './logger';
// Effectively an enum of the supported curve types, accessible by name
@ -73,18 +74,22 @@ export const detectInit = function (text, cnf) {
let args = inits.map((init) => init.args);
Object.keys(args).forEach((argKey) => {
Object.keys(args[argKey]).forEach((key) => {
if (key.indexOf('__') === 0) {
log.debug('sanitize deleting prototype option', args[key]);
delete args[argKey][key];
}
// if (key.indexOf('__') === 0) {
// log.debug('sanitize deleting prototype option', args[key]);
// delete args[argKey][key];
// }
if (key.indexOf('proto') >= 0) {
log.debug('sanitize deleting prototype option', args[key]);
delete args[argKey][key];
}
// if (key.indexOf('proto') >= 0) {
// log.debug('sanitize deleting prototype option', args[key]);
// delete args[argKey][key];
// }
if (key.indexOf('constr') >= 0) {
log.debug('sanitize deleting prototype option', args[key]);
// if (key.indexOf('constr') >= 0) {
// log.debug('sanitize deleting prototype option', args[key]);
// delete args[argKey][key];
// }
if(configKeys.indexOf(key)<0) {
log.debug('sanitize deleting option', args[argKey][key]);
delete args[argKey][key];
}
});