StreamToBuffer.js 651 B

1234567891011121314151617181920
  1. import { LoggerStream, WritableBuffer } from '@overleaf/stream-utils'
  2. import Settings from '@overleaf/settings'
  3. import logger from '@overleaf/logger/logging-manager.js'
  4. import { pipeline } from 'node:stream/promises'
  5. export async function streamToBuffer(projectId, docId, stream) {
  6. const loggerTransform = new LoggerStream(
  7. Settings.max_doc_length,
  8. (size, isFlush) => {
  9. logger.warn(
  10. { projectId, docId, size, finishedReading: isFlush },
  11. 'potentially large doc pulled down from gcs'
  12. )
  13. }
  14. )
  15. const buffer = new WritableBuffer()
  16. await pipeline(stream, loggerTransform, buffer)
  17. return buffer.contents()
  18. }