Replaces the lodash library with es-toolkit
This PR replaces lodash dependencies with es-toolkit to improve performance and fix some potential security risks as lodash no longer being maintained.
Description
es-toolkit is a modern alternative to lodash that's significantly faster and lighter, which could potentially boost concurrently's overall performance (#). It's been tested using lodash's actual test suite and we are guarantee 100% compatiable with lodash (#).
It's already being adopted by major projects like Storybook, Recharts, Ink, and CKEditor with 2.8M downloads a week on NPM, and supports compatible layer with lodash.
You can learn more at https://es-toolkit.dev/intro.html.
IMPORTANT: This PR uses es-toolkit/compat which is compatible layer with lodash, and we are not expecting for any side-effects.
Motivation and Context
lodash is no longer be maintained, and it has some potential security risks. Also, es-toolkit improved the overall performance (#), while it 100% compatible from lodash (#). This migration will also reduces the bulid size (#).
How Has This Been Tested?
This PR simply replaces all 'lodash' imports to 'es-toolkit/compat'. I ran the npm run test and it worked well. You are still welcomed to cross-check this by running CI test pipeline.
The committers listed above are authorized under a signed CLA.
- :white_check_mark: login: kms0219kms (77dc1b2fa826ac296be974e64b40ef741b758243, 4d06fe8df5de1663491b2866fd6c7a7535feae57, 58df7b81a76fc29af929b81c1dbeb54e7a112086)
This repository uses lodash in example code and test code, and in the code generator in @grpc/proto-loader. Overall, the reasons you provide for switching don't really seem applicable, so I would prefer not to change this unless there's a specific reason to do so for the usage in this repository.
@murgatroid99 I have updated the original post to provide more information and a reason. If you need more information, please wait until the weekdays and our team will provide you with the appropriate information.
These AI spambots are so annoying.