Files
homarr/packages/next-cache-handler/src/index.ts
T
Thomas Camlong 345a4be4b0 fix: CI build errors + simplify cache handler and data cache
- Remove `export const dynamic` from 4 routes (incompatible with cacheComponents)
- Static import for redis-handler (Turbopack can't resolve relative dynamic imports)
- Simplify redis-handler: Buffer.concat, NonNullable, single connect promise
- Inline single-use helpers in integration-data-cache
- Non-greedy SVG regex to prevent ReDoS
- Inline getDevelopmentServiceAliases in next.config
- Remove restating comments
2026-08-08 00:19:27 +02:00

25 lines
1.2 KiB
TypeScript

import type { CacheHandler } from "next/dist/server/lib/cache-handlers/types";
import { RedisCacheHandler } from "./redis-handler";
let handlerPromise: Promise<CacheHandler> | undefined;
const createHandlerAsync = async (): Promise<CacheHandler> => {
const useRedis = process.env.REDIS_HOST || process.env.REDIS_IS_EXTERNAL === "true";
if (useRedis) return new RedisCacheHandler();
const { createDefaultCacheHandler } = await import("next/dist/server/lib/cache-handlers/default");
return createDefaultCacheHandler(32 * 1024 * 1024);
};
const getHandler = (): Promise<CacheHandler> => (handlerPromise ??= createHandlerAsync());
export default {
get: async (...args: Parameters<CacheHandler["get"]>) => (await getHandler()).get(...args),
set: async (...args: Parameters<CacheHandler["set"]>) => (await getHandler()).set(...args),
refreshTags: async () => (await getHandler()).refreshTags(),
getExpiration: async (...args: Parameters<CacheHandler["getExpiration"]>) =>
(await getHandler()).getExpiration(...args),
updateTags: async (...args: Parameters<CacheHandler["updateTags"]>) => (await getHandler()).updateTags(...args),
} satisfies CacheHandler;