# Changelog ## 2025-08-18 - 4.2.2 - fix(smartarchive) Improve tar entry streaming handling and add in-memory gzip/tgz tests - Fix tar entry handling: properly consume directory entries (resume stream) and wait for entry end before continuing to next header - Wrap tar file entries with a PassThrough so extracted StreamFile instances can be consumed while the tar extractor continues - Handle nested archives correctly by piping resultStream -> decompressionStream -> analyzer -> unpacker, avoiding premature end signals - Add and expand tests in test/test.gzip.ts: verify package.json and TS/license files after extraction, add in-memory gzip extraction test, and add real tgz-in-memory download+extraction test - Minor logging improvements for tar extraction flow ## 2025-08-18 - 4.2.1 - fix(gzip) Improve gzip streaming decompression, archive analysis and unpacking; add gzip tests - Add a streaming DecompressGunzipTransform using fflate.Gunzip with proper _flush handling to support chunked gzip input and avoid buffering issues. - Refactor ArchiveAnalyzer: introduce IAnalyzedResult, getAnalyzedStream(), and getDecompressionStream() to better detect mime types and wire appropriate decompression streams (gzip, zip, bzip2, tar). - Use SmartRequest response streams converted via stream.Readable.fromWeb for URL sources in SmartArchive.getArchiveStream() to improve remote archive handling. - Improve nested archive unpacking and SmartArchive export pipeline: more robust tar/zip handling, consistent SmartDuplex usage and backpressure handling. - Enhance exportToFs: ensure directories, improved logging for relative paths, and safer write-stream wiring. - Add comprehensive gzip-focused tests (test/test.gzip.ts) covering file extraction, stream extraction, header filename handling, large files, and a real-world tgz-from-URL extraction scenario. ## 2025-08-18 - 4.2.0 - feat(classes.smartarchive) Support URL streams, recursive archive unpacking and filesystem export; improve ZIP/GZIP/BZIP2 robustness; CI and package metadata updates - Add exportToFs(targetDir, fileName?) to write extracted StreamFile objects to the filesystem (ensures directories, logs relative paths, waits for write completion). - Implement exportToStreamOfStreamFiles with recursive unpacking pipeline that handles application/x-tar (tar-stream Extract), application/zip (fflate Unzip), nested archives and StreamIntake for StreamFile results. - Enhance getArchiveStream() to support URL/web streams (SmartRequest) and return Node Readable streams for remote archives. - Make ZIP decompression more robust: accept ArrayBuffer-like chunks, coerce to Buffer before pushing to fflate.Unzip, and ensure SmartDuplex handling of results. - Fixes and improvements to bzip2/gzip/tar tool implementations (various bug/formatting fixes, safer CRC and stream handling). - Update CI workflows to use new registry image and adjust npmci install path; minor .gitignore additions. - Package metadata tweaks: bugs URL and homepage updated, packageManager/pnpm fields adjusted. - Documentation/readme expanded and polished with quick start, examples and API reference updates. - Small test and plugin export cleanups (formatting and trailing commas removed/added). - TypeScript/formatting fixes across many files (consistent casing, trailing commas, typings, tsconfig additions). ## 2025-08-18 - 4.1.0 - feat(classes.smartarchive) Support URL web streams, add recursive archive unpacking and filesystem export, and improve ZIP decompression robustness - ts/classes.smartarchive.ts: add exportToFs(targetDir, fileName?) to write extracted StreamFile objects to the filesystem (ensures directories, logs relative paths, waits for write completion). - ts/classes.smartarchive.ts: implement exportToStreamOfStreamFiles with recursive unpacking pipeline that handles application/x-tar (tar-stream Extract), application/zip (fflate unzip), nested archives and StreamIntake for StreamFile results. - ts/classes.smartarchive.ts: improve getArchiveStream() for URL sources by using SmartRequest.create().url(...).get() and converting the returned Web stream into a Node Readable stream. - ts/classes.ziptools.ts: make ZIP decompression writeFunction more robust — accept non-Buffer chunks, coerce to Buffer before pushing to fflate.Unzip, and loosen the writeFunction typing to handle incoming ArrayBuffer-like data. ## 2024-10-13 - 4.0.39 - fix(core) Fix dependencies and update documentation. - Ensure package uses the latest dependencies - Reviewed and grouped imports in TypeScript files - Updated readme with advanced usage examples ## 2024-10-13 - 4.0.38 - fix(dependencies) Update dependencies to latest versions - Updated @push.rocks/smartfile to version 11.0.21 - Updated @push.rocks/smartpromise to version 4.0.4 - Updated @push.rocks/smartstream to version 3.0.46 - Updated @push.rocks/smarturl to version 3.1.0 - Updated file-type to version 19.5.0 - Updated @git.zone/tsbuild to version 2.1.84 - Updated @git.zone/tsrun to version 1.2.49 - Updated @push.rocks/tapbundle to version 5.3.0 ## 2024-06-08 - 4.0.24 to 4.0.37 - Fixes and Updates Core updates and bug fixes were implemented in versions 4.0.24 through 4.0.37. - Repeated core updates and fixes applied consistently across multiple versions. ## 2024-06-06 - 4.0.22 to 4.0.23 - Descriptions and Fixes Updates Efforts to update documentation and core features. - "update description" in 4.0.22 - Updates to `tsconfig` and `npmextra.json` were performed. - Ongoing core fixes. ## 2023-11-06 - 4.0.0 - Major Update with Breaking Changes Introduction of significant updates and breaking changes. - Transition to new version 4.0.0 with core updates. - Break in compatibility due to major structural changes with core functionalities. ## 2023-07-11 - 3.0.6 - Organizational Changes Structural reorganization and updates to the organization schema. - Switch to new organizational schema implemented. ## 2022-04-04 - 3.0.0 - Build Updates and Breaking Changes Major build update introducing breaking changes. - Introduction of ESM structure with breaking changes. ## 2016-01-18 - 0.0.0 to 1.0.0 - Initial Development and Launch Initial software development and establishment of core features. - Project set-up including Travis CI integration. - Launch of the first full version with code restructuring. - Added callback support.