[bugfix] Use re2 syntax for regex validation (#2978)
This commit is contained in:
parent
ce3b8aacf7
commit
048339a6aa
|
@ -27,6 +27,7 @@
|
||||||
"photoswipe-dynamic-caption-plugin": "^1.2.7",
|
"photoswipe-dynamic-caption-plugin": "^1.2.7",
|
||||||
"plyr": "^3.7.8",
|
"plyr": "^3.7.8",
|
||||||
"psl": "^1.9.0",
|
"psl": "^1.9.0",
|
||||||
|
"re2js": "^0.4.1",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-redux": "^8.1.3",
|
"react-redux": "^8.1.3",
|
||||||
|
|
|
@ -24,6 +24,7 @@ import useFormSubmit from "../../../lib/form/submit";
|
||||||
import { TextInput } from "../../../components/form/inputs";
|
import { TextInput } from "../../../components/form/inputs";
|
||||||
import MutationButton from "../../../components/form/mutation-button";
|
import MutationButton from "../../../components/form/mutation-button";
|
||||||
import { PermType } from "../../../lib/types/perm";
|
import { PermType } from "../../../lib/types/perm";
|
||||||
|
import { RE2JS } from "re2js";
|
||||||
|
|
||||||
export default function HeaderPermCreateForm({ permType }: { permType: PermType }) {
|
export default function HeaderPermCreateForm({ permType }: { permType: PermType }) {
|
||||||
const form = {
|
const form = {
|
||||||
|
@ -56,7 +57,7 @@ export default function HeaderPermCreateForm({ permType }: { permType: PermType
|
||||||
|
|
||||||
// Ensure regex compiles.
|
// Ensure regex compiles.
|
||||||
try {
|
try {
|
||||||
new RegExp(val);
|
RE2JS.compile(val);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
@ -116,14 +117,14 @@ export default function HeaderPermCreateForm({ permType }: { permType: PermType
|
||||||
field={form.regex}
|
field={form.regex}
|
||||||
label={
|
label={
|
||||||
<>
|
<>
|
||||||
HTTP Header Value Regex
|
HTTP Header Value RE2 Regex
|
||||||
<a
|
<a
|
||||||
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions"
|
href="https://github.com/google/re2/wiki/Syntax"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
className="docslink"
|
className="docslink"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
Learn more about regular expressions (opens in a new tab)
|
Learn more about RE2 regular expressions (opens in a new tab)
|
||||||
</a>
|
</a>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,7 +154,7 @@ function PermDeets({
|
||||||
// with this regular expression prepopulated.
|
// with this regular expression prepopulated.
|
||||||
const testParams = new URLSearchParams();
|
const testParams = new URLSearchParams();
|
||||||
testParams.set("regex", perm.regex);
|
testParams.set("regex", perm.regex);
|
||||||
testParams.set("flags", "g");
|
testParams.set("flags", "gm");
|
||||||
testParams.set("testString", testString);
|
testParams.set("testString", testString);
|
||||||
const regexLink = `https://regex101.com/?${testParams.toString()}`;
|
const regexLink = `https://regex101.com/?${testParams.toString()}`;
|
||||||
|
|
||||||
|
|
|
@ -5513,6 +5513,11 @@ raw-body@~1.1.0:
|
||||||
bytes "1"
|
bytes "1"
|
||||||
string_decoder "0.10"
|
string_decoder "0.10"
|
||||||
|
|
||||||
|
re2js@^0.4.1:
|
||||||
|
version "0.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/re2js/-/re2js-0.4.1.tgz#74a87a90b79ab5dc1effed818151354c8faccb3d"
|
||||||
|
integrity sha512-Kxb+OKXrEPowP4bXAF07NDXtgYX07S8HeVGgadx5/D/R41LzWg1kgTD2szIv2iHJM3vrAPnDKaBzfUE/7QWX9w==
|
||||||
|
|
||||||
react-dom@^18.2.0:
|
react-dom@^18.2.0:
|
||||||
version "18.2.0"
|
version "18.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
|
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
|
||||||
|
|
Loading…
Reference in New Issue