{"version":3,"file":"nextHttp.mjs","names":[],"sources":["../../../src/app-dir/links/nextHttp.ts"],"sourcesContent":["import type {\n  HTTPBatchLinkOptions,\n  HTTPLinkOptions,\n  TRPCLink,\n} from '@trpc/client';\nimport { httpBatchLink, httpLink } from '@trpc/client';\nimport type {\n  AnyRootTypes,\n  AnyRouter,\n} from '@trpc/server/unstable-core-do-not-import';\nimport { generateCacheTag } from '../shared';\n\ninterface NextLinkBaseOptions {\n  revalidate?: number | false;\n  batch?: boolean;\n}\n\ntype NextLinkSingleOptions<TRoot extends AnyRootTypes> = NextLinkBaseOptions &\n  Omit<HTTPLinkOptions<TRoot>, 'fetch'> & {\n    batch?: false;\n  };\n\ntype NextLinkBatchOptions<TRoot extends AnyRootTypes> = NextLinkBaseOptions &\n  Omit<HTTPBatchLinkOptions<TRoot>, 'fetch'> & {\n    batch: true;\n  };\n\n// ts-prune-ignore-next\nexport function experimental_nextHttpLink<TRouter extends AnyRouter>(\n  opts:\n    | NextLinkSingleOptions<TRouter['_def']['_config']['$types']>\n    | NextLinkBatchOptions<TRouter['_def']['_config']['$types']>,\n): TRPCLink<TRouter> {\n  return (runtime) => {\n    return (ctx) => {\n      const { path, input, context } = ctx.op;\n      const cacheTag = generateCacheTag(path, input);\n\n      // Let per-request revalidate override global revalidate\n      const requestRevalidate =\n        typeof context['revalidate'] === 'number' ||\n        context['revalidate'] === false\n          ? context['revalidate']\n          : undefined;\n\n      const revalidate = requestRevalidate ?? opts.revalidate ?? false;\n\n      const _fetch: NonNullable<HTTPLinkOptions<AnyRootTypes>['fetch']> = (\n        url,\n        fetchOpts,\n      ) => {\n        return fetch(url, {\n          ...fetchOpts,\n          // cache: 'no-cache',\n          next: {\n            revalidate,\n            tags: [cacheTag],\n          },\n        });\n      };\n      const link = opts.batch\n        ? httpBatchLink({\n            ...(opts as any),\n            fetch: _fetch,\n          })\n        : httpLink({\n            ...(opts as any),\n            fetch: _fetch,\n          });\n\n      return link(runtime)(ctx);\n    };\n  };\n}\n"],"mappings":";;;;AA4BA,SAAgB,0BACd,MAGmB;CACnB,QAAQ,YAAY;EAClB,QAAQ,QAAQ;;GACd,MAAM,EAAE,MAAM,OAAO,YAAY,IAAI;GACrC,MAAM,WAAW,iBAAiB,MAAM,KAAK;GAG7C,MAAM,oBACJ,OAAO,QAAQ,kBAAkB,YACjC,QAAQ,kBAAkB,QACtB,QAAQ,gBACR,KAAA;GAEN,MAAM,cAAA,OAAa,sBAAA,QAAA,sBAAA,KAAA,IAAA,oBAAqB,KAAK,gBAAA,QAAA,SAAA,KAAA,IAAA,OAAc;GAE3D,MAAM,UACJ,KACA,cACG;IACH,OAAO,MAAM,KAAA,eAAA,eAAA,CAAA,GACR,SAAA,GAAA,CAAA,GAAA,EAEH,MAAM;KACJ;KACA,MAAM,CAAC,QAAQ;IACjB,EAAA,CACF,CAAC;GACH;GAWA,QAVa,KAAK,QACd,cAAA,eAAA,eAAA,CAAA,GACM,IAAA,GAAA,CAAA,GAAA,EACJ,OAAO,OAAA,CACT,CAAC,IACD,SAAA,eAAA,eAAA,CAAA,GACM,IAAA,GAAA,CAAA,GAAA,EACJ,OAAO,OAAA,CACT,CAAC,EAAA,CAEO,OAAO,CAAC,CAAC,GAAG;EAC1B;CACF;AACF"}