Compare commits

..

4 Commits

5 changed files with 18 additions and 4 deletions

View File

@ -1,5 +1,15 @@
# Changelog # Changelog
## 2024-10-16 - 3.2.4 - fix(SmartDuplex)
Fix stream termination when reading from a web readable stream
- Resolved an issue in SmartDuplex where the stream did not properly terminate after reaching the end of a web readable stream.
## 2024-10-16 - 3.2.3 - fix(smartduplex)
Enhance documentation for read function in SmartDuplex
- Added inline comments to clarify the behavior and importance of unlocking the reader in the readFunction of SmartDuplex.fromWebReadableStream.
## 2024-10-16 - 3.2.2 - fix(SmartDuplex) ## 2024-10-16 - 3.2.2 - fix(SmartDuplex)
Fix issue with SmartDuplex fromWebReadableStream method Fix issue with SmartDuplex fromWebReadableStream method

View File

@ -1,6 +1,6 @@
{ {
"name": "@push.rocks/smartstream", "name": "@push.rocks/smartstream",
"version": "3.2.2", "version": "3.2.4",
"private": false, "private": false,
"description": "A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.", "description": "A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.",
"type": "module", "type": "module",

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartstream', name: '@push.rocks/smartstream',
version: '3.2.2', version: '3.2.4',
description: 'A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.' description: 'A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.'
} }

View File

@ -56,6 +56,10 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
readableStream: ReadableStream<T> readableStream: ReadableStream<T>
): SmartDuplex<T, T> { ): SmartDuplex<T, T> {
const smartDuplex = new SmartDuplex<T, T>({ const smartDuplex = new SmartDuplex<T, T>({
/**
* this function is called whenever the stream is being read from and at the same time if nothing is enqueued
* therefor it is important to always unlock the reader after reading
*/
readFunction: async () => { readFunction: async () => {
const reader = readableStream.getReader(); const reader = readableStream.getReader();
const { value, done } = await reader.read(); const { value, done } = await reader.read();
@ -64,7 +68,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
} }
reader.releaseLock(); reader.releaseLock();
if (done) { if (done) {
smartDuplex.end(); smartDuplex.push(null);
} }
}, },
}); });

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartstream', name: '@push.rocks/smartstream',
version: '3.2.2', version: '3.2.4',
description: 'A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.' description: 'A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.'
} }