Path: blob/main/src/vs/platform/checksum/node/checksumService.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { createHash } from 'crypto';6import { listenStream } from '../../../base/common/stream.js';7import { URI } from '../../../base/common/uri.js';8import { IChecksumService } from '../common/checksumService.js';9import { IFileService } from '../../files/common/files.js';1011export class ChecksumService implements IChecksumService {1213declare readonly _serviceBrand: undefined;1415constructor(@IFileService private readonly fileService: IFileService) { }1617async checksum(resource: URI): Promise<string> {18const stream = (await this.fileService.readFileStream(resource)).value;19return new Promise<string>((resolve, reject) => {20const hash = createHash('sha256');2122listenStream(stream, {23onData: data => hash.update(data.buffer),24onError: error => reject(error),25onEnd: () => resolve(hash.digest('base64').replace(/=+$/, ''))26});27});28}29}303132