Swap-Aggregator-Subgraph/node_modules/iterable-ndjson/parse.browser.js
2022-07-03 07:27:35 +05:30

19 lines
553 B
JavaScript

/* eslint-env browser */
module.exports = source => (async function * () {
const matcher = /\r?\n/
const decoder = new TextDecoder('utf8')
let buffer = ''
for await (let chunk of source) {
if (typeof chunk === 'string') {
chunk = new TextEncoder().encode(chunk)
}
buffer += decoder.decode(chunk, { stream: true })
const parts = buffer.split(matcher)
buffer = parts.pop()
for (let i = 0; i < parts.length; i++) yield JSON.parse(parts[i])
}
buffer += decoder.decode()
if (buffer) yield JSON.parse(buffer)
})()