RepositoryTypeScriptAUAustralia
theKashey

theKashey/kashe

A memoization library based on weakmaps. 🤯 Sometimes cache is kashe

70stars
2forks
2issues
1views

🔥 kashe: Memoization an toàn, mạnh mẽ cho mọi môi trường

kashe không chỉ là một thư viện memoization — nó là công cụ để dẫn xuất dữ liệu từ dữ liệu, với tư duy bền vững về WeakMap.

kashe là một thư viện dẫn xuất dữ liệu (data derivation) cho JavaScript và TypeScript, hoạt động dựa trên nguyên tắc memoization yếu (weak memoization). Khác với các thư viện memoization thông thường, kashe lưu trữ kết quả bên trong chính đối số đầu vào thông qua WeakMap, giúp tránh rò rỉ bộ nhớ và hỗ trợ cách ly cache cho từng yêu cầu. Phát triển bởi theKashey, kashe được thiết kế để giải quyết các thách thức phổ biến như rò rỉ bộ nhớ, an toàn giữa các request, và tính dự đoán trong kiểm thử.

✨ Điểm nổi bật

  • An toàn bộ nhớ: Sử dụng WeakMap để lưu trữ dữ liệu, tránh rò rỉ bộ nhớ khi đối tượng bị thu gom.
  • Cách ly cache theo request: Hỗ trợ cắt cache bằng tùy chọn resolver, phù hợp cho môi trường SSR.
  • Kiểm soát nâng cao: Hỗ trợ TTL, giới hạn LRU, và cấu hình serializer.
  • Đa môi trường: Hoạt động trên trình duyệt, Node.js, SSR và môi trường test.
  • Hiện đại: Viết bằng TypeScript với hỗ trợ đầy đủ ESM và CJS.
  • Tích hợp dễ dàng: Cú pháp tương tự React.cache, dễ áp dụng ngay.

💡 Vì sao đáng chú ý

kashe không phải là sự thay thế trực tiếp cho mọi thư viện memoization. Thay vào đó, nó đặt ra những nguyên tắc thiết kế rõ rệt: an toàn bộ nhớ trước tiện lợi, và vòng đời cache gắn liền với đối tượng đầu vào. Nhờ WeakMap, kashe tự động dọn dẹp cache khi đối tượng không còn tham chiếu, hoàn hảo cho các ứng dụng SSR, môi trường đồng thời, hoặc hệ thống đa khách hàng.


#Memoization #WeakMap #JavaScript #TypeScript #TiniX

Similar Projects

Discover other similar projects and AI models.

RepositoryTypeScript
toomuchdesign/re-reselect

Enhance Reselect selectors with deeper memoization and cache management.

1.1k
Oct 19, 2026
RepositoryJavaScript
aduth/memize

Unabashedly-barebones memoization library with an aim toward speed

120
Aug 6, 2025
RepositoryHaskell
Bodigrim/chimera

Lazy infinite compact streams with cache-friendly O(1) indexing and applications for memoization

61
Oct 20, 2026
RepositoryTypeScript
planttheidea/moize

The consistently-fast, complete memoization solution for JS

914
Oct 20, 2026
RepositoryTypeScript
manuelbieh/react-ssr-setup

React Starter Project with Webpack 4, Babel 7, TypeScript, CSS Modules, Server Side Rendering, i18n and some more niceties

778
Feb 13, 2026
RepositoryTypeScript
planttheidea/micro-memoize

A blazing fast memoization library that is tiny but feature-rich.

263
Oct 16, 2026
RepositoryTypeScript
andywer/use-inline-memo

⚛️ React hook for memoizing values inline anywhere in a component

164
Sep 10, 2026
RepositoryTypeScript
slikts/tuplerone

Tuples and value objects for JavaScript 🤷

64
Apr 27, 2026
RepositoryPython
joblib/joblib

Computing with Python functions.

4.4k
Oct 16, 2026