onurzorluer / react-image-file-resizer

Resize Local Images with React πŸŒ„ πŸŒ…
MIT License
313 stars 41 forks source link

TypeScript + API rewrite proposition #50

Open miszo opened 3 years ago

miszo commented 3 years ago

Hi @onurzorluer, for starters I would like to thank you for the lovely library πŸ‘

Is your feature request related to a problem? Please describe. I have two issues that I would like to address and can even create a PR with it πŸ™‚

  1. Currently, imageSizeResizer method has too many parameters, and it's not the best developer experience you can imagine.
  2. Also, any changes in the method API needs to be also manually changed in types definitions.

Describe the solution you'd like

  1. Refactor imageSizeResizer to take one object argument. It would be easier for developers to use it because they wouldn't need to check the order of the arguments that they need to pass. The exported method would look like this:
export default imageFileResizer: ({
    file,
    maxWidth,
    maxHeight,
    compressFormat,
    quality,
    rotation,
    responseUriFunc,
    outputType,
    minWidth,
    minHeight,
  }) {}
  1. Rewrite solution with typescript. Implementation would stay the same, only with added types, which would be automatically generated in build time, so you don't need to worry about changing them only for the exports. Any changes would come naturally because it would be closer to the library logic.

Please let me know what do you think about the solutions and my contribution towards it.

onurzorluer commented 3 years ago

Hello @miszo, Thanks for your support! We are open to all kinds of contributions.

I know too many parameters is not best case but I could not decide how I solve this. If you want to make PR for this issues, I would be very pleased.

miszo commented 3 years ago

Hi @onurzorluer, I hope that I get some time this weekend to do it. I'll send you a PR with this issues addressed :)

capaj commented 1 year ago

@onurzorluer vscode has a quick action for doing exactly that refactor BTW.