@trpc/next
Version:
38 lines (35 loc) • 1.31 kB
JavaScript
import { httpBatchLink, httpLink } from '@trpc/client';
import { generateCacheTag } from '../shared.mjs';
// ts-prune-ignore-next
function experimental_nextHttpLink(opts) {
return (runtime)=>{
return (ctx)=>{
const { path, input, context } = ctx.op;
const cacheTag = generateCacheTag(path, input);
// Let per-request revalidate override global revalidate
const requestRevalidate = typeof context['revalidate'] === 'number' || context['revalidate'] === false ? context['revalidate'] : undefined;
const revalidate = requestRevalidate ?? opts.revalidate ?? false;
const _fetch = (url, fetchOpts)=>{
return fetch(url, {
...fetchOpts,
// cache: 'no-cache',
next: {
revalidate,
tags: [
cacheTag
]
}
});
};
const link = opts.batch ? httpBatchLink({
...opts,
fetch: _fetch
}) : httpLink({
...opts,
fetch: _fetch
});
return link(runtime)(ctx);
};
};
}
export { experimental_nextHttpLink };