diff --git a/package.json b/package.json
index 064d3f5..d04c7b0 100644
--- a/package.json
+++ b/package.json
@@ -13049,7 +13049,6 @@
"iconv-lite": "0.6.3",
"lit": "2.6.1",
"lodash-es": "4.17.21",
- "md5.js": "1.3.5",
"node-fetch": "2.6.9",
"os-browserify": "0.3.0",
"path-browserify": "1.0.1",
diff --git a/src/@types/md5.js.d.ts b/src/@types/md5.js.d.ts
deleted file mode 100644
index 39670ba..0000000
--- a/src/@types/md5.js.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-///
-
-declare module 'md5.js' {
- import type { Hash } from 'crypto';
-
- export = MD5;
-
- interface MD5 extends Hash {
- new (): MD5;
- }
-
- declare const MD5: MD5;
-}
diff --git a/src/avatars.ts b/src/avatars.ts
index c7ae870..5db485d 100644
--- a/src/avatars.ts
+++ b/src/avatars.ts
@@ -1,4 +1,5 @@
import { EventEmitter, Uri } from 'vscode';
+import { md5 } from '@env/crypto';
import { GravatarDefaultStyle } from './config';
import { configuration } from './configuration';
import { ContextKeys } from './constants';
@@ -8,7 +9,7 @@ import { getGitHubNoReplyAddressParts } from './git/remotes/github';
import type { StoredAvatar } from './storage';
import { debounce } from './system/function';
import { filterMap } from './system/iterable';
-import { base64, equalsIgnoreCase, md5 } from './system/string';
+import { base64, equalsIgnoreCase } from './system/string';
import type { ContactPresenceStatus } from './vsls/vsls';
const maxSmallIntegerV8 = 2 ** 30; // Max number that can be stored in V8's smis (small integers)
@@ -121,7 +122,7 @@ function getAvatarUriCore(
return avatar.uri ?? avatar.fallback!;
}
- const hash = md5(email.trim().toLowerCase(), 'hex');
+ const hash = md5(email.trim().toLowerCase());
const key = `${hash}:${size}`;
const avatar = createOrUpdateAvatar(key, email, size, hash, options?.defaultStyle);
@@ -194,7 +195,7 @@ function getAvatarUriFromGravatar(hash: string, size: number, defaultStyle?: Gra
}
export function getAvatarUriFromGravatarEmail(email: string, size: number, defaultStyle?: GravatarDefaultStyle): Uri {
- return getAvatarUriFromGravatar(md5(email.trim().toLowerCase(), 'hex'), size, defaultStyle);
+ return getAvatarUriFromGravatar(md5(email.trim().toLowerCase()), size, defaultStyle);
}
function getAvatarUriFromGitHubNoReplyAddress(email: string, size: number = 16): Uri | undefined {
@@ -240,7 +241,7 @@ async function getAvatarUriFromRemoteProvider(
avatar.retries = 0;
if (account.email != null && equalsIgnoreCase(email, account.email)) {
- avatarCache.set(`${md5(account.email.trim().toLowerCase(), 'hex')}:${size}`, { ...avatar });
+ avatarCache.set(`${md5(account.email.trim().toLowerCase())}:${size}`, { ...avatar });
}
_onDidFetchAvatar.fire({ email: email });
diff --git a/src/env/browser/crypto.ts b/src/env/browser/crypto.ts
index 295f453..fbc0b16 100644
--- a/src/env/browser/crypto.ts
+++ b/src/env/browser/crypto.ts
@@ -1,12 +1,12 @@
-import MD5 from 'md5.js';
import { base64 } from './base64';
+import { md5 as _md5 } from './md5';
export function getNonce(): string {
return base64(globalThis.crypto.getRandomValues(new Uint8Array(16)));
}
-export function md5(data: string | Uint8Array, encoding: 'base64' | 'hex' = 'base64'): string {
- return new MD5().update(data).digest(encoding);
+export function md5(data: string, encoding: 'base64' | 'hex' = 'hex'): string {
+ return _md5(data, encoding);
}
export function uuid(): string {
diff --git a/src/env/browser/md5.ts b/src/env/browser/md5.ts
new file mode 100644
index 0000000..2434270
--- /dev/null
+++ b/src/env/browser/md5.ts
@@ -0,0 +1,215 @@
+// Adapted from http://www.myersdaily.org/joseph/javascript/md5-text.html
+function md5cycle(x: number[], k: number[]) {
+ let [a, b, c, d] = x;
+
+ a += (((b & c) | (~b & d)) + k[0] - 680876936) | 0;
+ a = (((a << 7) | (a >>> 25)) + b) | 0;
+ d += (((a & b) | (~a & c)) + k[1] - 389564586) | 0;
+ d = (((d << 12) | (d >>> 20)) + a) | 0;
+ c += (((d & a) | (~d & b)) + k[2] + 606105819) | 0;
+ c = (((c << 17) | (c >>> 15)) + d) | 0;
+ b += (((c & d) | (~c & a)) + k[3] - 1044525330) | 0;
+ b = (((b << 22) | (b >>> 10)) + c) | 0;
+ a += (((b & c) | (~b & d)) + k[4] - 176418897) | 0;
+ a = (((a << 7) | (a >>> 25)) + b) | 0;
+ d += (((a & b) | (~a & c)) + k[5] + 1200080426) | 0;
+ d = (((d << 12) | (d >>> 20)) + a) | 0;
+ c += (((d & a) | (~d & b)) + k[6] - 1473231341) | 0;
+ c = (((c << 17) | (c >>> 15)) + d) | 0;
+ b += (((c & d) | (~c & a)) + k[7] - 45705983) | 0;
+ b = (((b << 22) | (b >>> 10)) + c) | 0;
+ a += (((b & c) | (~b & d)) + k[8] + 1770035416) | 0;
+ a = (((a << 7) | (a >>> 25)) + b) | 0;
+ d += (((a & b) | (~a & c)) + k[9] - 1958414417) | 0;
+ d = (((d << 12) | (d >>> 20)) + a) | 0;
+ c += (((d & a) | (~d & b)) + k[10] - 42063) | 0;
+ c = (((c << 17) | (c >>> 15)) + d) | 0;
+ b += (((c & d) | (~c & a)) + k[11] - 1990404162) | 0;
+ b = (((b << 22) | (b >>> 10)) + c) | 0;
+ a += (((b & c) | (~b & d)) + k[12] + 1804603682) | 0;
+ a = (((a << 7) | (a >>> 25)) + b) | 0;
+ d += (((a & b) | (~a & c)) + k[13] - 40341101) | 0;
+ d = (((d << 12) | (d >>> 20)) + a) | 0;
+ c += (((d & a) | (~d & b)) + k[14] - 1502002290) | 0;
+ c = (((c << 17) | (c >>> 15)) + d) | 0;
+ b += (((c & d) | (~c & a)) + k[15] + 1236535329) | 0;
+ b = (((b << 22) | (b >>> 10)) + c) | 0;
+
+ a += (((b & d) | (c & ~d)) + k[1] - 165796510) | 0;
+ a = (((a << 5) | (a >>> 27)) + b) | 0;
+ d += (((a & c) | (b & ~c)) + k[6] - 1069501632) | 0;
+ d = (((d << 9) | (d >>> 23)) + a) | 0;
+ c += (((d & b) | (a & ~b)) + k[11] + 643717713) | 0;
+ c = (((c << 14) | (c >>> 18)) + d) | 0;
+ b += (((c & a) | (d & ~a)) + k[0] - 373897302) | 0;
+ b = (((b << 20) | (b >>> 12)) + c) | 0;
+ a += (((b & d) | (c & ~d)) + k[5] - 701558691) | 0;
+ a = (((a << 5) | (a >>> 27)) + b) | 0;
+ d += (((a & c) | (b & ~c)) + k[10] + 38016083) | 0;
+ d = (((d << 9) | (d >>> 23)) + a) | 0;
+ c += (((d & b) | (a & ~b)) + k[15] - 660478335) | 0;
+ c = (((c << 14) | (c >>> 18)) + d) | 0;
+ b += (((c & a) | (d & ~a)) + k[4] - 405537848) | 0;
+ b = (((b << 20) | (b >>> 12)) + c) | 0;
+ a += (((b & d) | (c & ~d)) + k[9] + 568446438) | 0;
+ a = (((a << 5) | (a >>> 27)) + b) | 0;
+ d += (((a & c) | (b & ~c)) + k[14] - 1019803690) | 0;
+ d = (((d << 9) | (d >>> 23)) + a) | 0;
+ c += (((d & b) | (a & ~b)) + k[3] - 187363961) | 0;
+ c = (((c << 14) | (c >>> 18)) + d) | 0;
+ b += (((c & a) | (d & ~a)) + k[8] + 1163531501) | 0;
+ b = (((b << 20) | (b >>> 12)) + c) | 0;
+ a += (((b & d) | (c & ~d)) + k[13] - 1444681467) | 0;
+ a = (((a << 5) | (a >>> 27)) + b) | 0;
+ d += (((a & c) | (b & ~c)) + k[2] - 51403784) | 0;
+ d = (((d << 9) | (d >>> 23)) + a) | 0;
+ c += (((d & b) | (a & ~b)) + k[7] + 1735328473) | 0;
+ c = (((c << 14) | (c >>> 18)) + d) | 0;
+ b += (((c & a) | (d & ~a)) + k[12] - 1926607734) | 0;
+ b = (((b << 20) | (b >>> 12)) + c) | 0;
+
+ a += ((b ^ c ^ d) + k[5] - 378558) | 0;
+ a = (((a << 4) | (a >>> 28)) + b) | 0;
+ d += ((a ^ b ^ c) + k[8] - 2022574463) | 0;
+ d = (((d << 11) | (d >>> 21)) + a) | 0;
+ c += ((d ^ a ^ b) + k[11] + 1839030562) | 0;
+ c = (((c << 16) | (c >>> 16)) + d) | 0;
+ b += ((c ^ d ^ a) + k[14] - 35309556) | 0;
+ b = (((b << 23) | (b >>> 9)) + c) | 0;
+ a += ((b ^ c ^ d) + k[1] - 1530992060) | 0;
+ a = (((a << 4) | (a >>> 28)) + b) | 0;
+ d += ((a ^ b ^ c) + k[4] + 1272893353) | 0;
+ d = (((d << 11) | (d >>> 21)) + a) | 0;
+ c += ((d ^ a ^ b) + k[7] - 155497632) | 0;
+ c = (((c << 16) | (c >>> 16)) + d) | 0;
+ b += ((c ^ d ^ a) + k[10] - 1094730640) | 0;
+ b = (((b << 23) | (b >>> 9)) + c) | 0;
+ a += ((b ^ c ^ d) + k[13] + 681279174) | 0;
+ a = (((a << 4) | (a >>> 28)) + b) | 0;
+ d += ((a ^ b ^ c) + k[0] - 358537222) | 0;
+ d = (((d << 11) | (d >>> 21)) + a) | 0;
+ c += ((d ^ a ^ b) + k[3] - 722521979) | 0;
+ c = (((c << 16) | (c >>> 16)) + d) | 0;
+ b += ((c ^ d ^ a) + k[6] + 76029189) | 0;
+ b = (((b << 23) | (b >>> 9)) + c) | 0;
+ a += ((b ^ c ^ d) + k[9] - 640364487) | 0;
+ a = (((a << 4) | (a >>> 28)) + b) | 0;
+ d += ((a ^ b ^ c) + k[12] - 421815835) | 0;
+ d = (((d << 11) | (d >>> 21)) + a) | 0;
+ c += ((d ^ a ^ b) + k[15] + 530742520) | 0;
+ c = (((c << 16) | (c >>> 16)) + d) | 0;
+ b += ((c ^ d ^ a) + k[2] - 995338651) | 0;
+ b = (((b << 23) | (b >>> 9)) + c) | 0;
+
+ a += ((c ^ (b | ~d)) + k[0] - 198630844) | 0;
+ a = (((a << 6) | (a >>> 26)) + b) | 0;
+ d += ((b ^ (a | ~c)) + k[7] + 1126891415) | 0;
+ d = (((d << 10) | (d >>> 22)) + a) | 0;
+ c += ((a ^ (d | ~b)) + k[14] - 1416354905) | 0;
+ c = (((c << 15) | (c >>> 17)) + d) | 0;
+ b += ((d ^ (c | ~a)) + k[5] - 57434055) | 0;
+ b = (((b << 21) | (b >>> 11)) + c) | 0;
+ a += ((c ^ (b | ~d)) + k[12] + 1700485571) | 0;
+ a = (((a << 6) | (a >>> 26)) + b) | 0;
+ d += ((b ^ (a | ~c)) + k[3] - 1894986606) | 0;
+ d = (((d << 10) | (d >>> 22)) + a) | 0;
+ c += ((a ^ (d | ~b)) + k[10] - 1051523) | 0;
+ c = (((c << 15) | (c >>> 17)) + d) | 0;
+ b += ((d ^ (c | ~a)) + k[1] - 2054922799) | 0;
+ b = (((b << 21) | (b >>> 11)) + c) | 0;
+ a += ((c ^ (b | ~d)) + k[8] + 1873313359) | 0;
+ a = (((a << 6) | (a >>> 26)) + b) | 0;
+ d += ((b ^ (a | ~c)) + k[15] - 30611744) | 0;
+ d = (((d << 10) | (d >>> 22)) + a) | 0;
+ c += ((a ^ (d | ~b)) + k[6] - 1560198380) | 0;
+ c = (((c << 15) | (c >>> 17)) + d) | 0;
+ b += ((d ^ (c | ~a)) + k[13] + 1309151649) | 0;
+ b = (((b << 21) | (b >>> 11)) + c) | 0;
+ a += ((c ^ (b | ~d)) + k[4] - 145523070) | 0;
+ a = (((a << 6) | (a >>> 26)) + b) | 0;
+ d += ((b ^ (a | ~c)) + k[11] - 1120210379) | 0;
+ d = (((d << 10) | (d >>> 22)) + a) | 0;
+ c += ((a ^ (d | ~b)) + k[2] + 718787259) | 0;
+ c = (((c << 15) | (c >>> 17)) + d) | 0;
+ b += ((d ^ (c | ~a)) + k[9] - 343485551) | 0;
+ b = (((b << 21) | (b >>> 11)) + c) | 0;
+
+ x[0] = (a + x[0]) | 0;
+ x[1] = (b + x[1]) | 0;
+ x[2] = (c + x[2]) | 0;
+ x[3] = (d + x[3]) | 0;
+}
+
+function md5blk(s: string) {
+ const md5blks: number[] = [];
+ /* Andy King said do it this way. */
+
+ for (let i = 0; i < 64; i += 4) {
+ md5blks[i >> 2] =
+ s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);
+ }
+ return md5blks;
+}
+
+function md51(s: string) {
+ const n = s.length;
+ let state = [1732584193, -271733879, -1732584194, 271733878];
+
+ let i;
+ for (i = 64; i <= n; i += 64) {
+ md5cycle(state, md5blk(s.substring(i - 64, i)));
+ }
+ s = s.substring(i - 64);
+ let length = s.length;
+ let tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+ for (i = 0; i < length; i += 1) {
+ tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);
+ }
+ tail[i >> 2] |= 0x80 << (i % 4 << 3);
+ if (i > 55) {
+ md5cycle(state, tail);
+ for (i = 0; i < 16; i += 1) {
+ tail[i] = 0;
+ }
+ }
+
+ // Beware that the final length might not fit in 32 bits so we take care of that
+ const tmp = (n * 8).toString(16).match(/(.*?)(.{0,8})$/)!;
+ const lo = parseInt(tmp[2], 16);
+ const hi = parseInt(tmp[1], 16) || 0;
+
+ tail[14] = lo;
+ tail[15] = hi;
+
+ md5cycle(state, tail);
+ return state;
+}
+
+const hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
+function rhex(n: number) {
+ let s = '';
+ for (let j = 0; j < 4; j += 1) {
+ s += hex_chr[(n >> (j * 8 + 4)) & 0x0f] + hex_chr[(n >> (j * 8)) & 0x0f];
+ }
+ return s;
+}
+
+function hex(x: number[]) {
+ return x.map(rhex).join('');
+}
+
+function hexToBinary(hex: string) {
+ const bytes: number[] = [];
+ const length = hex.length;
+
+ for (let x = 0; x < length - 1; x += 2) {
+ bytes.push(parseInt(hex.substr(x, 2), 16));
+ }
+
+ return String.fromCharCode.apply(String, bytes);
+}
+
+export function md5(s: string, encoding: 'base64' | 'hex' = 'hex') {
+ const h = hex(md51(s));
+ return encoding === 'hex' ? h : btoa(hexToBinary(h));
+}
diff --git a/src/env/node/crypto.ts b/src/env/node/crypto.ts
index 1cf1056..9f88daa 100644
--- a/src/env/node/crypto.ts
+++ b/src/env/node/crypto.ts
@@ -4,7 +4,7 @@ export function getNonce(): string {
return randomBytes(16).toString('base64');
}
-export function md5(data: string | Uint8Array, encoding: 'base64' | 'hex' = 'base64'): string {
+export function md5(data: string, encoding: 'base64' | 'hex' = 'hex'): string {
return createHash('md5').update(data).digest(encoding);
}
diff --git a/src/env/node/git/localGitProvider.ts b/src/env/node/git/localGitProvider.ts
index e49f9dd..b462f1e 100644
--- a/src/env/node/git/localGitProvider.ts
+++ b/src/env/node/git/localGitProvider.ts
@@ -5,6 +5,7 @@ import { env as process_env } from 'process';
import { encodingExists } from 'iconv-lite';
import type { CancellationToken, Event, TextDocument, WorkspaceFolder } from 'vscode';
import { Disposable, env, EventEmitter, extensions, FileType, Range, Uri, window, workspace } from 'vscode';
+import { md5 } from '@env/crypto';
import { fetch, getProxyAgent } from '@env/fetch';
import { hrtime } from '@env/hrtime';
import { isLinux, isWindows } from '@env/platform';
@@ -150,7 +151,7 @@ import {
} from '../../../system/path';
import type { PromiseOrValue } from '../../../system/promise';
import { any, fastestSettled, getSettledValue } from '../../../system/promise';
-import { equalsIgnoreCase, getDurationMilliseconds, interpolate, md5, splitSingle } from '../../../system/string';
+import { equalsIgnoreCase, getDurationMilliseconds, interpolate, splitSingle } from '../../../system/string';
import { PathTrie } from '../../../system/trie';
import { compare, fromString } from '../../../system/version';
import { serializeWebviewItemContext } from '../../../system/webview';
diff --git a/src/git/models/repository.ts b/src/git/models/repository.ts
index 2a9e807..b99e394 100644
--- a/src/git/models/repository.ts
+++ b/src/git/models/repository.ts
@@ -1,5 +1,6 @@
import type { CancellationToken, ConfigurationChangeEvent, Event, WorkspaceFolder } from 'vscode';
import { Disposable, EventEmitter, ProgressLocation, RelativePattern, Uri, window, workspace } from 'vscode';
+import { md5 } from '@env/crypto';
import { ForcePushMode } from '../../@types/vscode.git.enums';
import type { CreatePullRequestActionContext } from '../../api/gitlens';
import { configuration } from '../../configuration';
@@ -18,7 +19,6 @@ import { debounce } from '../../system/function';
import { filter, join, some } from '../../system/iterable';
import { updateRecordValue } from '../../system/object';
import { basename, normalizePath } from '../../system/path';
-import { md5 } from '../../system/string';
import { runGitCommandInTerminal } from '../../terminal';
import type { GitDir, GitProviderDescriptor, GitRepositoryCaches } from '../gitProvider';
import type { RemoteProviders } from '../remotes/remoteProviders';
diff --git a/src/system/string.ts b/src/system/string.ts
index f195c19..ef76464 100644
--- a/src/system/string.ts
+++ b/src/system/string.ts
@@ -1,5 +1,4 @@
import ansiRegex from 'ansi-regex';
-import { md5 as _md5 } from '@env/crypto';
import { hrtime } from '@env/hrtime';
import { CharCode } from '../constants';
@@ -295,10 +294,6 @@ export function isUpperAsciiLetter(code: number): boolean {
return code >= CharCode.A && code <= CharCode.Z;
}
-export function md5(s: string, encoding: 'base64' | 'hex' = 'base64'): string {
- return _md5(s, encoding);
-}
-
export function pad(s: string, before: number = 0, after: number = 0, padding: string = '\u00a0') {
if (before === 0 && after === 0) return s;
diff --git a/src/views/nodes/compareResultsNode.ts b/src/views/nodes/compareResultsNode.ts
index e825b58..c362699 100644
--- a/src/views/nodes/compareResultsNode.ts
+++ b/src/views/nodes/compareResultsNode.ts
@@ -1,11 +1,12 @@
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, window } from 'vscode';
+import { md5 } from '@env/crypto';
import { GitUri } from '../../git/gitUri';
import { GitRevision } from '../../git/models/reference';
import type { StoredNamedRef } from '../../storage';
import { gate } from '../../system/decorators/gate';
import { debug, log } from '../../system/decorators/log';
import { getSettledValue } from '../../system/promise';
-import { md5, pluralize } from '../../system/string';
+import { pluralize } from '../../system/string';
import type { SearchAndCompareView } from '../searchAndCompareView';
import { RepositoryNode } from './repositoryNode';
import type { CommitsQueryResults } from './resultsCommitsNode';
@@ -23,7 +24,7 @@ export class CompareResultsNode extends ViewNode {
}
static getPinnableId(repoPath: string, ref1: string, ref2: string) {
- return md5(`${repoPath}|${ref1}|${ref2}`);
+ return md5(`${repoPath}|${ref1}|${ref2}`, 'base64');
}
private _children: ViewNode[] | undefined;
diff --git a/src/views/nodes/searchResultsNode.ts b/src/views/nodes/searchResultsNode.ts
index c34b646..4ad00f1 100644
--- a/src/views/nodes/searchResultsNode.ts
+++ b/src/views/nodes/searchResultsNode.ts
@@ -1,5 +1,6 @@
import type { TreeItem } from 'vscode';
import { ThemeIcon } from 'vscode';
+import { md5 } from '@env/crypto';
import { executeGitCommand } from '../../git/actions';
import { GitUri } from '../../git/gitUri';
import type { GitLog } from '../../git/models/log';
@@ -7,7 +8,7 @@ import type { SearchQuery, StoredSearchQuery } from '../../git/search';
import { getSearchQueryComparisonKey, getStoredSearchQuery } from '../../git/search';
import { gate } from '../../system/decorators/gate';
import { debug, log } from '../../system/decorators/log';
-import { md5, pluralize } from '../../system/string';
+import { pluralize } from '../../system/string';
import type { SearchAndCompareView } from '../searchAndCompareView';
import { RepositoryNode } from './repositoryNode';
import type { CommitsQueryResults } from './resultsCommitsNode';
@@ -33,7 +34,7 @@ export class SearchResultsNode extends ViewNode implements
}
static getPinnableId(repoPath: string, search: SearchQuery | StoredSearchQuery) {
- return md5(`${repoPath}|${getSearchQueryComparisonKey(search)}`);
+ return md5(`${repoPath}|${getSearchQueryComparisonKey(search)}`, 'base64');
}
private _instanceId: number;
diff --git a/yarn.lock b/yarn.lock
index ada204e..8bf8760 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3660,15 +3660,6 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-hash-base@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
- integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
- dependencies:
- inherits "^2.0.4"
- readable-stream "^3.6.0"
- safe-buffer "^5.2.0"
-
he@1.2.0, he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -3911,7 +3902,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -4626,15 +4617,6 @@ markdown-it@^12.3.2:
mdurl "^1.0.1"
uc.micro "^1.0.5"
-md5.js@1.3.5:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
- integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
mdn-data@2.0.14:
version "2.0.14"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
@@ -6194,7 +6176,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==