Skip to content

Commit f16175f

Browse files
committed
fix: parse RegExp more strict
remove to-regex
1 parent b678e75 commit f16175f

File tree

8 files changed

+26
-106
lines changed

8 files changed

+26
-106
lines changed

package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@
7272
"escape-string-regexp": "^2.0.0",
7373
"lodash.sortby": "^4.7.0",
7474
"lodash.uniq": "^4.5.0",
75-
"lodash.uniqwith": "^4.5.0",
76-
"to-regex": "^3.0.2"
75+
"lodash.uniqwith": "^4.5.0"
7776
}
7877
}

src/regexp-parse.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#advanced_searching_with_flags
2-
const REGEXP_LITERAL_PATTERN = /^\/(.*)\/([guimysd]*)$/;
2+
const REGEXP_LITERAL_PATTERN = /^\/(.+)\/([guimysd]*)$/;
33
export const parseRegExpString = (str: string): { source: string; flagString: string } | null => {
44
const result = str.match(REGEXP_LITERAL_PATTERN);
55
if (!result) {

src/regexp-string-matcher.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import uniqWith from "lodash.uniqwith";
33
import sortBy from "lodash.sortby";
44
import escapeStringRegexp from "escape-string-regexp";
55
import { isRegExpString, parseRegExpString } from "./regexp-parse";
6-
import toRegex from "to-regex";
76

87
const DEFAULT_FLAGS = "ug";
98

@@ -30,10 +29,7 @@ export const createRegExp = (patternString: string, defaultFlag: string = DEFAUL
3029
if (isRegExpString(patternString)) {
3130
const regExpStructure = parseRegExpString(patternString);
3231
if (regExpStructure) {
33-
return toRegex(regExpStructure.source, {
34-
flags: defaultFlags(regExpStructure.flagString),
35-
contains: true
36-
});
32+
return new RegExp(regExpStructure.source, defaultFlags(regExpStructure.flagString));
3733
}
3834
throw new Error(`"${patternString}" can not parse as RegExp.`);
3935
} else {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[
2+
"/TODO \\[Issue #\\d+\\]:/i"
3+
]
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
TODO [Issue #1]: it will be fixed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
- match text: **TODO [Issue #1]:**
3+
- captures: **[]**
4+
- startIndex: **0**
5+
- endIndex: **16**
6+
7+
```
8+
**TODO [Issue #1]:** it will be fixed
9+
10+
```
11+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[
2+
{
3+
"match": "TODO [Issue #1]:",
4+
"captures": [],
5+
"startIndex": 0,
6+
"endIndex": 16
7+
}
8+
]

yarn.lock

-98
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,6 @@ argparse@^2.0.1:
183183
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
184184
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
185185

186-
assign-symbols@^1.0.0:
187-
version "1.0.0"
188-
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
189-
integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
190-
191186
astral-regex@^2.0.0:
192187
version "2.0.0"
193188
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
@@ -376,14 +371,6 @@ decamelize@^4.0.0:
376371
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
377372
integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
378373

379-
define-property@^2.0.2:
380-
version "2.0.2"
381-
resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
382-
integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
383-
dependencies:
384-
is-descriptor "^1.0.2"
385-
isobject "^3.0.1"
386-
387374
diff@5.0.0:
388375
version "5.0.0"
389376
resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
@@ -451,14 +438,6 @@ execa@^5.1.1:
451438
signal-exit "^3.0.3"
452439
strip-final-newline "^2.0.0"
453440

454-
extend-shallow@^3.0.2:
455-
version "3.0.2"
456-
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
457-
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
458-
dependencies:
459-
assign-symbols "^1.0.0"
460-
is-extendable "^1.0.1"
461-
462441
fill-range@^7.0.1:
463442
version "7.0.1"
464443
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -573,13 +552,6 @@ inherits@2:
573552
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
574553
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
575554

576-
is-accessor-descriptor@^1.0.0:
577-
version "1.0.0"
578-
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
579-
integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
580-
dependencies:
581-
kind-of "^6.0.0"
582-
583555
is-arrayish@^0.2.1:
584556
version "0.2.1"
585557
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -599,29 +571,6 @@ is-core-module@^2.8.1:
599571
dependencies:
600572
has "^1.0.3"
601573

602-
is-data-descriptor@^1.0.0:
603-
version "1.0.0"
604-
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
605-
integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
606-
dependencies:
607-
kind-of "^6.0.0"
608-
609-
is-descriptor@^1.0.2:
610-
version "1.0.2"
611-
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
612-
integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
613-
dependencies:
614-
is-accessor-descriptor "^1.0.0"
615-
is-data-descriptor "^1.0.0"
616-
kind-of "^6.0.2"
617-
618-
is-extendable@^1.0.1:
619-
version "1.0.1"
620-
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
621-
integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
622-
dependencies:
623-
is-plain-object "^2.0.4"
624-
625574
is-extglob@^2.1.1:
626575
version "2.1.1"
627576
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -654,13 +603,6 @@ is-plain-obj@^2.1.0:
654603
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
655604
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
656605

657-
is-plain-object@^2.0.4:
658-
version "2.0.4"
659-
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
660-
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
661-
dependencies:
662-
isobject "^3.0.1"
663-
664606
is-stream@^2.0.0:
665607
version "2.0.1"
666608
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
@@ -676,11 +618,6 @@ isexe@^2.0.0:
676618
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
677619
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
678620

679-
isobject@^3.0.1:
680-
version "3.0.1"
681-
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
682-
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
683-
684621
js-tokens@^4.0.0:
685622
version "4.0.0"
686623
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -698,11 +635,6 @@ json-parse-even-better-errors@^2.3.0:
698635
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
699636
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
700637

701-
kind-of@^6.0.0, kind-of@^6.0.2:
702-
version "6.0.3"
703-
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
704-
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
705-
706638
lilconfig@2.0.4:
707639
version "2.0.4"
708640
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
@@ -998,14 +930,6 @@ readdirp@~3.6.0:
998930
dependencies:
999931
picomatch "^2.2.1"
1000932

1001-
regex-not@^1.0.2:
1002-
version "1.0.2"
1003-
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
1004-
integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
1005-
dependencies:
1006-
extend-shallow "^3.0.2"
1007-
safe-regex "^1.1.0"
1008-
1009933
require-directory@^2.1.1:
1010934
version "2.1.1"
1011935
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -1028,11 +952,6 @@ restore-cursor@^3.1.0:
1028952
onetime "^5.1.0"
1029953
signal-exit "^3.0.2"
1030954

1031-
ret@~0.1.10:
1032-
version "0.1.15"
1033-
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
1034-
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
1035-
1036955
rfdc@^1.3.0:
1037956
version "1.3.0"
1038957
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
@@ -1050,13 +969,6 @@ safe-buffer@^5.1.0:
1050969
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1051970
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1052971

1053-
safe-regex@^1.1.0:
1054-
version "1.1.0"
1055-
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
1056-
integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
1057-
dependencies:
1058-
ret "~0.1.10"
1059-
1060972
"semver@2 || 3 || 4 || 5":
1061973
version "5.7.1"
1062974
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -1228,16 +1140,6 @@ to-regex-range@^5.0.1:
12281140
dependencies:
12291141
is-number "^7.0.0"
12301142

1231-
to-regex@^3.0.2:
1232-
version "3.0.2"
1233-
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
1234-
integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
1235-
dependencies:
1236-
define-property "^2.0.2"
1237-
extend-shallow "^3.0.2"
1238-
regex-not "^1.0.2"
1239-
safe-regex "^1.1.0"
1240-
12411143
ts-node-test-register@^10.0.0:
12421144
version "10.0.0"
12431145
resolved "https://registry.yarnpkg.com/ts-node-test-register/-/ts-node-test-register-10.0.0.tgz#eb8cbe40954331f2f70c8e5fb83c677965ac14f9"

0 commit comments

Comments
 (0)