
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
@mohamedhabibwork/cachekit
Advanced tools
Provider-first, runtime-portable TypeScript caching for Node.js 20+, Bun, and Deno.
CacheKit gives applications one deliberate cache contract without hiding provider differences. Core imports have no provider SDK dependencies; provider entrypoints load their SDK only when you use them.
npm install @mohamedhabibwork/cachekit
import { createCache } from '@mohamedhabibwork/cachekit';
const cache = await createCache({
type: 'memory',
namespace: 'catalog:v1',
defaultTtl: '10m',
});
await cache.set('product:42', { id: 42, name: 'Keyboard' }, {
ttl: '5m',
tags: ['products', 'product:42'],
});
const product = await cache.get<{ id: number; name: string }>('product:42');
| Provider | Import | Status |
|---|---|---|
| Memory | @mohamedhabibwork/cachekit or /memory | Complete in-process provider: TTL, SWR, tags, local locks, codecs. |
| Redis protocol | @mohamedhabibwork/cachekit/redis | Optional redis peer dependency; works with Redis-compatible endpoints. Tags and namespace clear deliberately report unsupported. |
| Custom | @mohamedhabibwork/cachekit | Register an application provider with the public contract. |
The architecture plan tracks planned profiles and embedded drivers. They are not published as empty entrypoints: importing a package path always means a usable implementation exists.
npm install @mohamedhabibwork/cachekit redis
import { createRedisCache } from '@mohamedhabibwork/cachekit/redis';
const cache = await createRedisCache({
url: process.env.REDIS_URL,
namespace: 'catalog:v1',
defaultTtl: '10m',
});
await cache.set('product:42', { id: 42 }, { ttl: '5m', native: { NX: true } });
The generic factory also supports Redis directly: createCache({ type: 'redis', url: process.env.REDIS_URL }). The optional SDK is still loaded only when that provider is created.
You may inject a compatible client with sendCommand() instead of letting CacheKit create one. If redis is missing, the provider throws CacheDependencyMissingError with its installation command.
undefined; null is cacheable.ttl is the fresh period; staleTtl is an additional stale window. get() returns fresh values only; get(..., { allowStale: true }) can return in-window stale data.getOrSet() deduplicates concurrent loads within a process. With a stale entry it returns the stale value while one local caller refreshes it, unless serveStale: false.json (default), text, and bytes. Custom codecs must have a name, encode, and decode.cache.capabilities before relying on a non-portable operation such as distributed locks or tags.npm ci
npm run check
npm run check lints, typechecks, tests, and produces dual ESM/CJS output. The CI workflow covers Node 20/22/24 plus Bun and Deno smoke tests. Pushing a v* tag runs the provenance-enabled publish workflow; see publishing.
FAQs
Provider-first, runtime-portable TypeScript caching.
The npm package @mohamedhabibwork/cachekit receives a total of 17 weekly downloads. As such, @mohamedhabibwork/cachekit popularity was classified as not popular.
We found that @mohamedhabibwork/cachekit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.