@trpc/next 10.0.0-proxy-alpha.62 → 10.0.0-proxy-alpha.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -68,7 +68,7 @@ Now you can query your API in any component.
68
68
  import { trpc } from '~/utils/trpc';
69
69
 
70
70
  export function Hello() {
71
- const { data, error, status } = trpc.proxy.greeting.useQuery({
71
+ const { data, error, status } = trpc.greeting.useQuery({
72
72
  name: 'tRPC',
73
73
  });
74
74
 
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ var reactQuery = require('@tanstack/react-query');
6
6
  var react = require('@trpc/react');
7
7
  var React = require('react');
8
8
  var ssrPrepass = require('react-ssr-prepass');
9
+ var shared = require('@trpc/react/shared');
9
10
 
10
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
12
 
@@ -57,7 +58,7 @@ function withTRPC(opts) {
57
58
  return (AppOrPage)=>{
58
59
  const trpc = react.createReactQueryHooks();
59
60
  const WithTRPC = (props)=>{
60
- const [{ queryClient , trpcClient , ssrState , ssrContext }] = React.useState(()=>{
61
+ const [prepassProps] = React.useState(()=>{
61
62
  if (props.trpc) {
62
63
  return props.trpc;
63
64
  }
@@ -65,14 +66,17 @@ function withTRPC(opts) {
65
66
  const queryClient = new reactQuery.QueryClient(config.queryClientConfig);
66
67
  const trpcClient = trpc.createClient(config);
67
68
  return {
69
+ abortOnUnmount: config.abortOnUnmount,
68
70
  queryClient,
69
71
  trpcClient,
70
72
  ssrState: opts.ssr ? 'mounting' : false,
71
73
  ssrContext: null
72
74
  };
73
75
  });
76
+ const { queryClient , trpcClient , ssrState , ssrContext } = prepassProps;
74
77
  const hydratedState = trpc.useDehydratedState(trpcClient, props.pageProps?.trpcState);
75
78
  return /*#__PURE__*/ React__default["default"].createElement(trpc.Provider, {
79
+ abortOnUnmount: prepassProps.abortOnUnmount ?? false,
76
80
  client: trpcClient,
77
81
  queryClient: queryClient,
78
82
  ssrState: ssrState,
@@ -182,19 +186,33 @@ function withTRPC(opts) {
182
186
 
183
187
  function setupTRPC(opts) {
184
188
  const hooks = react.createReactQueryHooks();
185
- const proxy = react.createReactQueryHooksProxy(hooks);
186
189
  // TODO: maybe set TSSRContext to `never` when using `WithTRPCNoSSROptions`
187
190
  const _withTRPC = withTRPC(opts);
188
- return {
189
- proxy,
190
- useContext: hooks.useContext,
191
- useInfiniteQuery: hooks.useInfiniteQuery,
192
- useMutation: hooks.useMutation,
193
- useQuery: hooks.useQuery,
194
- useSubscription: hooks.useSubscription,
195
- withTRPC: _withTRPC,
196
- queries: hooks.queries
197
- };
191
+ const proxy = new Proxy(()=>{
192
+ // no-op
193
+ }, {
194
+ get (_obj, name) {
195
+ if (name === 'useContext') {
196
+ return ()=>{
197
+ const context = hooks.useContext();
198
+ // create a stable reference of the utils context
199
+ return React.useMemo(()=>{
200
+ return shared.createReactQueryUtilsProxy(context);
201
+ }, [
202
+ context
203
+ ]);
204
+ };
205
+ }
206
+ if (name === 'withTRPC') {
207
+ return _withTRPC;
208
+ }
209
+ if (typeof name === 'string') {
210
+ return shared.createReactProxyDecoration(name, hooks);
211
+ }
212
+ throw new Error('Not supported');
213
+ }
214
+ });
215
+ return proxy;
198
216
  }
199
217
 
200
218
  exports.setupTRPC = setupTRPC;
package/dist/index.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  import { QueryClient, QueryClientProvider, Hydrate, dehydrate } from '@tanstack/react-query';
2
- import { createReactQueryHooks, createTRPCClient, createReactQueryHooksProxy } from '@trpc/react';
3
- import React, { useState, createElement } from 'react';
2
+ import { createReactQueryHooks, createTRPCClient } from '@trpc/react';
3
+ import React, { useState, createElement, useMemo } from 'react';
4
4
  import ssrPrepass from 'react-ssr-prepass';
5
+ import { createReactQueryUtilsProxy, createReactProxyDecoration } from '@trpc/react/shared';
5
6
 
6
7
  function extends_() {
7
8
  extends_ = Object.assign || function (target) {
@@ -48,7 +49,7 @@ function withTRPC(opts) {
48
49
  return (AppOrPage)=>{
49
50
  const trpc = createReactQueryHooks();
50
51
  const WithTRPC = (props)=>{
51
- const [{ queryClient , trpcClient , ssrState , ssrContext }] = useState(()=>{
52
+ const [prepassProps] = useState(()=>{
52
53
  if (props.trpc) {
53
54
  return props.trpc;
54
55
  }
@@ -56,14 +57,17 @@ function withTRPC(opts) {
56
57
  const queryClient = new QueryClient(config.queryClientConfig);
57
58
  const trpcClient = trpc.createClient(config);
58
59
  return {
60
+ abortOnUnmount: config.abortOnUnmount,
59
61
  queryClient,
60
62
  trpcClient,
61
63
  ssrState: opts.ssr ? 'mounting' : false,
62
64
  ssrContext: null
63
65
  };
64
66
  });
67
+ const { queryClient , trpcClient , ssrState , ssrContext } = prepassProps;
65
68
  const hydratedState = trpc.useDehydratedState(trpcClient, props.pageProps?.trpcState);
66
69
  return /*#__PURE__*/ React.createElement(trpc.Provider, {
70
+ abortOnUnmount: prepassProps.abortOnUnmount ?? false,
67
71
  client: trpcClient,
68
72
  queryClient: queryClient,
69
73
  ssrState: ssrState,
@@ -173,19 +177,33 @@ function withTRPC(opts) {
173
177
 
174
178
  function setupTRPC(opts) {
175
179
  const hooks = createReactQueryHooks();
176
- const proxy = createReactQueryHooksProxy(hooks);
177
180
  // TODO: maybe set TSSRContext to `never` when using `WithTRPCNoSSROptions`
178
181
  const _withTRPC = withTRPC(opts);
179
- return {
180
- proxy,
181
- useContext: hooks.useContext,
182
- useInfiniteQuery: hooks.useInfiniteQuery,
183
- useMutation: hooks.useMutation,
184
- useQuery: hooks.useQuery,
185
- useSubscription: hooks.useSubscription,
186
- withTRPC: _withTRPC,
187
- queries: hooks.queries
188
- };
182
+ const proxy = new Proxy(()=>{
183
+ // no-op
184
+ }, {
185
+ get (_obj, name) {
186
+ if (name === 'useContext') {
187
+ return ()=>{
188
+ const context = hooks.useContext();
189
+ // create a stable reference of the utils context
190
+ return useMemo(()=>{
191
+ return createReactQueryUtilsProxy(context);
192
+ }, [
193
+ context
194
+ ]);
195
+ };
196
+ }
197
+ if (name === 'withTRPC') {
198
+ return _withTRPC;
199
+ }
200
+ if (typeof name === 'string') {
201
+ return createReactProxyDecoration(name, hooks);
202
+ }
203
+ throw new Error('Not supported');
204
+ }
205
+ });
206
+ return proxy;
189
207
  }
190
208
 
191
209
  export { setupTRPC, withTRPC };
@@ -1,103 +1,9 @@
1
- /// <reference types="react" />
1
+ import { DecoratedProcedureRecord, DecoratedProcedureUtilsRecord } from '@trpc/react/shared';
2
2
  import { AnyRouter } from '@trpc/server';
3
3
  import { NextPageContext } from 'next/types';
4
4
  import { WithTRPCNoSSROptions, WithTRPCSSROptions } from './withTRPC';
5
5
  export declare function setupTRPC<TRouter extends AnyRouter, TSSRContext extends NextPageContext = NextPageContext>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>): {
6
- proxy: {
7
- useContext(): import("@trpc/react").DecoratedProcedureUtilsRecord<TRouter>;
8
- } & {
9
- Provider: (props: {
10
- queryClient: import("@tanstack/query-core").QueryClient;
11
- client: import("@trpc/react").TRPCClient<TRouter>;
12
- children: import("react").ReactNode;
13
- ssrContext?: unknown;
14
- ssrState?: import("@trpc/react/dist/internals/context").SSRState | undefined;
15
- }) => JSX.Element;
16
- createClient: (opts: import("@trpc/react").CreateTRPCClientOptions<TRouter>) => import("@trpc/react").TRPCClient<TRouter>;
17
- useContext: () => import("@trpc/react/dist/createReactQueryHooks").TRPCContextState<TRouter, unknown>;
18
- useQuery: <TPath extends keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> & string, TQueryFnData = (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T ? { [TPath_1 in keyof T]: {
19
- input: import("@trpc/server").inferProcedureInput<(T & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1]>;
20
- output: import("@trpc/server").inferProcedureOutput<(T & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1]>;
21
- }; } : never)[TPath]["output"], TData = (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_1 ? { [TPath_1_1 in keyof T_1]: {
22
- input: import("@trpc/server").inferProcedureInput<(T_1 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_1]>;
23
- output: import("@trpc/server").inferProcedureOutput<(T_1 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_1]>;
24
- }; } : never)[TPath]["output"]>(pathAndInput: [path: TPath, ...args: import("@trpc/server").ProcedureArgs<import("@trpc/server").inferProcedureParams<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath]>>], opts?: import("@trpc/react/dist/createReactQueryHooks").UseTRPCQueryOptions<TPath, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_2 ? { [TPath_1_2 in keyof T_2]: {
25
- input: import("@trpc/server").inferProcedureInput<(T_2 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_2]>;
26
- output: import("@trpc/server").inferProcedureOutput<(T_2 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_2]>;
27
- }; } : never)[TPath]["input"], TQueryFnData, TData, import("@trpc/react").TRPCClientErrorLike<TRouter>> | undefined) => import("@tanstack/react-query").UseQueryResult<TData, import("@trpc/react").TRPCClientErrorLike<TRouter>>;
28
- useMutation: <TPath_2 extends keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> & string, TContext = unknown>(path: TPath_2 | [TPath_2], opts?: import("@trpc/react/dist/createReactQueryHooks").UseTRPCMutationOptions<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_1 ? { [TPath_3 in keyof T_1]: {
29
- input: import("@trpc/server").inferProcedureInput<(T_1 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3]>;
30
- output: import("@trpc/server").inferProcedureOutput<(T_1 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3]>;
31
- }; } : never)[TPath_2]["input"], import("@trpc/react").TRPCClientErrorLike<TRouter>, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_1_1 ? { [TPath_3_1 in keyof T_1_1]: {
32
- input: import("@trpc/server").inferProcedureInput<(T_1_1 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3_1]>;
33
- output: import("@trpc/server").inferProcedureOutput<(T_1_1 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3_1]>;
34
- }; } : never)[TPath_2]["output"], TContext> | undefined) => import("@tanstack/react-query").UseMutationResult<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_1_2 ? { [TPath_3_2 in keyof T_1_2]: {
35
- input: import("@trpc/server").inferProcedureInput<(T_1_2 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3_2]>;
36
- output: import("@trpc/server").inferProcedureOutput<(T_1_2 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3_2]>;
37
- }; } : never)[TPath_2]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_1_3 ? { [TPath_3_3 in keyof T_1_3]: {
38
- input: import("@trpc/server").inferProcedureInput<(T_1_3 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3_3]>;
39
- output: import("@trpc/server").inferProcedureOutput<(T_1_3 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>)[TPath_3_3]>;
40
- }; } : never)[TPath_2]["input"], TContext>;
41
- useSubscription: <TPath_4 extends keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord> & string, TOutput extends import("@trpc/server/observable").inferObservableValue<import("@trpc/server").inferProcedureOutput<TRouter["_def"]["subscriptions"][TPath_4]>>>(pathAndInput: [path: TPath_4, ...args: import("@trpc/server").ProcedureArgs<import("@trpc/server").inferProcedureParams<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord>[TPath_4]>>], opts: import("@trpc/react/dist/createReactQueryHooks").UseTRPCSubscriptionOptions<import("@trpc/server/observable").inferObservableValue<import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord>[TPath_4]>>, import("@trpc/server").inferProcedureClientError<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord>[TPath_4]>>) => void;
42
- useDehydratedState: (client: import("@trpc/react").TRPCClient<TRouter>, trpcState: import("@tanstack/query-core").DehydratedState | undefined) => import("@tanstack/query-core").DehydratedState | undefined;
43
- useInfiniteQuery: <TPath_6 extends (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_2 ? { [TPath_5 in keyof T_2]: import("@trpc/server").inferProcedureInput<(T_2 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_5]> extends {
44
- cursor?: any;
45
- } ? TPath_5 : never; } : never)[keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>] & string>(pathAndInput: [path: TPath_6, input: Omit<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_3 ? { [TPath_1_3 in keyof T_3]: {
46
- input: import("@trpc/server").inferProcedureInput<(T_3 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_3]>;
47
- output: import("@trpc/server").inferProcedureOutput<(T_3 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_3]>;
48
- }; } : never)[TPath_6]["input"], "cursor">], opts?: import("@trpc/react/dist/createReactQueryHooks").UseTRPCInfiniteQueryOptions<TPath_6, Omit<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_4 ? { [TPath_1_4 in keyof T_4]: {
49
- input: import("@trpc/server").inferProcedureInput<(T_4 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_4]>;
50
- output: import("@trpc/server").inferProcedureOutput<(T_4 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_4]>;
51
- }; } : never)[TPath_6]["input"], "cursor">, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_5 ? { [TPath_1_5 in keyof T_5]: {
52
- input: import("@trpc/server").inferProcedureInput<(T_5 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_5]>;
53
- output: import("@trpc/server").inferProcedureOutput<(T_5 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_5]>;
54
- }; } : never)[TPath_6]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>> | undefined) => import("@tanstack/react-query").UseInfiniteQueryResult<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_6 ? { [TPath_1_6 in keyof T_6]: {
55
- input: import("@trpc/server").inferProcedureInput<(T_6 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_6]>;
56
- output: import("@trpc/server").inferProcedureOutput<(T_6 & import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>)[TPath_1_6]>;
57
- }; } : never)[TPath_6]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>>;
58
- queries: TRouter["_def"]["queries"];
59
- } & import("@trpc/react").DecoratedProcedureRecord<TRouter["_def"]["record"], "">;
60
- useContext: () => import("@trpc/react/dist/createReactQueryHooks").TRPCContextState<TRouter, TSSRContext>;
61
- useInfiniteQuery: <TPath_3_4 extends (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_7 ? { [TPath_7 in keyof T_7]: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_7]> extends {
62
- cursor?: any;
63
- } ? TPath_7 : never; } : never)[keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>] & string>(pathAndInput: [path: TPath_3_4, input: Omit<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_8 ? { [TPath_8 in keyof T_8]: {
64
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
65
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
66
- }; } : never)[TPath_3_4]["input"], "cursor">], opts?: import("@trpc/react/dist/createReactQueryHooks").UseTRPCInfiniteQueryOptions<TPath_3_4, Omit<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_8 ? { [TPath_8 in keyof T_8]: {
67
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
68
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
69
- }; } : never)[TPath_3_4]["input"], "cursor">, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_8 ? { [TPath_8 in keyof T_8]: {
70
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
71
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
72
- }; } : never)[TPath_3_4]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>> | undefined) => import("@tanstack/react-query").UseInfiniteQueryResult<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_8 ? { [TPath_8 in keyof T_8]: {
73
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
74
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
75
- }; } : never)[TPath_3_4]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>>;
76
- useMutation: <TPath_1_7 extends keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> & string, TContext_1 = unknown>(path: TPath_1_7 | [TPath_1_7], opts?: import("@trpc/react/dist/createReactQueryHooks").UseTRPCMutationOptions<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_9 ? { [TPath_9 in keyof T_9]: {
77
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
78
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
79
- }; } : never)[TPath_1_7]["input"], import("@trpc/react").TRPCClientErrorLike<TRouter>, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_9 ? { [TPath_9 in keyof T_9]: {
80
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
81
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
82
- }; } : never)[TPath_1_7]["output"], TContext_1> | undefined) => import("@tanstack/react-query").UseMutationResult<(import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_9 ? { [TPath_9 in keyof T_9]: {
83
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
84
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
85
- }; } : never)[TPath_1_7]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord> extends infer T_9 ? { [TPath_9 in keyof T_9]: {
86
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
87
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["mutations"], import("@trpc/server").ProcedureRecord>[TPath_9]>;
88
- }; } : never)[TPath_1_7]["input"], TContext_1>;
89
- useQuery: <TPath_10 extends keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> & string, TQueryFnData_1 = (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_8 ? { [TPath_8 in keyof T_8]: {
90
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
91
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
92
- }; } : never)[TPath_10]["output"], TData_1 = (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_8 ? { [TPath_8 in keyof T_8]: {
93
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
94
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
95
- }; } : never)[TPath_10]["output"]>(pathAndInput: [path: TPath_10, ...args: import("@trpc/server").ProcedureArgs<import("@trpc/server").inferProcedureParams<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_10]>>], opts?: import("@trpc/react/dist/createReactQueryHooks").UseTRPCQueryOptions<TPath_10, (import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord> extends infer T_8 ? { [TPath_8 in keyof T_8]: {
96
- input: import("@trpc/server").inferProcedureInput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
97
- output: import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["queries"], import("@trpc/server").ProcedureRecord>[TPath_8]>;
98
- }; } : never)[TPath_10]["input"], TQueryFnData_1, TData_1, import("@trpc/react").TRPCClientErrorLike<TRouter>> | undefined) => import("@tanstack/react-query").UseQueryResult<TData_1, import("@trpc/react").TRPCClientErrorLike<TRouter>>;
99
- useSubscription: <TPath_2_1 extends keyof import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord> & string, TOutput_1 extends import("@trpc/server/observable").inferObservableValue<import("@trpc/server").inferProcedureOutput<TRouter["_def"]["subscriptions"][TPath_2_1]>>>(pathAndInput: [path: TPath_2_1, ...args: import("@trpc/server").ProcedureArgs<import("@trpc/server").inferProcedureParams<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord>[TPath_2_1]>>], opts: import("@trpc/react/dist/createReactQueryHooks").UseTRPCSubscriptionOptions<import("@trpc/server/observable").inferObservableValue<import("@trpc/server").inferProcedureOutput<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord>[TPath_2_1]>>, import("@trpc/server").inferProcedureClientError<import("@trpc/react/dist/createReactQueryHooks").AssertType<import("@trpc/react").AssertLegacyDef<TRouter>["subscriptions"], import("@trpc/server").ProcedureRecord>[TPath_2_1]>>) => void;
6
+ useContext(): DecoratedProcedureUtilsRecord<TRouter>;
100
7
  withTRPC: (AppOrPage: import("next/types").NextComponentType<any, any, any>) => import("next/types").NextComponentType<NextPageContext, {}, {}>;
101
- queries: TRouter["_def"]["queries"];
102
- };
8
+ } & DecoratedProcedureRecord<TRouter["_def"]["record"], "">;
103
9
  //# sourceMappingURL=setupNext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupNext.d.ts","sourceRoot":"","sources":["../src/setupNext.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAY,MAAM,YAAY,CAAC;AAEhF,wBAAgB,SAAS,CACvB,OAAO,SAAS,SAAS,EACzB,WAAW,SAAS,eAAe,GAAG,eAAe,EACrD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBlE"}
1
+ {"version":3,"file":"setupNext.d.ts","sourceRoot":"","sources":["../src/setupNext.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAG9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAY,MAAM,YAAY,CAAC;AAEhF,wBAAgB,SAAS,CACvB,OAAO,SAAS,SAAS,EACzB,WAAW,SAAS,eAAe,GAAG,eAAe,EACrD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC;kBAoCjD,8BAA8B,OAAO,CAAC;;4DAGvD"}
@@ -10,6 +10,7 @@ import { NextComponentType, NextPageContext } from 'next/dist/shared/lib/utils';
10
10
  declare type QueryClientConfig = ConstructorParameters<typeof QueryClient>[0];
11
11
  export declare type WithTRPCConfig<TRouter extends AnyRouter> = CreateTRPCClientOptions<TRouter> & {
12
12
  queryClientConfig?: QueryClientConfig;
13
+ abortOnUnmount?: boolean;
13
14
  };
14
15
  interface WithTRPCOptions<TRouter extends AnyRouter> {
15
16
  config: (info: {
@@ -1 +1 @@
1
- {"version":3,"file":"withTRPC.d.ts","sourceRoot":"","sources":["../src/withTRPC.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAGL,WAAW,EAGZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAEL,eAAe,EAIhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAe,YAAY,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAGL,iBAAiB,EACjB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAIpC,aAAK,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAwBtE,oBAAY,cAAc,CAAC,OAAO,SAAS,SAAS,IAClD,uBAAuB,CAAC,OAAO,CAAC,GAAG;IACjC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEJ,UAAU,eAAe,CAAC,OAAO,SAAS,SAAS;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,EAAE,eAAe,CAAA;KAAE,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,SAAS,CAC3D,SAAQ,eAAe,CAAC,OAAO,CAAC;IAChC,GAAG,EAAE,IAAI,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE,eAAe,CAAC;QACrB,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;KAC1C,KAAK,YAAY,CAAC;CACpB;AACD,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,SAAS,CAC7D,SAAQ,eAAe,CAAC,OAAO,CAAC;IAChC,GAAG,CAAC,EAAE,KAAK,CAAC;CACb;AAED,wBAAgB,QAAQ,CACtB,OAAO,SAAS,SAAS,EACzB,WAAW,SAAS,eAAe,GAAG,eAAe,EACrD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,eAU9C,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,iBAAiB,CA2KxE"}
1
+ {"version":3,"file":"withTRPC.d.ts","sourceRoot":"","sources":["../src/withTRPC.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAGL,WAAW,EAGZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAEL,eAAe,EAIhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAe,YAAY,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAGL,iBAAiB,EACjB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAIpC,aAAK,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAwBtE,oBAAY,cAAc,CAAC,OAAO,SAAS,SAAS,IAClD,uBAAuB,CAAC,OAAO,CAAC,GAAG;IACjC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEJ,UAAU,eAAe,CAAC,OAAO,SAAS,SAAS;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,EAAE,eAAe,CAAA;KAAE,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,SAAS,CAC3D,SAAQ,eAAe,CAAC,OAAO,CAAC;IAChC,GAAG,EAAE,IAAI,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE,eAAe,CAAC;QACrB,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;KAC1C,KAAK,YAAY,CAAC;CACpB;AACD,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,SAAS,CAC7D,SAAQ,eAAe,CAAC,OAAO,CAAC;IAChC,GAAG,CAAC,EAAE,KAAK,CAAC;CACb;AAED,wBAAgB,QAAQ,CACtB,OAAO,SAAS,SAAS,EACzB,WAAW,SAAS,eAAe,GAAG,eAAe,EACrD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,eAU9C,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,iBAAiB,CA4KxE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/next",
3
- "version": "10.0.0-proxy-alpha.62",
3
+ "version": "10.0.0-proxy-alpha.65",
4
4
  "description": "tRPC Next lib",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -36,9 +36,9 @@
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@tanstack/react-query": "^4.0.10",
39
- "@trpc/client": "10.0.0-proxy-alpha.62",
40
- "@trpc/react": "10.0.0-proxy-alpha.62",
41
- "@trpc/server": "10.0.0-proxy-alpha.62",
39
+ "@trpc/client": "10.0.0-proxy-alpha.65",
40
+ "@trpc/react": "10.0.0-proxy-alpha.65",
41
+ "@trpc/server": "10.0.0-proxy-alpha.65",
42
42
  "next": "*",
43
43
  "react": ">=16.8.0",
44
44
  "react-dom": ">=16.8.0"
@@ -48,9 +48,9 @@
48
48
  },
49
49
  "devDependencies": {
50
50
  "@tanstack/react-query": "^4.0.10",
51
- "@trpc/client": "10.0.0-proxy-alpha.62",
52
- "@trpc/react": "10.0.0-proxy-alpha.62",
53
- "@trpc/server": "10.0.0-proxy-alpha.62",
51
+ "@trpc/client": "10.0.0-proxy-alpha.65",
52
+ "@trpc/react": "10.0.0-proxy-alpha.65",
53
+ "@trpc/server": "10.0.0-proxy-alpha.65",
54
54
  "@types/express": "^4.17.12",
55
55
  "express": "^4.17.1",
56
56
  "next": "^12.1.6",
@@ -61,5 +61,5 @@
61
61
  "publishConfig": {
62
62
  "access": "public"
63
63
  },
64
- "gitHead": "f03a827d4500c9d81eeeafc08c76b3bd395b24c5"
64
+ "gitHead": "894a354a89794f23009d23fa1449af59aeb9a176"
65
65
  }
package/src/setupNext.tsx CHANGED
@@ -1,6 +1,13 @@
1
- import { createReactQueryHooks, createReactQueryHooksProxy } from '@trpc/react';
1
+ import { createReactQueryHooks } from '@trpc/react';
2
+ import {
3
+ DecoratedProcedureRecord,
4
+ DecoratedProcedureUtilsRecord,
5
+ createReactProxyDecoration,
6
+ createReactQueryUtilsProxy,
7
+ } from '@trpc/react/shared';
2
8
  import { AnyRouter } from '@trpc/server';
3
9
  import { NextPageContext } from 'next/types';
10
+ import { useMemo } from 'react';
4
11
  import { WithTRPCNoSSROptions, WithTRPCSSROptions, withTRPC } from './withTRPC';
5
12
 
6
13
  export function setupTRPC<
@@ -8,19 +15,41 @@ export function setupTRPC<
8
15
  TSSRContext extends NextPageContext = NextPageContext,
9
16
  >(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>) {
10
17
  const hooks = createReactQueryHooks<TRouter, TSSRContext>();
11
- const proxy = createReactQueryHooksProxy<TRouter, TSSRContext>(hooks);
12
18
 
13
19
  // TODO: maybe set TSSRContext to `never` when using `WithTRPCNoSSROptions`
14
20
  const _withTRPC = withTRPC<TRouter, TSSRContext>(opts);
15
21
 
16
- return {
17
- proxy,
18
- useContext: hooks.useContext,
19
- useInfiniteQuery: hooks.useInfiniteQuery,
20
- useMutation: hooks.useMutation,
21
- useQuery: hooks.useQuery,
22
- useSubscription: hooks.useSubscription,
23
- withTRPC: _withTRPC,
24
- queries: hooks.queries,
25
- };
22
+ const proxy: unknown = new Proxy(
23
+ () => {
24
+ // no-op
25
+ },
26
+ {
27
+ get(_obj, name) {
28
+ if (name === 'useContext') {
29
+ return () => {
30
+ const context = hooks.useContext();
31
+ // create a stable reference of the utils context
32
+ return useMemo(() => {
33
+ return createReactQueryUtilsProxy(context as any);
34
+ }, [context]);
35
+ };
36
+ }
37
+
38
+ if (name === 'withTRPC') {
39
+ return _withTRPC;
40
+ }
41
+
42
+ if (typeof name === 'string') {
43
+ return createReactProxyDecoration(name, hooks);
44
+ }
45
+
46
+ throw new Error('Not supported');
47
+ },
48
+ },
49
+ );
50
+
51
+ return proxy as {
52
+ useContext(): DecoratedProcedureUtilsRecord<TRouter>;
53
+ withTRPC: typeof _withTRPC;
54
+ } & DecoratedProcedureRecord<TRouter['_def']['record']>;
26
55
  }
package/src/withTRPC.tsx CHANGED
@@ -54,6 +54,7 @@ function transformQueryOrMutationCacheErrors<
54
54
  export type WithTRPCConfig<TRouter extends AnyRouter> =
55
55
  CreateTRPCClientOptions<TRouter> & {
56
56
  queryClientConfig?: QueryClientConfig;
57
+ abortOnUnmount?: boolean;
57
58
  };
58
59
 
59
60
  interface WithTRPCOptions<TRouter extends AnyRouter> {
@@ -94,24 +95,24 @@ export function withTRPC<
94
95
  trpc?: TRPCPrepassProps;
95
96
  },
96
97
  ) => {
97
- const [{ queryClient, trpcClient, ssrState, ssrContext }] = useState(
98
- () => {
99
- if (props.trpc) {
100
- return props.trpc;
101
- }
98
+ const [prepassProps] = useState(() => {
99
+ if (props.trpc) {
100
+ return props.trpc;
101
+ }
102
102
 
103
- const config = getClientConfig({});
104
- const queryClient = new QueryClient(config.queryClientConfig);
105
- const trpcClient = trpc.createClient(config);
106
- return {
107
- queryClient,
108
- trpcClient,
109
- ssrState: opts.ssr ? ('mounting' as const) : (false as const),
110
- ssrContext: null,
111
- };
112
- },
113
- );
103
+ const config = getClientConfig({});
104
+ const queryClient = new QueryClient(config.queryClientConfig);
105
+ const trpcClient = trpc.createClient(config);
106
+ return {
107
+ abortOnUnmount: config.abortOnUnmount,
108
+ queryClient,
109
+ trpcClient,
110
+ ssrState: opts.ssr ? ('mounting' as const) : (false as const),
111
+ ssrContext: null,
112
+ };
113
+ });
114
114
 
115
+ const { queryClient, trpcClient, ssrState, ssrContext } = prepassProps;
115
116
  const hydratedState = trpc.useDehydratedState(
116
117
  trpcClient,
117
118
  props.pageProps?.trpcState,
@@ -119,6 +120,7 @@ export function withTRPC<
119
120
 
120
121
  return (
121
122
  <trpc.Provider
123
+ abortOnUnmount={(prepassProps as any).abortOnUnmount ?? false}
122
124
  client={trpcClient}
123
125
  queryClient={queryClient}
124
126
  ssrState={ssrState}