moleculerjs / moleculer

:rocket: Progressive microservices framework for Node.js
https://moleculer.services/
MIT License
6.07k stars 575 forks source link

[lodash] Remove usage of _.defaultsDeep #738

Open abdavid opened 4 years ago

abdavid commented 4 years ago

See #433 for context.

Describe the solution you'd like Remove usage of _.defaultsDeep throughout Moleculer, or import the dependency directly without bundling the whole lodash lib.

Describe alternatives you've considered None so far. I have tested using Object.assign a couple of places where configurations get merged with tests still passing, so that could be feasible.

Additional context https://github.com/moleculerjs/moleculer/search?q=_.defaultsDeep&unscoped_q=_.defaultsDeep

icebob commented 4 years ago

The problem with Object.assign is that it doesn't copy the object deeply, only the first level. And there are other differences in the logic how they handle arrays, null, undefined.

abdavid commented 4 years ago

I would imagine that would cause some issues. We might need to find a standalon solution to this if we do not conclude with that it is sufficient to include the dependency directly from lodash.

icebob commented 4 years ago

I will write a unit test with _.defaultsDeep with moleculer use-cases, and after that, we will able to create a custom implementation.

Wallacy commented 4 years ago

If want to look this is what i use on my code for merge:

https://gist.github.com/Wallacy/adf546f4de34848e8355d6a511d89647

Should be more simple on pure js; The hard part was be a code with good performance xD;