diff --git a/docs/modules/concat-stream.md b/docs/modules/concat-stream.md new file mode 100644 index 00000000..4a6ceb15 --- /dev/null +++ b/docs/modules/concat-stream.md @@ -0,0 +1,61 @@ +--- +description: Modern alternatives to the concat-stream package +--- + +# Replacements for `concat-stream` + +## Utility Consumers (native, since Node.js 16.7.0) + +### Consuming as a string + + +```js +import concat from 'concat-stream' // [!code --] +import { text } from 'node:stream/consumers' // [!code ++] + +readable.pipe(concat((data) => { // [!code --] + const str = data.toString('utf-8') // [!code --] + console.log(str) // [!code --] +})) // [!code --] + +const str = await text(readable) // [!code ++] +console.log(str) // [!code ++] +``` + +### Consuming as Buffer + + +```js +import concat from 'concat-stream' // [!code --] +import { buffer } from 'node:stream/consumers' // [!code ++] + +readable.pipe(concat((data) => { // [!code --] + console.log(data.length) // [!code --] +})) // [!code --] + +const data = await buffer(readable) // [!code ++] +console.log(data.length) // [!code ++] +``` + +### Consuming as an Array + + +```js +import concat from 'concat-stream' // [!code --] +import { toArray } from 'node:stream/consumers' // [!code ++] + +readable.pipe(concat({ encoding: 'object' }, (items) => { // [!code --] + console.log(items) // [!code --] +})) // [!code --] + +const items = await toArray(readable) // [!code ++] +console.log(items) // [!code ++] +``` + +Alternatively, using an async iterable loop: + +```js +for await (const chunk of readable) { + // ... +} +``` diff --git a/manifests/preferred.json b/manifests/preferred.json index 80a7525d..5b3966d3 100644 --- a/manifests/preferred.json +++ b/manifests/preferred.json @@ -150,6 +150,12 @@ "replacements": ["util.styleText", "picocolors", "ansis"], "url": {"type": "e18e", "id": "chalk"} }, + "concat-stream": { + "type": "module", + "moduleName": "concat-stream", + "replacements": ["node:stream"], + "url": {"type": "e18e", "id": "concat-stream"} + }, "copy-text-to-clipboard": { "type": "module", "moduleName": "copy-text-to-clipboard",