Skip to content

Commit 16051cc

Browse files
authored
fix: remove regexp lookbehind usage COMPASS-5738 (#25)
1 parent d78e355 commit 16051cc

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

src/redact.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,23 @@ export function redactConnectionString(
5454
return parsed.redact(options).toString().replace(/___credentials___/g, replacementString);
5555
}
5656

57-
const regexes: (RegExp | null)[] = [
57+
// Note: The regexes here used to use lookbehind assertions, but we dropped that since
58+
// we need to support older browsers here.
59+
const R = replacementString; // alias for conciseness
60+
const replacements: ((uri: string) => string)[] = [
5861
// Username and password
59-
redactUsernames ? /(?<=\/\/)(.*)(?=@)/g : /(?<=\/\/[^@]+:)(.*)(?=@)/g,
62+
uri => uri.replace(redactUsernames ? /(\/\/)(.*)(@)/g : /(\/\/[^@]+:)(.*)(@)/g, `$1${R}$3`),
6063
// AWS IAM Session Token as part of query parameter
61-
/(?<=AWS_SESSION_TOKEN(:|%3A))([^,&]+)/gi,
64+
uri => uri.replace(/(AWS_SESSION_TOKEN(:|%3A))([^,&]+)/gi, `$1${R}`),
6265
// tlsCertificateKeyFilePassword query parameter
63-
/(?<=tlsCertificateKeyFilePassword=)([^&]+)/gi,
66+
uri => uri.replace(/(tlsCertificateKeyFilePassword=)([^&]+)/gi, `$1${R}`),
6467
// proxyUsername query parameter
65-
redactUsernames ? /(?<=proxyUsername=)([^&]+)/gi : null,
68+
uri => redactUsernames ? uri.replace(/(proxyUsername=)([^&]+)/gi, `$1${R}`) : uri,
6669
// proxyPassword query parameter
67-
/(?<=proxyPassword=)([^&]+)/gi
70+
uri => uri.replace(/(proxyPassword=)([^&]+)/gi, `$1${R}`)
6871
];
69-
for (const r of regexes) {
70-
if (r !== null) {
71-
uri = uri.replace(r, replacementString);
72-
}
72+
for (const replacer of replacements) {
73+
uri = replacer(uri);
7374
}
7475
return uri;
7576
}

0 commit comments

Comments
 (0)