avoidwork / filesize.js

JavaScript library to generate a human readable String describing the file size
https://filesizejs.com
BSD 3-Clause "New" or "Revised" License
1.61k stars 97 forks source link

Backwards-incompatible change in 10.0.9 types #173

Closed nwalters512 closed 1 year ago

nwalters512 commented 1 year ago

172 appears to disallow passing an options object without also specifying an output property. This can be reproduced with the following code:

import { filesize } from 'filesize';

const size = filesize(12345, { base: 2 });
Screenshot 2023-08-09 at 13 20 00

TypeScript playground link: https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgM2AGwKYGdgC8NwC+KUEIcA5KpjvhQNwCwAUCwMYQB2W8tBAvCnTY8GABQBGAEwBmACwBWADSI4AIwCGWDAC44UogEp6QA

If this was intentional, this should be released in a v11, as it was a breaking change. However, based on the docs, I can assume this was unintentional, as output is specified as having a default of string, and it isn't explicitly passed in the example at the top of the README. If this was indeed unintentional, I can open a PR making the following change to the types:

-export function filesize(byteCount: number, options: FileSizeOptionsString): string
+export function filesize(byteCount: number, options: FileSizeOptionsBase | FileSizeOptionsString): string
avoidwork commented 1 year ago

what's the best course of action for typescript users? i can revert, but I'm not going to produce a fix.

avoidwork commented 1 year ago

i've reverted 10.0.9 to produce 10.0.10 (equal to 10.0.8).

avoidwork commented 1 year ago

cc @tschlechtweg

ghost commented 1 year ago

I overlooked that case. @nwalters512 please go ahead and create a PR with the changes you proposed, please also don't forget to then change the overloads of the partial-function.

avoidwork commented 1 year ago

I've reverted 10.0.9 as 10.0.10/11 (ugh) so please correct and open a new PR.