Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

keyv-cache-proxy

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

keyv-cache-proxy - npm Package Compare versions

Comparing version
0.2.0
to
0.2.3
+6
-5
dist/index.d.ts

@@ -116,3 +116,3 @@ import type Keyv from "keyv";

skip: true;
} | undefined>;
} | void>;
/**

@@ -130,9 +130,10 @@ * Called when data is freshly fetched. Receives key and fetched value, can return modified value before caching.

skip: true;
} | undefined>;
} | void>;
/** Prefix of keys */
prefix?: string;
}): <T extends object>(obj: T) => DeepAsyncMethod<T>;
export type DeepAsyncMethod<T> = {
[K in keyof T]: T[K] extends (...args: infer A) => infer R ? (...args: A) => Promise<Awaited<R>> : T[K] extends object ? DeepAsyncMethod<T[K]> : T[K];
};
type IsPrimitive<T> = T extends string | number | boolean | symbol | bigint | null | undefined | Function | Array<any> | Date | RegExp | Promise<any> | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> ? true : false;
export type DeepAsyncMethod<T> = T extends (...args: infer A) => infer R ? (...args: A) => Promise<Awaited<R>> : IsPrimitive<T> extends true ? T : T extends object ? {
[K in keyof T]: DeepAsyncMethod<T[K]>;
} : T;
/**

@@ -139,0 +140,0 @@ * utils: globalThisCached

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAE7C,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE;IAC9C,6CAA6C;IAC7C,KAAK,EAAE,IAAI,GAAG,gBAAgB,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAC/F;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,KACP,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAC1E,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,IAGS,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,KAAG,eAAe,CAAC,CAAC,CAAC,CAuEtD;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GACtD,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACnC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrB,CAAC,CAAC,CAAC,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAcrE"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAE7C,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE;IAC9C,6CAA6C;IAC7C,KAAK,EAAE,IAAI,GAAG,gBAAgB,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC1F;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,KACP,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACrE,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,IAGS,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,KAAG,eAAe,CAAC,CAAC,CAAC,CAkFtD;AAKD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SACnB,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,GACT,QAAQ,GACR,KAAK,CAAC,GAAG,CAAC,GACV,IAAI,GACJ,MAAM,GACN,OAAO,CAAC,GAAG,CAAC,GACZ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GACb,GAAG,CAAC,GAAG,CAAC,GACR,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GACjB,OAAO,CAAC,GAAG,CAAC,GACZ,IAAI,GACJ,KAAK,CAAC;AAEV,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GACpE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACnC,WAAW,CAAC,CAAC,CAAC,SAAS,IAAI,GACzB,CAAC,GACD,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACzC,CAAC,CAAC;AAEV;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAcrE"}

@@ -100,70 +100,78 @@ /**

const { store, ttl, onCached, onFetched, prefix = "" } = options;
return (obj) => new Proxy(obj, {
get(target, prop, receiver) {
// handle wrap method calls with caching
const val = target[prop];
if (typeof val === "function") {
const method = val.bind(obj);
return async (...args) => {
const key = `${prefix}${String(prop)}(${args.map((arg) => JSON.stringify(arg)).join(",")})`;
// Check cache
let cached = await store.get(key);
if (onCached) {
const modified = await onCached(key, cached);
if (modified !== undefined && typeof modified === "object" && modified !== null) {
if ("skip" in modified && modified.skip) {
// Treat as cache miss
cached = undefined;
return (obj) => {
// Cache for nested proxies - ensures lazy loading only creates each proxy once
const proxyCache = new Map();
return new Proxy(obj, {
get(target, prop, receiver) {
// handle wrap method calls with caching
const val = target[prop];
if (typeof val === "function") {
const method = val.bind(obj);
return async (...args) => {
const key = `${prefix}${String(prop)}(${args.map((arg) => JSON.stringify(arg)).join(",")})`;
// Check cache
let cached = await store.get(key);
if (onCached) {
const modified = await onCached(key, cached);
if (modified !== undefined && typeof modified === "object" && modified !== null) {
if ("skip" in modified && modified.skip) {
// Treat as cache miss
cached = undefined;
}
else if ("data" in modified) {
// Return modified data
return modified.data;
}
// If modified is {} without skip or data, continue with original cached value
}
else if ("data" in modified) {
// Return modified data
return modified.data;
}
// If modified is {} without skip or data, continue with original cached value
}
}
if (cached !== undefined) {
return cached;
}
// Fetch fresh data
let result = await method(...args); // call original method
let customTtl = ttl;
// onFetched hook - can modify result before caching
if (onFetched) {
const modified = await onFetched(key, result);
if (modified !== undefined && typeof modified === "object" && modified !== null) {
if ("skip" in modified && modified.skip) {
// Skip caching, but still return the fetched value
return result;
}
else if ("data" in modified || "ttl" in modified) {
// Use modified data and/or custom TTL
if ("data" in modified && modified.data !== undefined) {
result = modified.data;
if (cached !== undefined) {
return cached;
}
// Fetch fresh data
let result = await method(...args); // call original method
let customTtl = ttl;
// onFetched hook - can modify result before caching
if (onFetched) {
const modified = await onFetched(key, result);
if (modified !== undefined && typeof modified === "object" && modified !== null) {
if ("skip" in modified && modified.skip) {
// Skip caching, but still return the fetched value
return result;
}
if ("ttl" in modified && modified.ttl !== undefined) {
customTtl = modified.ttl;
else if ("data" in modified || "ttl" in modified) {
// Use modified data and/or custom TTL
if ("data" in modified && modified.data !== undefined) {
result = modified.data;
}
if ("ttl" in modified && modified.ttl !== undefined) {
customTtl = modified.ttl;
}
}
// If modified is {} without skip/data/ttl, use original result with default TTL
}
// If modified is {} without skip/data/ttl, use original result with default TTL
}
await store.set(key, result, customTtl);
return result;
};
}
// deep proxy for nested objects - lazy loading with cache
if (typeof val === "object" && val !== null) {
// Check if we've already created a proxy for this property
if (!proxyCache.has(prop)) {
proxyCache.set(prop, KeyvCacheProxy({
store,
ttl,
onCached,
onFetched,
prefix: `${prefix}${String(prop)}.`,
})(val));
}
await store.set(key, result, customTtl);
return result;
};
}
// deep proxy for nested objects
if (typeof val === "object" && val !== null) {
return KeyvCacheProxy({
store,
ttl,
onCached,
onFetched,
prefix: `${prefix}${String(prop)}.`,
})(val);
}
// return property value for non-function properties
return Reflect.get(target, prop, receiver);
},
});
return proxyCache.get(prop);
}
// return property value for non-function properties
return Reflect.get(target, prop, receiver);
},
});
};
}

@@ -170,0 +178,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{
"name": "keyv-cache-proxy",
"version": "0.2.0",
"version": "0.2.3",
"description": "A transparent caching proxy for any object using Keyv - automatically cache method calls with TTL support",

@@ -44,5 +44,6 @@ "type": "module",

"devDependencies": {
"@biomejs/biome": "^2.3.8",
"@types/bun": "latest",
"standard-version": "^9.5.0"
"semantic-release": "^25.0.2",
"standard-version": "^9.5.0",
"oxlint": "latest"
},

@@ -56,5 +57,6 @@ "peerDependencies": {

"build": "tsc",
"fmt": "biome check --unsafe --write",
"prepack": "bun fmt && bun run build",
"release": "standard-version && git push --follow-tags && npm publish"
"test": "bun test",
"prepack": "bun run build",
"release": "standard-version && git push --follow-tags && npm publish",
"fix": "oxlint --fix"
},

@@ -61,0 +63,0 @@ "engines": {

@@ -322,2 +322,13 @@ # keyv-cache-proxy

## See Also
Other Keyv storage adapters by the same author:
- [keyv-github](https://github.com/snomiao/keyv-github) — GitHub repository adapter; each key is a file, commits are writes
- [keyv-sqlite](https://github.com/snomiao/keyv-sqlite) — SQLite storage adapter
- [keyv-mongodb-store](https://github.com/snomiao/keyv-mongodb-store) — MongoDB storage adapter
- [keyv-nedb-store](https://github.com/snomiao/keyv-nedb-store) — NeDB embedded file-based adapter
- [keyv-dir-store](https://github.com/snomiao/keyv-dir-store) — file-per-key directory adapter with TTL via mtime
- [keyv-nest](https://github.com/snomiao/keyv-nest) — hierarchical multi-layer caching adapter
## License

@@ -324,0 +335,0 @@

#!/usr/bin/env bun --watch
export {};
//# sourceMappingURL=github.d.ts.map
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/examples/github.ts"],"names":[],"mappings":""}
#!/usr/bin/env bun --watch
import { Keyv } from "keyv";
import { Octokit } from "octokit";
import { KeyvCacheProxy } from "../src";
const kv = new Keyv();
const gh = KeyvCacheProxy({
store: kv,
ttl: 600e3,
prefix: `github.`,
onHit: (key) => console.log(`Cache hit: ${key}`),
onMiss: (key) => console.log(`Cache miss: ${key}`),
})(
new Octokit({
// auth
}).rest,
);
console.log((await gh.repos.get({ owner: "snomiao", repo: "snomiao" })).data.html_url);
// prints: cache miss: github.repos.get:[{"owner":"snomiao","repo":"snomiao"}]
// returns fresh result
console.log((await gh.repos.get({ owner: "snomiao", repo: "snomiao" })).data.html_url);
// prints: cache hit: github.repos.get:[{"owner":"snomiao","repo":"snomiao"}]
// returns cached result
//# sourceMappingURL=github.js.map
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/examples/github.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,MAAM,EAAE,GAAG,cAAc,CAAC;IACzB,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC;IAChD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC;CAClD,CAAC,CACD,IAAI,OAAO,CAAC;AACX,OAAO;CACP,CAAC,CAAC,IAAI,CACP,CAAC;AAEF,OAAO,CAAC,GAAG,CACV,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CACzE,CAAC;AACF,8EAA8E;AAC9E,uBAAuB;AAEvB,OAAO,CAAC,GAAG,CACV,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CACzE,CAAC;AACF,6EAA6E;AAC7E,wBAAwB"}