MCPcopy Index your code
hub / github.com/NaverPayDev/hidash

github.com/NaverPayDev/hidash @v1.1.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.2 ↗ · + Follow
222 symbols 765 edges 220 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

@naverpay/hidash

CI

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

npm install @naverpay/hidash
# or
yarn add @naverpay/hidash
# or
pnpm add @naverpay/hidash

Usage

Import functions individually using subpath imports:

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:

// 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

Benchmark

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:

/**
 * @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 file for details.


Made with ❤️ by NAVER Financial frontend team.

Extension points exported contracts — how you extend this code

TypedUser (Interface)
(no doc)
src/groupBy.test.ts
TestCase (Interface)
(no doc)
src/uniqBy.bench.ts
TestObject (Interface)
(no doc)
src/sumBy.bench.ts
MemoizedFunction (Interface)
(no doc)
src/memoize.ts
TestObject (Interface)
(no doc)
src/memoize.test.ts
TestObject (Interface)
(no doc)
src/uniq.test.ts
DeepObj (Interface)
(no doc)
src/merge.test.ts
TestCase (Interface)
(no doc)
src/uniqWith.bench.ts

Core symbols most depended-on inside this repo

size
called by 64
src/size.ts
isPlainObject
called by 56
src/isPlainObject.ts
keys
called by 47
src/keys.ts
findLastIndex
called by 47
src/findLastIndex.ts
toNumber
called by 44
src/toNumber.ts
isArray
called by 43
src/isArray.ts
findIndex
called by 41
src/findIndex.ts
isEmpty
called by 40
src/isEmpty.ts

Shape

Function 175
Interface 22
Class 18
Method 7

Languages

TypeScript100%

Modules by API surface

src/debounce.ts12 symbols
src/flow.test.ts9 symbols
src/values.test.ts7 symbols
src/throttle.ts7 symbols
src/uniqBy.test.ts6 symbols
src/merge.test.ts6 symbols
src/range.ts5 symbols
src/isPlainObject.test.ts5 symbols
src/sortBy.ts4 symbols
src/memoize.ts4 symbols
src/memoize.test.ts4 symbols
src/has.ts4 symbols

For agents

$ claude mcp add hidash \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact