UNPKG

@naverpay/hidash

Version:

improved lodash

140 lines (95 loc) 4.07 kB
# @naverpay/hidash [![CI](https://github.com/NaverPayDev/hidash/actions/workflows/matrix.yaml/badge.svg)](https://github.com/NaverPayDev/hidash/actions/workflows/matrix.yaml) A modern, performance-focused alternative to Lodash. ## Features - 🚀 **Dual Package Support (CJS, ESM)**: Built for modern JavaScript, optimized for tree-shaking - ⚡️ **High Performance**: Consistently faster than Lodash in benchmarks (verified with Vitest) - 🔄 **Drop-in Replacement**: 100% compatible with Lodash's interface and behavior - 🎯 **Type Safety**: Written in TypeScript with complete type definitions - 📦 **Subpath Imports**: Granular imports for minimal bundle size - 🧪 **Test Coverage**: Every function has test cases that match Lodash's behavior exactly - 0️⃣ **Zero Dependencies**: No external runtime dependencies, keeping your bundle lean -**Proven Reliability**: Used in production at NAVER Pay ## Installation ```bash npm install @naverpay/hidash # or yarn add @naverpay/hidash # or pnpm add @naverpay/hidash ``` ## Usage Import functions individually using subpath imports: ```typescript import has from '@naverpay/hidash/has' import isEmpty from '@naverpay/hidash/isEmpty' import isObject from '@naverpay/hidash/isObject' // Same interface as Lodash has(object, 'user.name') // true isEmpty([]) // true isObject({}) // true ``` ❌ Package does not support namespace imports: ```typescript // This will not work import {has, isEmpty} from '@naverpay/hidash' ``` ## Why hidash? - **Modern**: Built specifically for subpath imports for optimal tree-shaking - **Performance**: Optimized implementations that outperform Lodash in most scenarios - **Compatibility**: Designed as a drop-in replacement with identical interfaces and behavior - **Tested**: Comprehensive test suite ensuring Lodash compatibility and performance benchmarks ## Test Coverage - [Test Coverage](https://naverpaydev.github.io/hidash/#/) ## Benchmark - [Link](./BENCHMARK.md) ## Contributing Contributions are welcome! ### Feature Requests Want additional Lodash methods to be implemented? Please create an issue with: - The method name - Use case description - Current workaround (if any) We prioritize implementing new methods based on community needs. ### Pull Requests Feel free to submit PRs for: - Bug fixes - Performance improvements - New utility methods - Documentation improvements Please read our contributing guidelines before submitting PRs. ### Commenting Guidelines To ensure code readability and maintainability, please follow these guidelines when adding comments to the codebase: #### 1. Function Header Comments (Required) - **Description:** Clearly and concisely describe the purpose and behavior of the function. - **Params:** List and explain all parameters. - **Returns:** Describe the return value(s). **Example:** ```js /** * @description * Returns a new array with the results of calling a provided function on every element in the collection. * * @param {Array|Object} collection - The collection to iterate over. * @param {Function} iteratee - The function invoked per iteration. * @returns {Array} The new mapped array. */ ``` #### 2. Internal Comments (Optional) - Add internal comments only when necessary, such as for: - Explaining complex logic - Highlighting performance improvements - Noting non-obvious implementation details - Keep these comments concise and focused. #### 3. Consistency with lodash - Most function names are identical to lodash. - However, **@naverpay/hidash** may introduce enhancements (e.g., improved type safety, interface changes). - Please clearly document any differences or improvements from lodash in the relevant function’s header comment. #### 4. General Best Practices - Keep comments up to date with code changes. - Avoid redundant or obvious comments. - Use English for all comments. ## License MIT License - see the [LICENSE.md](LICENSE) file for details. --- Made with ❤️ by NAVER Financial frontend team.