Package Exports
- iterable-ndjson
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (iterable-ndjson) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
iterable-ndjson
Takes an (async) iterable that yields ndjson and returns an async iterable that yields JS objects
Install
npm install iterable-ndjsonUsage
const ndjson = require('iterable-ndjson')
const it = ndjson.parse(source) // where `source` is any iterable that yields ndjson
for await (const obj of it)
console.log(obj)Examples
Node.js streams are async iterable:
const ndjson = require('iterable-ndjson')
const fs = require('fs')
const source = fs.createReadStream('/path/to/file.ndjson')
for await (const obj of ndjson.parse(source))
console.log(obj)Async iterable:
const ndjson = require('iterable-ndjson')
// An ndjson async iterator
const source = (() => {
const array = ['{"id": 1}\n', '{"id"', ': 2}', '\n{"id": 3}\n']
return {
[Symbol.asyncIterator] () {
return this
},
async next () {
await new Promise(resolve => setTimeout(resolve))
return array.length
? { done: false, value: array.shift() }
: { done: true }
}
}
})()
async function main () {
for await (const obj of ndjson.parse(source))
console.log(obj)
// Logs out:
// { id: 1 }
// { id: 2 }
// { id: 3 }
}
main()Async iterable generator:
const ndjson = require('iterable-ndjson')
// An ndjson async iterator
const source = (async function * () {
const array = ['{"id": 1}\n', '{"id"', ': 2}', '\n{"id": 3}\n']
for (let i = 0; i < array.length; i++) {
yield new Promise(resolve => setTimeout(() => resolve(array[i])))
}
})()
async function main () {
for await (const obj of ndjson.parse(source))
console.log(obj)
// Logs out:
// { id: 1 }
// { id: 2 }
// { id: 3 }
}
main()Regular iterable (like an array):
const ndjson = require('iterable-ndjson')
const source = ['{"id": 1}\n', '{"id"', ': 2}', '\n{"id": 3}\n']
async function main () {
for await (const obj of ndjson.parse(source))
console.log(obj)
// Logs out:
// { id: 1 }
// { id: 2 }
// { id: 3 }
}
main()Stringify JS objects to NDJSON:
const ndjson = require('iterable-ndjson')
const source = [{ id: 1 }, { id: 2 }, { id: 3 }]
async function main () {
for await (const obj of ndjson.stringify(source))
console.log(obj)
// Logs out:
// '{"id":1}\n'
// '{"id":2}\n'
// '{"id":3}\n'
}
main()Contribute
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Alan Shaw