diff options
Diffstat (limited to 'src/shared/validators')
-rw-r--r-- | src/shared/validators/setting.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/shared/validators/setting.js b/src/shared/validators/setting.js index 0b853a8..caba5cc 100644 --- a/src/shared/validators/setting.js +++ b/src/shared/validators/setting.js @@ -23,11 +23,39 @@ const validateKeymaps = (keymaps) => { } }; +const validateSearch = (search) => { + let engines = search.engines; + for (let key of Object.keys(engines)) { + if (/\s/.test(key)) { + throw new Error( + `While space in search engine name is not allowed: "${key}"` + ); + } + let url = engines[key]; + if (!url.match(/{}/)) { + throw new Error(`No {}-placeholders in URL of "${key}"`); + } + if (url.match(/{}/g).length > 1) { + throw new Error(`Multiple {}-placeholders in URL of "${key}"`); + } + } + + if (!search.default) { + throw new Error(`Default engine is not set`); + } + if (!Object.keys(engines).includes(search.default)) { + throw new Error(`Default engine "${search.default}" not found`); + } +}; + const validate = (settings) => { validateInvalidTopKeys(settings); if (settings.keymaps) { validateKeymaps(settings.keymaps); } + if (settings.search) { + validateSearch(settings.search); + } }; export { validate }; |