npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@0k/cache

v0.2.0

Published

Kids cache implementation

Readme

This packages holds a cache decorator implementation. It draws its inspiration on kids.cache a python simple yet powerful cache decorator.

This implementation leverage decorator in typescript to reach same goals:

  • no dependencies
  • cache clearing support

Its still in infancy and lacks:

  • support for normal function (only methods and properties are cachable)
  • cache stats
  • 100% coverage
  • doc

Adding @0k/cache to your project

From the root of your project:

npm install --save @0k/cache

Or better, as @0k/cache is still in early release,

npm install --save @0k/cache#master

To be sure to get the latest version, relaunch this last command whenever you want to update.

Contributing to @0k/cache

This package is using npm to track dependendies, so you can install them with:

   npm install

As this package is written in typescript. You can transpile to javascript and transpile on file change with:

   ## Compile and watch
   npx tspc -w

Tests are managed through vitest

   ## Run test once
   npm run test

Note that you can also use npx vitest command to launch tests in watch mode.

Changelog

0.2.0 (2026-04-17)

New

  • Export unwrapObject function and CacheDecoratedMethod type. [Valentin Lab]

    CacheDecoratedMethod<F> types the return of the cache decorator, giving typed access to .clearCache() and .feedCache() without casting.

    unwrapObject extracts the proxy-unwrap loop previously duplicated inline, and exports it so callers can resolve the underlying object the same way the cache does.

    Overload signatures added to cache for accurate TypeScript inference on the various call forms.

0.1.4 (2026-04-08)

New

  • Add feedCache to programmatically inject values into the cache. [Valentin Lab]

    Allows pre-populating or overriding cached entries for specific argument keys without triggering the underlying computation. Exposed as a per-instance property alongside clearCache on both methods and getters. Also adds set to the CacheStore type.

  • Add cancelOnClear option to abort in-flight cached promises. [Valentin Lab]

    When enabled, cached promises that settle after their cache entry has been cleared throw a CancelledCache error instead of returning stale results. This prevents consumers from acting on values whose cache was invalidated mid-flight.

Changes

  • Ensure same object promise returned even with cancelOnClear [Valentin Lab]

    Move the cancelOnClear wrapper from the shared wrapped function into the per-instance ownMethod/getter in the initializer. Uses async/await instead of .then(). The wrapper is memoized per source promise so concurrent callers get the same object, preserving promise identity.

Fix

  • Scope clearCache per instance instead of shared prototype. [Valentin Lab]

    clearCache was attached to the prototype-level wrapped function, so when multiple instances initialized, the last closure would overwrite all previous ones. Shadow the prototype method/getter with per-instance own properties carrying their own clearCache.

0.1.3 (2026-04-08)

New

  • Add feedCache to programmatically inject values into the cache. [Valentin Lab]

    Allows pre-populating or overriding cached entries for specific argument keys without triggering the underlying computation. Exposed as a per-instance property alongside clearCache on both methods and getters. Also adds set to the CacheStore type.

Fix

  • Scope clearCache per instance instead of shared prototype. [Valentin Lab]

    clearCache was attached to the prototype-level wrapped function, so when multiple instances initialized, the last closure would overwrite all previous ones. Shadow the prototype method/getter with per-instance own properties carrying their own clearCache.

0.1.2 (2026-04-08)

New

  • Add cancelOnClear option to abort in-flight cached promises. [Valentin Lab]

    When enabled, cached promises that settle after their cache entry has been cleared throw a CancelledCache error instead of returning stale results. This prevents consumers from acting on values whose cache was invalidated mid-flight.

0.1.1 (2026-04-07)

Fix

  • Correct noCacheOnReject to return scalar value instead of tuple. [Valentin Lab]

    The rejection recovery path was returning the full [result, argsKey, isHit] tuple instead of just the value at index 0. This caused callers awaiting a cached async method to receive corrupted data when the rejection-retry path triggered.

0.1.0 (2026-03-23)

Fix

  • Unwrap this in clearCaches before cache map deletion. [Valentin Lab]

    When clearCaches() was called on a proxied instance, this referred to the proxy, but cache maps are keyed by the unwrapped raw instance. map.delete(this) silently missed, leaving caches uncleared.

    Apply the same unwrap loop used in the cached method wrapper so clearCaches resolves to the correct identity before deletion.

0.0.7 (2025-10-18)

Fix

  • Prevent possible loss of prior unWrapFn registration. [Valentin Lab]

0.0.6 (2025-08-20)

New

  • Make most of the test try each cache store implementation. [Valentin Lab]

  • Add a setTimeout implementation of the JsonKeyTTLCacheStore [Valentin Lab]

    Memory footprint is less in most cases

Fix

  • Make noCacheOnReject compatible with non-promise values. [Valentin Lab]

0.0.5 (2025-08-19)

New

  • Add option cacheOnSettled for async cached object. [Valentin Lab]

  • Add option noCacheOnReject for async cached objects. [Valentin Lab]

  • Add tests for not caching upon exception. [Valentin Lab]

0.0.4 (2025-08-15)

New

  • Add option noCacheOnReject for async cached objects. [Valentin Lab]

  • Add tests for not caching upon exception. [Valentin Lab]

0.0.2 (2025-08-04)

New

  • Add support of decorating getters. [Valentin Lab]

Fix

  • Support proxying this [Valentin Lab]