cache-kit
Version:
A simple caching layer for fetch requests — supports memory, browser (localStorage), and Node.js (filesystem) adapters with smart strategies.
50 lines (48 loc) • 1.78 kB
JavaScript
import {
__async
} from "./chunk-VM2JCVBB.mjs";
// src/cacheManager.ts
var cachedFetch = (url, options, cacheOptions) => __async(null, null, function* () {
var _a;
const methodName = (_a = options == null ? void 0 : options.method) == null ? void 0 : _a.toLowerCase();
let response;
const normalizedUrl = new URL(url).href;
try {
if ((!methodName || methodName === "get") && !(options == null ? void 0 : options.body)) {
switch (cacheOptions.adapter) {
case "memory": {
const { default: memoryCachedFetch } = yield import("./memory-5PKSXVDH.mjs");
response = yield memoryCachedFetch(normalizedUrl, options, cacheOptions);
break;
}
case "browser": {
if (typeof window === "undefined") {
throw new Error("Browser adapter cannot be used in a Node.js environment.");
}
const { default: browserCachedFetch } = yield import("./browser-GGUSVVA3.mjs");
response = yield browserCachedFetch(normalizedUrl, options, cacheOptions);
break;
}
case "node": {
if (typeof window !== "undefined") {
throw new Error("Node adapter cannot be used in the browser.");
}
const { default: nodeCachedFetch } = yield import("./node-7YOGWEVI.mjs");
response = yield nodeCachedFetch(normalizedUrl, options, cacheOptions);
break;
}
default:
throw new Error(`Unknown adapter: ${cacheOptions.adapter}`);
}
} else {
response = yield fetch(url, options);
}
} catch (error) {
console.warn("\u26A0\uFE0F cachedFetch fallback due to error:", error);
response = yield fetch(url, options);
}
return response;
});
export {
cachedFetch
};