Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/checksum/node/checksumService.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { createHash } from 'crypto';
7
import { listenStream } from '../../../base/common/stream.js';
8
import { URI } from '../../../base/common/uri.js';
9
import { IChecksumService } from '../common/checksumService.js';
10
import { IFileService } from '../../files/common/files.js';
11
12
export class ChecksumService implements IChecksumService {
13
14
declare readonly _serviceBrand: undefined;
15
16
constructor(@IFileService private readonly fileService: IFileService) { }
17
18
async checksum(resource: URI): Promise<string> {
19
const stream = (await this.fileService.readFileStream(resource)).value;
20
return new Promise<string>((resolve, reject) => {
21
const hash = createHash('sha256');
22
23
listenStream(stream, {
24
onData: data => hash.update(data.buffer),
25
onError: error => reject(error),
26
onEnd: () => resolve(hash.digest('base64').replace(/=+$/, ''))
27
});
28
});
29
}
30
}
31
32