UNPKG

@trpc/next

Version:

The tRPC Next.js library

49 lines (45 loc) 1.74 kB
'use strict'; var client = require('@trpc/client'); var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import'); var createActionHook = require('./create-action-hook.js'); // ts-prune-ignore-next function experimental_createTRPCNextAppDirClient(opts) { const client$1 = client.createTRPCUntypedClient(opts.config()); // const useProxy = createUseProxy<TRouter>(client); const cache = new Map(); return unstableCoreDoNotImport.createRecursiveProxy(({ path, args })=>{ // const pathCopy = [key, ...path]; const pathCopy = [ ...path ]; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const procedureType = client.clientCallTypeToProcedureType(pathCopy.pop()); if (procedureType === 'query') { const queryCacheKey = JSON.stringify([ path, args[0] ]); const cached = cache.get(queryCacheKey); if (cached?.promise) { return cached.promise; } } const fullPath = pathCopy.join('.'); const promise = client$1[procedureType](fullPath, ...args); if (procedureType !== 'query') { return promise; } const queryCacheKey = JSON.stringify([ path, args[0] ]); cache.set(queryCacheKey, { promise }); return promise; }); // }); } exports.experimental_createActionHook = createActionHook.experimental_createActionHook; exports.experimental_serverActionLink = createActionHook.experimental_serverActionLink; exports.experimental_createTRPCNextAppDirClient = experimental_createTRPCNextAppDirClient;