| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* eslint-disable
- no-undef,
- no-unused-vars,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- import fs from 'fs'
- import crypto from 'crypto'
- import _ from 'lodash'
- import logger from '@overleaf/logger'
- import OError from '@overleaf/o-error'
- export function _getBlobHashFromString(string) {
- const byteLength = Buffer.byteLength(string)
- const hash = crypto.createHash('sha1')
- hash.setEncoding('hex')
- hash.update('blob ' + byteLength + '\x00')
- hash.update(string, 'utf8')
- hash.end()
- return hash.read()
- }
- export function _getBlobHash(fsPath, _callback) {
- if (_callback == null) {
- _callback = function () {}
- }
- const callback = _.once(_callback)
- return fs.stat(fsPath, function (err, stats) {
- if (err != null) {
- OError.tag(err, 'failed to stat file in _getBlobHash', { fsPath })
- return callback(err)
- }
- const byteLength = stats.size
- const hash = crypto.createHash('sha1')
- hash.setEncoding('hex')
- hash.update('blob ' + byteLength + '\x00')
- const stream = fs.createReadStream(fsPath)
- stream.on('error', function (err) {
- return callback(
- OError.tag(err, 'error streaming file from disk', {
- fsPath,
- byteLength,
- })
- )
- })
- stream.on('end', function () {
- hash.end()
- return callback(null, hash.read(), byteLength)
- })
- return stream.pipe(hash)
- })
- }
|