WebUI: add linting for regular expressions

And applies to following suggestions:
* Use case-insensitive flag `i`
* Use `\w` for matching characters
* Sort the regex flags
This commit is contained in:
Chocobo1 2024-04-30 01:10:00 +08:00
parent e2d6cd31b2
commit 6231208ddf
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
4 changed files with 7 additions and 3 deletions

View file

@ -2,9 +2,11 @@ import Globals from 'globals';
import Html from 'eslint-plugin-html';
import Js from '@eslint/js';
import Stylistic from '@stylistic/eslint-plugin';
import * as RegexpPlugin from 'eslint-plugin-regexp';
export default [
Js.configs.recommended,
RegexpPlugin.configs["flat/recommended"],
Stylistic.configs["disable-legacy"],
{
files: [
@ -20,6 +22,7 @@ export default [
},
plugins: {
Html,
RegexpPlugin,
Stylistic
},
rules: {

View file

@ -14,6 +14,7 @@
"@stylistic/eslint-plugin": "*",
"eslint": "*",
"eslint-plugin-html": "*",
"eslint-plugin-regexp": "*",
"html-validate": "*",
"i18next-parser": "*",
"js-beautify": "*",

View file

@ -1527,8 +1527,8 @@ window.addEventListener("DOMContentLoaded", function() {
return lowercaseStr.startsWith("http:")
|| lowercaseStr.startsWith("https:")
|| lowercaseStr.startsWith("magnet:")
|| ((str.length === 40) && !(/[^0-9A-Fa-f]/.test(str))) // v1 hex-encoded SHA-1 info-hash
|| ((str.length === 32) && !(/[^2-7A-Za-z]/.test(str))); // v1 Base32 encoded SHA-1 info-hash
|| ((str.length === 40) && !(/[^0-9A-F]/i.test(str))) // v1 hex-encoded SHA-1 info-hash
|| ((str.length === 32) && !(/[^2-7A-Z]/i.test(str))); // v1 Base32 encoded SHA-1 info-hash
});
if (urls.length <= 0)

View file

@ -143,7 +143,7 @@ window.qBittorrent.Misc = (function() {
* JS counterpart of the function in src/misc.cpp
*/
const parseHtmlLinks = function(text) {
const exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/ig;
const exp = /(\b(https?|ftp|file):\/\/[-\w+&@#/%?=~|!:,.;]*[-\w+&@#/%=~|])/gi;
return text.replace(exp, "<a target='_blank' rel='noopener noreferrer' href='$1'>$1</a>");
};