The toss/es-toolkit
project is actively working on improving compatibility with lodash and addressing performance concerns, reflecting a strong user demand for seamless integration and efficiency.
The es-toolkit is a modern JavaScript utility library aimed at outperforming traditional libraries like lodash in terms of speed and bundle size. It offers a wide range of utility functions implemented with modern JavaScript practices.
Recent issues and pull requests (PRs) highlight a focus on enhancing lodash compatibility, such as supporting functions like toFinite
, toInteger
, and includes
. Discussions around improving functionalities like orderBy
to handle nested keys indicate ongoing efforts to match lodash's capabilities.
Sojin Park (raon0211)
debounce
, throttle
), performance improvements.D-Sketon
Junseong Park (jsparkdev)
Dayong Lee (dayongkr)
upperCase
, isNumber
), performance improvements.Benzy (benzyminzy)
isDate
function, tests/documentation.Dongho Kim (mass2527)
zip
, zipWith
).Alex Shan (shan-mx)
isNumber
function.Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 5 | 2 | 1 | 5 | 1 |
30 Days | 27 | 24 | 36 | 27 | 1 |
90 Days | 158 | 124 | 311 | 158 | 1 |
All Time | 182 | 145 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Sojin Park | 5 | 0/0/0 | 90 | 490 | 25982 | |
Yusuke Hayashi | 1 | 1/1/0 | 1 | 149 | 6262 | |
Dayong Lee | 1 | 21/18/2 | 18 | 91 | 5321 | |
D-Sketon | 1 | 31/23/0 | 23 | 146 | 5141 | |
mattiacoll | 2 | 2/5/0 | 8 | 35 | 1062 | |
seungrodotlee | 1 | 2/0/1 | 2 | 12 | 525 | |
Somi Park | 1 | 1/1/0 | 1 | 8 | 463 | |
Dongho Kim | 1 | 25/14/3 | 14 | 33 | 435 | |
Benzy | 2 | 2/2/0 | 5 | 13 | 409 | |
Junseong Park | 1 | 7/7/0 | 7 | 72 | 265 | |
Ankit | 1 | 0/1/0 | 1 | 9 | 240 | |
kimjeonghee | 1 | 1/1/0 | 1 | 7 | 198 | |
moonheekim0118 | 1 | 2/2/0 | 2 | 7 | 184 | |
knott | 1 | 7/1/4 | 1 | 8 | 174 | |
Sungwon WI | 1 | 1/1/0 | 1 | 6 | 174 | |
hyesung oh | 1 | 1/1/0 | 1 | 13 | 151 | |
Gromit (전민재) | 1 | 1/1/0 | 1 | 10 | 144 | |
Jiwoo So | 1 | 1/1/0 | 1 | 5 | 123 | |
Alex Shan | 1 | 1/1/0 | 1 | 5 | 111 | |
Péter Kovács | 1 | 1/1/0 | 1 | 6 | 108 | |
PiQuark6046 | 1 | 1/1/0 | 1 | 7 | 108 | |
DonghyunKim98 | 1 | 2/2/0 | 2 | 8 | 72 | |
xiaoluo | 1 | 1/1/0 | 1 | 4 | 50 | |
tisou1 | 1 | 2/1/1 | 1 | 2 | 47 | |
spookyuser | 1 | 0/1/0 | 1 | 4 | 41 | |
ninjat | 1 | 1/1/0 | 1 | 1 | 17 | |
mancuoj | 1 | 4/4/0 | 4 | 4 | 15 | |
YooJin Lee | 1 | 1/1/0 | 1 | 1 | 10 | |
Sung Jeon | 1 | 1/1/0 | 1 | 4 | 8 | |
Yota Toyama | 1 | 0/1/0 | 1 | 1 | 6 | |
Kingston | 1 | 1/1/0 | 1 | 1 | 3 | |
Minsu | 1 | 1/1/0 | 1 | 1 | 2 | |
Goblin (Kim Woo Seok) (VVSOGI) | 0 | 2/0/0 | 0 | 0 | 0 | |
Guo (Plumbiu) | 0 | 1/0/0 | 0 | 0 | 0 | |
Gweesin Chan (gweesin) | 0 | 2/0/1 | 0 | 0 | 0 | |
Gonhong Cheon (iDevGon) | 0 | 2/0/0 | 0 | 0 | 0 | |
Lanqing Huang (lqhuang) | 0 | 1/0/1 | 0 | 0 | 0 | |
coding-honey (coding-honey) | 0 | 1/0/0 | 0 | 0 | 0 | |
Seongjee Kim (kim-sung-jee) | 0 | 2/0/1 | 0 | 0 | 0 | |
Minhee Lee (leeminhee119) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
The recent activity on the toss/es-toolkit
GitHub repository indicates a vibrant and engaged community, with 37 open issues and multiple contributors actively discussing and proposing enhancements. Notable themes include a focus on achieving compatibility with lodash, addressing performance concerns, and enhancing type safety in TypeScript. Several issues highlight ongoing discussions about missing functionalities that are present in lodash, such as cloneDeep
, pick
, and various string manipulation functions.
Several issues stand out due to their implications for the library's usability and performance. For instance, the discussion surrounding orderBy
reveals that it currently does not support nested keys, which is a significant limitation compared to lodash. Additionally, there are multiple requests for functions that would enhance compatibility with lodash, indicating a strong desire among users to transition smoothly from lodash to es-toolkit.
Issue #580: startCase wrong behaviour/s
Issue #567: Support for toFinite
, toInteger
, toNumber
in compat layer
Issue #561: Support for includes
Issue #559: Question: Any way to customize merge to "replace" arrays?
Issue #550: Support normalize
for numbers
Issue #91: ⛳ Goal: Almost feature parity with lodash
Issue #471: Warning: TypeError when using debounce in react-native
Issue #441: Support for findKey
Issue #431: Enhancing Release Note Generation through Automation
Issue #481: Support for differenceBy
(compat)
orderBy
) and the addition of missing utility functions (e.g., cloneDeep
, pick
).uniqBy
and randomInt
, where users have noted discrepancies between es-toolkit and lodash.Overall, the active engagement from contributors suggests a strong commitment to evolving the library while addressing user needs and maintaining high standards of performance and usability.
The analysis of the pull requests (PRs) for the es-toolkit
project reveals a dynamic and active development environment. The project is focused on enhancing its utility library with new features, performance improvements, and comprehensive documentation updates. The contributions range from adding new functions to optimizing existing ones, reflecting a commitment to both expanding functionality and improving efficiency.
PR #584: feat(compat): implement pad
Adds a new pad
function to the compatibility layer, enhancing string manipulation capabilities.
PR #583: fix(padStart/padEnd): fix compatibility with lodash and add tests
Fixes compatibility issues with lodash's padStart
and padEnd
, ensuring consistent behavior across libraries.
PR #582: feat(flip): implement flip
Introduces a new flip
function, allowing for the reversal of arguments in function calls.
PR #581: feat(defer): implement defer
Adds a defer
function, enabling delayed execution of functions, which is useful for scheduling tasks.
PR #579: feat(isError): append isError
Implements an isError
function to check if a value is an error object.
PR #578: refactor(curry): simplify curry(compat)
Refactors the existing curry
implementation for better readability and performance.
PR #577: feat(isFinite): add isFinite to compat
Adds an isFinite
function to check if a value is a finite number.
PR #576: docs(trimStart): Update docs for trimStart
Updates documentation for the trimStart
function to clarify its behavior.
PR #575: docs(upperFirst): Update docs for upperFirst
Improves documentation for the upperFirst
function, ensuring accuracy and clarity.
PR #574: feat(invertBy): add invertBy to compat
Introduces an invertBy
function, allowing for inversion of key-value pairs in objects.
PR #571: feat(invertBy): add invertBy to compat
Added an invertBy
function but was closed without merging, possibly due to changes in implementation or direction.
PR #562: feat(isJSONObject):implement isJSONObject
Implemented an isJSONObject
function but was closed without merging, indicating potential reconsideration of the approach or functionality.
PR #560: docs: add contributing document
Proposed addition of a contributing document but was closed without merging, suggesting it may have been redundant or unnecessary.
PR #549: fix: add missing export
Fixed an issue by adding a missing export in the compatibility layer, enhancing module usability.
PR #548: docs: fix typo in /bundle-size
, /compatibility
, /intro
, /usage
Corrected typos across multiple documentation files, improving clarity and professionalism.
The PRs reflect a robust development effort within the es-toolkit
project. Key themes include:
Feature Expansion: Many PRs focus on adding new functions (pad
, flip
, defer
, etc.), indicating ongoing efforts to enhance the library's utility and versatility.
Performance Optimization: Several contributions aim at optimizing existing functions (curry
, zipWith
, etc.), showcasing a commitment to efficiency and performance improvements.
Documentation Improvements: There is a significant emphasis on updating and refining documentation (trimStart
, upperFirst
, etc.), which is crucial for user adoption and understanding of the library's features.
Community Engagement: The presence of PRs from various contributors suggests active community involvement. However, some PRs are closed without merging (invertBy
, isJSONObject
), which could indicate either changes in project direction or the need for further refinement before integration.
Testing and Reliability: Contributions often include benchmarks and tests (invertBy
, isFinite
, etc.), highlighting the project's focus on reliability and performance validation.
In conclusion, the analysis of PRs in the es-toolkit
project reveals a vibrant development ecosystem dedicated to continuous improvement through feature enhancement, optimization, thorough documentation, and active community participation.
Sojin Park (raon0211)
debounce
, throttle
, isDate
, isSafeInteger
, and various compatibility functions.curry
function and enhancing documentation for various utility functions.D-Sketon
Junseong Park (jsparkdev)
Dayong Lee (dayongkr)
upperCase
, isNumber
, and performance improvements.Benzy (benzyminzy)
isDate
function and associated tests/documentation.Dongho Kim (mass2527)
zip
and zipWith
.Alex Shan (shan-mx)
isNumber
function.The development team is actively engaged in enhancing the es-toolkit library through collaborative efforts focused on performance optimization, feature expansion, and comprehensive documentation. The recent activities reflect a commitment to maintaining high standards of code quality while fostering community contributions.