I do something similar for my redux reducers... I create an update object, then merge it with my original state with a shallow spread. I also use a deep merge function I wrote for rolling up partial application of configurations for different clients/environments.
Cool, glad to see this module. WebP would be a cool addition though, and not sure if there's any output optimization, which is a huge issue.
https://www.npmjs.com/package/jimp
Aside: Since Jimp supports a promises interface, imho the async usage should be the standard for new articles on JS.
Seems to be as much about spring as it is Vue or anything JS. Also, Spring is a *REALLY* heavy application base if you're deploying/managing/orchestrating or running in a containerized environment.
Not sure what to think of summary "articles" like this. I'm not a fan of them, even though they can open your eyes to something you may not have seen before.
Aside: just not a fan of angular in general.
I'd really like to see articles like this using fetch api[1] directly over axios. It's not that Axios doesn't work, but it's over 12kb (4.3kb min+gz)[2] .. you could do every call long form with fetch for less, you can do better still with a custom simple wrapper around it.
[1] https://caniuse.com/#feat=fetch
[2] https://bundlephobia.com/result?p=axios@0.19.0
These are pretty much the only features I'm still using Babel for… pretty much everything else is already in modern browsers and the current/latest Node.
Seems like the optional chaining operator has sat in limbo forever, recently moved to stage 3 iirc.
Another one is the pipeline operator. I'm hoping the F# syntax wins in the end.
One thing to consider as a second pass, would be to wrap this in a pool or queue that returns promises. capture the worker, a resolve/reject and the on handlers use the captured handlers or throw.
This way you can do expensive processors as a limited pool of workers. I've done similar to this with separate child_processes before.