Skip to content

Commit f8eac24

Browse files
Make regexes instantiate only once
1 parent 7397fb1 commit f8eac24

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/services/semver.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@ namespace ts {
88
return n;
99
}
1010

11+
const isPrereleaseRegex = /^(.*)-next.\d+/;
12+
const prereleaseSemverRegex = /^(\d+)\.(\d+)\.0-next.(\d+)$/;
13+
const semverRegex = /^(\d+)\.(\d+)\.(\d+)$/;
14+
1115
export class Semver {
1216
static parse(semver: string): Semver {
13-
const isPrerelease = /^(.*)-next.\d+/.test(semver);
17+
const isPrerelease = isPrereleaseRegex.test(semver);
1418
const result = Semver.tryParse(semver, isPrerelease);
1519
if (!result) {
1620
throw new Error(`Unexpected semver: ${semver} (isPrerelease: ${isPrerelease})`);
@@ -26,7 +30,7 @@ namespace ts {
2630
private static tryParse(semver: string, isPrerelease: boolean): Semver | undefined {
2731
// Per the semver spec <http://semver.org/#spec-item-2>:
2832
// "A normal version number MUST take the form X.Y.Z where X, Y, and Z are non-negative integers, and MUST NOT contain leading zeroes."
29-
const rgx = isPrerelease ? /^(\d+)\.(\d+)\.0-next.(\d+)$/ : /^(\d+)\.(\d+)\.(\d+)$/;
33+
const rgx = isPrerelease ? prereleaseSemverRegex : semverRegex;
3034
const match = rgx.exec(semver);
3135
return match ? new Semver(stringToInt(match[1]), stringToInt(match[2]), stringToInt(match[3]), isPrerelease) : undefined;
3236
}

0 commit comments

Comments
 (0)