v2.0.1: Major `maxFileByteLength` error handling bug fix; remove `byteLength` property
All changes in this release were triggered by this great issue: #2
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 addbytesRead
,bytesWritten
andtruncated
getters toPechkin.File.stream
itself (which is an instance of aforementionedByteLengthTruncateStream
. 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!