@trpc/next
Version:
49 lines (45 loc) • 1.74 kB
JavaScript
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;
;