/ndjson-readablestream

A small JS package for reading a ReadableStream of NDJSON

Primary LanguageJavaScriptMIT LicenseMIT

ndjson-readablestream

A small JS package for reading a ReadableStream of NDJSON.

readNDJSONStream() accepts a ReadableStream object, and returns an AsyncGenerator where each yielded event is a valid JSON object.

Example usage:

import readNDJSONStream from 'ndjson-readablestream';

const response = await fetch('/chat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ message: 'Hi, how are you?' }),
});
for await (const event of readNDJSONStream(response.body)) {
  console.log('Received', event);
}

Example usage in a webpage:

<script src="https://cdn.jsdelivr.net/npm/ndjson-readablestream@1.0.1/dist/ndjson-readablestream.umd.js"></script>
<script>
  const response = await fetch("/chat", {
      method: "POST",
      headers: {"Content-Type": "application/json"},
      body: JSON.stringify({message: "Hi, how are you?"})
  });
  for await (const event of readNDJSONStream(response.body)) {
      console.log("Received", event);
  }
</script>

For more details and examples, read my blog post on Fetching JSON over streaming HTTP.

Contributing

Install the development dependencies:

npm install

Run the tests:

npm test

Format the code:

npm run format

Publishing a new version

These instructions are for maintainers only.

  1. Bump the version in package.json using either:
    • npm version patch
    • npm version minor
    • npm version major
  2. Run npm install to update package-lock.json
  3. Update CHANGELOG.md with description of changes in version
  4. Create a pull request
  5. Once merged, checkout main and run:
    1. npm run build
    2. npm login
    3. npm publish