@trpc/react-query
Version:
69 lines (67 loc) • 2.77 kB
JavaScript
const require_getQueryKey = require('./getQueryKey-PyKLS56S.cjs');
const __tanstack_react_query = require_getQueryKey.__toESM(require("@tanstack/react-query"));
const __trpc_server_unstable_core_do_not_import = require_getQueryKey.__toESM(require("@trpc/server/unstable-core-do-not-import"));
const react = require_getQueryKey.__toESM(require("react"));
const react_jsx_runtime = require_getQueryKey.__toESM(require("react/jsx-runtime"));
//#region src/rsc.tsx
var import_objectSpread2 = require_getQueryKey.__toESM(require_getQueryKey.require_objectSpread2());
const HELPERS = ["prefetch", "prefetchInfinite"];
/**
* @note This requires `@tanstack/react-query@^5.49.0`
* @note Make sure to have `dehydrate.serializeData` and `hydrate.deserializeData`
* set to your data transformer in your `QueryClient` factory.
* @example
* ```ts
* export const createQueryClient = () =>
* new QueryClient({
* defaultOptions: {
* dehydrate: {
* serializeData: transformer.serialize,
* },
* hydrate: {
* deserializeData: transformer.deserialize,
* },
* },
* });
* ```
*/
function createHydrationHelpers(caller, getQueryClient) {
const wrappedProxy = (0, __trpc_server_unstable_core_do_not_import.createRecursiveProxy)(async (opts) => {
const path = [...opts.path];
const args = [...opts.args];
const proc = path.reduce((acc, key) => HELPERS.includes(key) ? acc : acc[key], caller);
const input = args[0];
const promise = proc(input);
const helper = path.pop();
if (helper === "prefetch") {
const args1 = args[1];
return getQueryClient().prefetchQuery((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, args1), {}, {
queryKey: require_getQueryKey.getQueryKeyInternal(path, input, "query"),
queryFn: () => promise
}));
}
if (helper === "prefetchInfinite") {
var _args1$initialCursor;
const args1 = args[1];
return getQueryClient().prefetchInfiniteQuery((0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, args1), {}, {
queryKey: require_getQueryKey.getQueryKeyInternal(path, input, "infinite"),
queryFn: () => promise,
initialPageParam: (_args1$initialCursor = args1 === null || args1 === void 0 ? void 0 : args1.initialCursor) !== null && _args1$initialCursor !== void 0 ? _args1$initialCursor : null
}));
}
return promise;
});
function HydrateClient(props) {
const dehydratedState = (0, __tanstack_react_query.dehydrate)(getQueryClient());
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__tanstack_react_query.HydrationBoundary, {
state: dehydratedState,
children: props.children
});
}
return {
trpc: wrappedProxy,
HydrateClient
};
}
//#endregion
exports.createHydrationHelpers = createHydrationHelpers;