🚀 v7.1.0 Highlights
New: Standalone XML Module (@cj-tech-master/excelts/xml)
A brand-new, zero-dependency XML toolkit — powers the XLSX pipeline internally, now available as a standalone subpath export.
- SAX Parser — High-performance event-driven streaming parser
- DOM Parser — Build queryable XML trees with
parseXml() - Query Engine — Simplified path expressions (
a/b[@id='1'],a//c,a/b[0]) - Dual-Mode Writer — Buffered (
XmlWriter) with rollback, streaming (XmlStreamWriter) with backpressure - Full Namespace Support — Prefix resolution, reserved namespace enforcement, unbound prefix detection
- Security Hardened — Entity expansion limits, nesting depth limits, duplicate attribute rejection, name injection prevention, BOM handling
import { SaxParser, parseXml, XmlWriter, query, queryAll } from "@cj-tech-master/excelts/xml";Performance
- Direct SAX callback mode eliminates intermediate event objects on the Excel read path
- Hot-path optimizations for large-workbook throughput (text decoding, write batching, row spans parsing)
isDateFmtcaching,TextEncoder.encodeInto()in StringBuf
Bug Fixes
- Proper backpressure handling for both sync and async
write()in browser streaming (fixes #74 #75 #76) - Windows: wait for file stream close before resolving
- XML: complete namespace support, HAN CELL prefix detection, second root rejection, fatal UTF-8 decode
7.1.0 (2026-04-01)
Features
- xml: Add standalone
@xmlmodule with streaming write pipeline and backpressure support (a0a0630)
Bug Fixes
- Enhance backpressure handling in StreamingZipWriterAdapter for sync and async write() return types (156b5fa)
- Extract _checkBackpressure to resolve CodeQL missing-await alerts #74 #75 #76 (7081e1f)
- Handle async write() return in StreamingZipWriterAdapter backpressure check (dc8c3fd)
- Wait for file stream close before resolving on Windows (84503eb)
- xml: Complete namespace support, harden parser, simplify module, and update validator (9a59fe8)
- xml: Correct HAN CELL prefix detection, xmlEncode FFFE/FFFF, and tag mutation (56c8665)
- xml: Reject second root element, fatal UTF-8 decode, lightweight decodeCol (95b676e)