# Changelog ## 2026-03-02 - 3.4.0 - feat(smartduplex) improve backpressure handling and web/node stream interoperability - Refactored SmartDuplex to use synchronous _read/_write/_final (avoids async pitfalls), added internal backpressured buffer draining and consumer signaling - Implemented pull-based backpressure for Node <-> Web stream conversions (nodewebhelpers and convertNodeReadableToWebReadable/convertWebReadableToNodeReadable) - StreamIntake.fromStream now reads from 'readable' and drains properly; StreamWrapper resolves safely on end/close/finish - Improved getWebStreams / WebDuplexStream behavior (safer enqueue/close/abort handling, final/readFunction improvements) - Added many new unit tests covering backpressure, web/node helpers, StreamIntake, StreamWrapper, WebDuplexStream; bumped @push.rocks/lik and @types/node versions ## 2026-02-28 - 3.3.0 - feat(smartstream) bump dependencies, update build/publish config, refactor tests, and overhaul documentation - Upgrade devDependencies (e.g. @git.zone/tsbuild -> ^4.1.2, @git.zone/tsrun -> ^2.0.1, @git.zone/tstest -> ^3.1.8, @types/node -> ^25.3.2) and runtime deps (e.g. @push.rocks/lik -> ^6.2.2, @push.rocks/smartenv -> ^6.0.0, @push.rocks/smartpromise -> ^4.2.3, @push.rocks/smartrx -> ^3.0.10). - Refactor tests to use Node's native fs streams instead of @push.rocks/smartfile.fsStream and export default tap.start() to support ESM test runner patterns. - Adjust build/publish: remove --web flag from build script, add pnpm override for agentkeepalive, add tspublish.json files for publish order, and add release registries/access in npmextra.json (verdaccio + npm). - Rework project metadata in npmextra.json (namespaced @git.zone keys, tsdoc entry changes) and minor TypeScript/web fix: cast stream/web constructors to any in ts_web/plugins.ts. - Large README rewrite: improved installation (pnpm), clearer Node vs Web entrypoints, expanded examples, and updated legal/license wording. ## 2024-11-19 - 3.2.5 - fix(nodewebhelpers) Fix import and use correct module structure for Node.js streams in smartstream.nodewebhelpers.ts - Corrected the import statement for the fs module. - Updated the use of the fs.createReadStream method. ## 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) Fix issue with SmartDuplex fromWebReadableStream method - Resolved a potential unhandled promise rejection in fromWebReadableStream method - Ensured proper release of stream reader lock in case of read completion ## 2024-10-16 - 3.2.1 - fix(core) Fix the order of operations in SmartDuplex _read method to ensure proper waiting for items. - Adjusted the order of reading function execution and waiting for items in the SmartDuplex _read method. - Fixed potential issues with stream data processing timing. ## 2024-10-16 - 3.2.0 - feat(SmartDuplex) Added method to create SmartDuplex from a WebReadableStream. - Implemented a static method in SmartDuplex to allow creating an instance from a WebReadableStream. - This addition enhances the capability of SmartDuplex to integrate with web streams, facilitating seamless stream manipulation across environments. ## 2024-10-14 - 3.1.2 - fix(WebDuplexStream) Fix variable naming inconsistency in WebDuplexStream test - Changed variable names from 'transformStream' to 'webDuplexStream' for consistency. - Renamed 'writableStream' and 'readableStream' to 'writer' and 'reader' respectively. ## 2024-10-13 - 3.1.1 - fix(WebDuplexStream) Improved read/write interface and error handling in WebDuplexStream - Enhanced the IStreamToolsRead and IStreamToolsWrite interfaces for better Promise handling - Refined readFunction and writeFunction handling to accommodate asynchronous data processing and error propagation - Added internal _startReading method to facilitate initial data handling if readFunction is present - Maintained backward compatibility while ensuring data continuity when no writeFunction is specified ## 2024-10-13 - 3.1.0 - feat(core) Add support for creating Web ReadableStream from a file - Introduced a new helper function `createWebReadableStreamFromFile` that allows for creating a Web ReadableStream from a file path. - Updated exports in `ts/index.ts` to include `nodewebhelpers` which provides the new web stream feature. ## 2024-10-13 - 3.0.46 - fix(WebDuplexStream) Fix errors in WebDuplexStream transformation and test logic - Corrected async handling in WebDuplexStream write function - Fixed `WebDuplexStream` tests to properly handle asynchronous reading and writing ## 2024-10-13 - 3.0.45 - fix(ts) Fixed formatting issues in SmartDuplex class - Resolved inconsistent spacing in SmartDuplex class methods and constructor. - Ensured consistent formatting in the getWebStreams method. ## 2024-06-02 - 3.0.39 - smartduplex Add .getWebStreams method - Introduced a new `.getWebStreams` method in the smartduplex module, providing compatibility with the web streams API. ## 2024-03-16 - 3.0.34 - configuration Update project configuration files - Updated `tsconfig` for optimization. - Modified `npmextra.json` to set the `githost` attribute. ## 2023-11-03 - 3.0.0 to 3.0.8 - core Transition to major version 3.x - Implemented breaking changes in the core system for better performance and feature set. - Continuous core updates to improve stability and performance across minor version increments. ## 2023-11-02 - 2.0.4 to 2.0.8 - core Core updates and a major fix - Implemented core updates addressing minor bugs and enhancements. - A significant breaking change update transitioning from 2.0.x to 3.0.0. ## 2022-03-31 - 2.0.0 - core Major esm transition - Implemented a breaking change by switching the core to ESM (ECMAScript Module) format for modernized module handling.