@naverpay/hidash
Version:
improved lodash
140 lines (95 loc) • 4.07 kB
Markdown
# @naverpay/hidash
[](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.