From 673c1adcb0621ddc12e793c56be93d831fe7ff1d Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sat, 28 Nov 2020 14:03:38 +0100 Subject: [PATCH] fix layer breaker --- src/vs/base/browser/hash.ts | 25 +++++++++++++++++++ src/vs/base/common/hash.ts | 25 +++---------------- .../test/{common => browser}/hash.test.ts | 3 ++- .../tags/electron-browser/workspaceTags.ts | 2 +- .../electron-browser/workspaceTagsService.ts | 2 +- 5 files changed, 32 insertions(+), 25 deletions(-) create mode 100644 src/vs/base/browser/hash.ts rename src/vs/base/test/{common => browser}/hash.test.ts (97%) diff --git a/src/vs/base/browser/hash.ts b/src/vs/base/browser/hash.ts new file mode 100644 index 00000000000..bf48b614b15 --- /dev/null +++ b/src/vs/base/browser/hash.ts @@ -0,0 +1,25 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { VSBuffer } from 'vs/base/common/buffer'; +import { StringSHA1, toHexString } from 'vs/base/common/hash'; + +export async function sha1Hex(str: string): Promise { + + // Prefer to use browser's crypto module + if (globalThis?.crypto?.subtle) { + const hash = await globalThis.crypto.subtle.digest({ name: 'sha-1' }, VSBuffer.fromString(str).buffer); + + return toHexString(hash); + } + + // Otherwise fallback to `StringSHA1` + else { + const computer = new StringSHA1(); + computer.update(str); + + return computer.digest(); + } +} diff --git a/src/vs/base/common/hash.ts b/src/vs/base/common/hash.ts index 0de970f1218..b39581a840e 100644 --- a/src/vs/base/common/hash.ts +++ b/src/vs/base/common/hash.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { VSBuffer } from 'vs/base/common/buffer'; import * as strings from 'vs/base/common/strings'; /** @@ -107,9 +106,9 @@ function leftPad(value: string, length: number, char: string = '0'): string { return value; } -function toHexString(buffer: ArrayBuffer): string; -function toHexString(value: number, bitsize?: number): string; -function toHexString(bufferOrValue: ArrayBuffer | number, bitsize: number = 32): string { +export function toHexString(buffer: ArrayBuffer): string; +export function toHexString(value: number, bitsize?: number): string; +export function toHexString(bufferOrValue: ArrayBuffer | number, bitsize: number = 32): string { if (bufferOrValue instanceof ArrayBuffer) { return Array.from(new Uint8Array(bufferOrValue)).map(b => b.toString(16).padStart(2, '0')).join(''); } @@ -315,21 +314,3 @@ export class StringSHA1 { this._h4 = (this._h4 + e) & 0xffffffff; } } - -export async function sha1Hex(str: string): Promise { - - // Prefer to use browser's crypto module - if (globalThis?.crypto?.subtle) { - const hash = await globalThis.crypto.subtle.digest({ name: 'sha-1' }, VSBuffer.fromString(str).buffer); - - return toHexString(hash); - } - - // Otherwise fallback to `StringSHA1` - else { - const computer = new StringSHA1(); - computer.update(str); - - return computer.digest(); - } -} diff --git a/src/vs/base/test/common/hash.test.ts b/src/vs/base/test/browser/hash.test.ts similarity index 97% rename from src/vs/base/test/common/hash.test.ts rename to src/vs/base/test/browser/hash.test.ts index bfd8fd942f5..68ee17eebd9 100644 --- a/src/vs/base/test/common/hash.test.ts +++ b/src/vs/base/test/browser/hash.test.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { hash, sha1Hex, StringSHA1 } from 'vs/base/common/hash'; +import { hash, StringSHA1 } from 'vs/base/common/hash'; +import { sha1Hex } from 'vs/base/browser/hash'; suite('Hash', () => { test('string', () => { diff --git a/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts b/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts index 86a913c5ef5..726575e8298 100644 --- a/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts +++ b/src/vs/workbench/contrib/tags/electron-browser/workspaceTags.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { sha1Hex } from 'vs/base/common/hash'; +import { sha1Hex } from 'vs/base/browser/hash'; import { onUnexpectedError } from 'vs/base/common/errors'; import { URI } from 'vs/base/common/uri'; import { IFileService, IFileStat } from 'vs/platform/files/common/files'; diff --git a/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts b/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts index 3900fbf25ba..bf203f81c44 100644 --- a/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts +++ b/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { sha1Hex } from 'vs/base/common/hash'; +import { sha1Hex } from 'vs/base/browser/hash'; import { IFileService, IResolveFileResult, IFileStat } from 'vs/platform/files/common/files'; import { IWorkspaceContextService, WorkbenchState, IWorkspace } from 'vs/platform/workspace/common/workspace'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';