mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-30 18:30:32 -06:00
26 lines
829 B
TypeScript
26 lines
829 B
TypeScript
// cache wrapper for unstable_cache
|
|
// workaround for https://github.com/vercel/next.js/issues/51613
|
|
// copied from https://github.com/vercel/next.js/issues/51613#issuecomment-1892644565
|
|
import { unstable_cache } from "next/cache";
|
|
import { parse, stringify } from "superjson";
|
|
|
|
export { revalidateTag } from "next/cache";
|
|
|
|
export const cache = <T, P extends unknown[]>(
|
|
fn: (...params: P) => Promise<T>,
|
|
keys: Parameters<typeof unstable_cache>[1],
|
|
opts: Parameters<typeof unstable_cache>[2]
|
|
) => {
|
|
const wrap = async (params: unknown[]): Promise<string> => {
|
|
const result = await fn(...(params as P));
|
|
return stringify(result);
|
|
};
|
|
|
|
const cachedFn = unstable_cache(wrap, keys, opts);
|
|
|
|
return async (...params: P): Promise<T> => {
|
|
const result = await cachedFn(params);
|
|
return parse(result);
|
|
};
|
|
};
|