events-awaiter

1.0.0 • Public • Published

Usage

const eventsAwaiter = new EventsAwaiter()
eventsAwaiter.addEvent(someEventEmitter, 'done')
eventsAwaiter.addEvent(writeStream, 'finish')
// maker sure all of the events are added before awaitEvents
const results = await eventsAwaiter.awaitEvents()
// if some of the added events emit 'error' awaitEvents will be rejected

Example:

const express = require('express')
const asyncHandler = require('express-async-handler')
const formidable = require('formidable')
const { dropbox } = require('../../storage/dropbox')
const { parseFormData, redirectFileParts } = require('redirect-form-data-files')
const { EventsAwaiter } = require('../../util/events-awaiter')

const router = express.Router()

router.post('/', asyncHandler(async (req, res) => {
  const form = new formidable.IncomingForm()
  const uploadsAwaiter = new EventsAwaiter()
  const createRedirectStream = (formDataFilePart) => {
    const filepath = '/' + formDataFilePart.filename
    const writeStream = dropbox.createUploadStream(filepath)
    uploadsAwaiter.addEvent(writeStream, 'metadata')
    return writeStream
  }
  redirectFileParts(form, createRedirectStream)
  await parseFormData(form, req)
  const uploadsMetadatas = await uploadsAwaiter.awaitEvents()
  res.json({ok: true, metadatas: uploadsMetadatas})
}))

exports.uploadRouter = router

Readme

Keywords

none

Package Sidebar

Install

npm i events-awaiter

Weekly Downloads

0

Version

1.0.0

License

ISC

Unpacked Size

3.21 kB

Total Files

3

Last publish

Collaborators

  • grabantot