Skip to content

v2.0.1: Major `maxFileByteLength` error handling bug fix; remove `byteLength` property

Compare
Choose a tag to compare
@rafasofizada rafasofizada released this 13 Jul 11:28
· 15 commits to master since this release
8329b0c

All changes in this release were triggered by this great issue: #2

Changelog entry

Major commits:

Problem:

Pechkin.File.byteLength was responsible for detecting and throwing the maxByteLength error (if abortOnFileByteLengthLimit === true). maxByteLength error was only accessible through the byteLength promise. And as the byteLength promise and all associated event listeners were created "at compile time", if you didn't await file.byteLength and error-handle it, it'd create uncaught promise rejection runtime errors and crash the app.

Solution:

  • Move the error throwing logic to the ByteLengthTruncateStream Transform stream implementation.
  • Remove the byteLength Promise, and instead add bytesRead, bytesWritten and truncated getters to Pechkin.File.stream itself (which is an instance of aforementioned ByteLengthTruncateStream. Setting stream event handlers beforehand and wrapping them into a Promise leads to lots of unintuitive behaviour which leads to lots of hard-to-track-down bugs – I've encountered several of them even in my testing code!