xls-codec@4.15.7
·
777 commits
to main
since this release
4.15.7 (2026-09-16)
Bug Fixes
- xls-codec: narrow the FLSNULL dxf test to conditionalFormats' own cellIs shape (fddafca)
- xls-codec: use real Color/ContentBorder shapes in written-cells tests (736538a)
Code Refactoring
- xls-codec: add a shared malformed-record recovery classifier (38de7d7)
- xls-codec: always slice bytesFromBase64's own trailing padding (a00ea40)
- xls-codec: build a cell-Xf signature via JSON.stringify (3d016e1)
- xls-codec: close content.ts's remaining survivors, cover sheet-writer.ts boundaries (fc57255)
- xls-codec: compile formula rgce bytes with an explicit worklist, not recursion (686af6b)
- xls-codec: drop addCacheEntry's own redundant default-case return (bf82ffc)
- xls-codec: drop BlockCursor's genuinely redundant settle passes (ddaab29)
- xls-codec: drop chart.ts's own dead switch default and pointInRange's redundant edge cases (5b4ddec)
- xls-codec: drop checkedLength's unreachable whole-text embedding branch (910c7e4)
- xls-codec: drop container's redundant CompoundFileFormatError branch (286f404)
- xls-codec: drop embedded-object's redundant safeParse success guard (41aa011)
- xls-codec: drop md4's redundant zero offset term (bcc4d0f)
- xls-codec: drop readArrayGroup's unreachable rgcb branch and a redundant break (dad2b7b)
- xls-codec: drop readCf12's dead error-recovery indirection and CFColor's unreachable skip (843517a)
- xls-codec: drop readFormula's own unreachable rgcb branch (3747dd3)
- xls-codec: drop readObjPictFmlaStorageId's redundant FtCmo skip (9815db8)
- xls-codec: drop readRichExtendedString's redundant run/phonetic skip guards (a334ef6)
- xls-codec: drop readSheetRecords' own redundant loop bound (ede1b0e)
- xls-codec: drop readSheetShapes' redundant empty-stream check and pib's dead fComplex test (08881b0)
- xls-codec: drop resolveIcvColor's redundant palette upper bound (2bbef83)
- xls-codec: drop the RK double's never-written low dword (5cc0363)
- xls-codec: drop three unobservable globals.ts checks (c97a01d)
- xls-codec: drop two Ptg cases already reachable through their own generic fallback (2835e64)
- xls-codec: drop two redundant loop-bound checks in sheet.ts (5a93d15)
- xls-codec: extract validateRuleCount for a testable exact boundary (1fc030e)
- xls-codec: filter written cells once per workbook-wide scan pass (4b22f18)
- xls-codec: key the phantom leap day's own origin choice off Math.sign, not a threshold (720e57e)
- xls-codec: narrow writeSheetComments to cells proven to carry a comment (f1d0b90)
- xls-codec: pass writeFormulaRecords its already-narrowed formula (0163211)
- xls-codec: reach genuine 100% mutation coverage on biff/ptg.ts (d928cd9)
- xls-codec: reach genuine 100% mutation coverage on conditional-format.ts (60c14be)
- xls-codec: reach genuine 100% mutation coverage on content.ts (b5bdc96)
- xls-codec: reach genuine 100% mutation coverage on drawing/blips.ts (44c2881)
- xls-codec: refuse an invalid base64 character rather than silently skipping it (13bcf9a)
- xls-codec: remove cfb.ts's own DIFAT sector count write (d8f37d9)
- xls-codec: remove cfb.ts's own unreachable checks and self-correcting bounds (f97b0e3)
- xls-codec: remove OwnSheetRange's own unread endRow field (b37d68f)
- xls-codec: remove ptg-writer's redundant eof push and drop-in unterminated-string check (a416390)
- xls-codec: remove redundant conditional-format write paths (a8960a4)
- xls-codec: remove redundant drawing-read loop bounds and export testable seams (1acb4fb)
- xls-codec: remove two unobservable sheet.ts mutation surfaces (cd4a93a)
- xls-codec: remove xf-colors' dead achromatic shortcut and drop redundant range bounds (e32d622)
- xls-codec: replace strings/string-writer's chunking loops with Array.from (b88f0f6)
- xls-codec: replace unreachable map-lookup guards with exhaustive switches (a12879f)
- xls-codec: resolve a blip's dedup by value, not a re-derived index (c37b513)
- xls-codec: restate hslToRgb's piecewise hue curve as one clamp (f1dbbfa)
- xls-codec: route every malformed-record catch through recoverFromFormatError (95effa9)
- xls-codec: stop the shape/Obj pairing loop at the first exhausted side (4094c1f)
Tests
- xls-codec: add a dedicated test file for the Escher write side (df46745)
- xls-codec: assert BiffWriteError's own name and message (6cd8ad3)
- xls-codec: assert conditional-format and cell fixtures with toStrictEqual (cf92d77)
- xls-codec: assert data validation ranges accept BIFF8's own grid edge (2337c51)
- xls-codec: assert encryption's disjunctive checks reject each half alone (151d83d)
- xls-codec: assert pointsToColumnWidth's exact ceil formula (4533387)
- xls-codec: assert print-setup's landscape conjunction and tolerance boundary (e13bfff)
- xls-codec: assert readRecords' own thrown messages and error name (c096886)
- xls-codec: assert record-writer's oversized-record message (7da5c2f)
- xls-codec: assert substreams' thrown messages and the BOF length boundary (609a318)
- xls-codec: close defined-names.ts's last two mutation survivors (475f827)
- xls-codec: close ptg.ts's remaining mutation survivors and no-coverage lines (9366143)
- xls-codec: close ptg.ts's remaining survivors (1d0ede2)
- xls-codec: close write.ts's remaining mutation survivors (5a14728)
- xls-codec: cover applyTint's own HSL branches and icv range boundaries (14d8494)
- xls-codec: cover chart series AI dispatch, cache roles, and range resolution (eb0ced7)
- xls-codec: cover compileFormulaText's tokenizer, parser, and compiler directly (e0ed190)
- xls-codec: cover compoundFile's ASCII boundary, name collisions, and raw byte layout (cdf8133)
- xls-codec: cover compoundFile's own validation and sector-layout branches directly (ce2c1e1)
- xls-codec: cover conditional-format boolean flags and gradient bytes directly (2049751)
- xls-codec: cover conditional-format write boundaries and nID assignment (ebf01fa)
- xls-codec: cover data validation's notBetween operator and isolate its own grid-edge checks (37cfd28)
- xls-codec: cover data-validation error paths and grid boundaries directly (9c3d0fc)
- xls-codec: cover decryptWorkbookRecords' FilePass and record-dispatch edges (db2e2ce)
- xls-codec: cover defined-name length, scope, and grid boundaries (5baf12c)
- xls-codec: cover drawing-read geometry, guard isolation, and pairing edges (b085a54)
- xls-codec: cover drawing-write geometry, placement, and record byte layout (7d33f6f)
- xls-codec: cover globals-writer records this package's own reader ignores (8357f08)
- xls-codec: cover layoutMetadataToSummaryInformation's date validation (bf2a0e9)
- xls-codec: cover MD4's padding boundary and drop its dead-code guards (890d775)
- xls-codec: cover Obj record byte layout, sequential ids, and cross-sheet spids (2686329)
- xls-codec: cover own-sheet fallback and range boundary edges (89e007c)
- xls-codec: cover readDv's recoverFromFormatError call against a real bug (e877c78)
- xls-codec: cover readEmbeddedObjectPackage's own rejection paths (c5a4f7d)
- xls-codec: cover readObjPictFmlaStorageId's own sub-record walk (644682a)
- xls-codec: cover readWorkbookStreams and isXlsFile directly (dfcb9ac)
- xls-codec: cover sheet-writer grid, merge, and formula cached-value gaps (5c6a696)
- xls-codec: cover storage reuse and header fields no round trip proves (8cf2aaf)
- xls-codec: cover test-support/biff's own string and XF-trailer packing (da24330)
- xls-codec: distinguish CFEx's fIsCF12 guard from a coincidental undefined (963c22f)
- xls-codec: give the 65535-comment boundary test an explicit timeout (600c0f8)
- xls-codec: isolate cfb.ts's own size-classification and same-name storage edges (4dd2f27)
- xls-codec: isolate DgContainer's kind check and pib's exact opid from a same-shaped bypass (c6a6ea0)
- xls-codec: isolate every branch of cellCarriesFormatting/writesCellRecord (e6cf0e3)
- xls-codec: isolate every earlier guard and array-class Ptg in readLbl/parsePrintAreas (65e6179)
- xls-codec: isolate the plain-column check's own leading anchor from its trailing one (fd53e9b)
- xls-codec: pin every Escher framing refusal's exact message and cover firstChild directly (8de76b1)
- xls-codec: pin every Ftab entry's name and fixed arity independently (2ec29dd)
- xls-codec: pin fontNameBytes' exact write length and the dyHeight/fontName refusal messages (0073246)
- xls-codec: pin writeSheetComments' record ordering and object ids (bcd0c96)
- xls-codec: reach genuine mutation coverage on defined-names.ts (27ed7f1)
- xls-codec: reach mutation coverage on conditional-format-write.ts (13ad98b)
- xls-codec: reach mutation coverage on globals.ts's SupBook/XTI resolution (bc4368f)
- xls-codec: reach mutation coverage on sheet.ts's record dispatch (b3cb452)
- xls-codec: reach mutation coverage on write.ts's workbook-wide plans (f3bd5f7)
- xls-codec: use a genuinely valid Package stream in embeddedObjectFromObjRecord's guard tests (03029ab)
Miscellaneous Chores
- xls-codec: raise the mutation break threshold to 100 (7f6c424)