StreamToBuffer.js 701 B

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