Skip to content
This repository has been archived by the owner on Jun 27, 2023. It is now read-only.

kitten/stream-tag

Repository files navigation

stream-tag

A tagged template literal utility for Node streams

Works in node.js and the browser, if streams are polyfilled.

This utility is a small tagged-template-literal function that enables interpolation of strings, numbers, Buffers, promises, and streams into a new stream.

This is highly useful when constructing stream templates that will be emitted by a server-side rendering service for instance. One example of such use-case is React's streamed SSR, where it's useful to combine its stream with other variables into an HTML output template.

Installation

yarn add stream-tag
# or
npm install stream-tag

Usage

const streamTag = require('stream-tag');

const stream = streamTag`
  one
  ${'two'}
  ${3}
  ${Promise.resolve('four')}
  ${Promise.resolve(5)}
  ${Buffer.from('six')}
  ${streamTag`seven`}
`;

// This is what stream emits
const output = `
  one
  two
  3
  four
  5
  six
  seven
`;

API

streamTag(templateStringArr, ...interpolations)

Can be called as a tagged template literal. Returns a stream emitting the template with all interpolations combined into the output.

templateStringArr

Type: string[]

interpolations

Type: Array<void | string | number | Buffer | ReadableStream | Promise>

Promises may only resolve to all other values in the array above.

Related

After writing this I noticed that there's already the execellent stream-template library, which does about the same.

Licence

MIT

About

A tagged template literal utility for Node streams

Resources

License

Stars

Watchers

Forks

Packages

No packages published