'use strict'
async function * wrapWithAsyncIterable (asyncIterable, indefinite = false) {
for await (const chunk of asyncIterable) {
yield chunk
}
if (indefinite) {
await new Promise(() => {})
}
}
const STREAM = 'stream'
const ASYNC_ITERATOR = 'async-iterator'
function maybeWrapStream (stream, type) {
if (type === STREAM) {
return stream
}
if (type === ASYNC_ITERATOR) {
return wrapWithAsyncIterable(stream)
}
throw new Error(`bad input ${type} should be ${STREAM} or ${ASYNC_ITERATOR}`)
}
module.exports = { wrapWithAsyncIterable, maybeWrapStream, consts: { STREAM, ASYNC_ITERATOR } }