@trpc/next 10.0.0-alpha.3 → 10.0.0-alpha.30

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.
@@ -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,oBAAoB,EAAE,kBAAkB,EAAY,MAAM,YAAY,CAAC;AAEhF,wBAAgB,SAAS,CAAC,OAAO,SAAS,SAAS,EACjD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYlE"}
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"}
@@ -2,16 +2,16 @@
2
2
  * Heavily based on urql's ssr
3
3
  * https://github.com/FormidableLabs/urql/blob/main/packages/next-urql/src/with-urql-client.ts
4
4
  */
5
- import { TRPCClientError, CreateReactQueryHooksOptions } from '@trpc/react';
5
+ import type { CreateTRPCClientOptions } from '@trpc/client/src/internals/TRPCClient';
6
+ import { TRPCClientError } from '@trpc/react';
6
7
  import type { AnyRouter, ResponseMeta } from '@trpc/server';
7
8
  import { NextComponentType, NextPageContext } from 'next/dist/shared/lib/utils';
8
- import type { CreateTRPCClientOptions } from '@trpc/client/src/internals/TRPCClient';
9
9
  import { QueryClient } from 'react-query';
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
13
  };
14
- interface WithTRPCOptions<TRouter extends AnyRouter> extends CreateReactQueryHooksOptions {
14
+ interface WithTRPCOptions<TRouter extends AnyRouter> {
15
15
  config: (info: {
16
16
  ctx?: NextPageContext;
17
17
  }) => WithTRPCConfig<TRouter>;
@@ -26,6 +26,6 @@ export interface WithTRPCSSROptions<TRouter extends AnyRouter> extends WithTRPCO
26
26
  export interface WithTRPCNoSSROptions<TRouter extends AnyRouter> extends WithTRPCOptions<TRouter> {
27
27
  ssr?: false;
28
28
  }
29
- export declare function withTRPC<TRouter extends AnyRouter>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>): (AppOrPage: NextComponentType<any, any, any>) => NextComponentType;
29
+ export declare function withTRPC<TRouter extends AnyRouter, TSSRContext extends NextPageContext = NextPageContext>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>): (AppOrPage: NextComponentType<any, any, any>) => NextComponentType;
30
30
  export {};
31
31
  //# sourceMappingURL=withTRPC.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"withTRPC.d.ts","sourceRoot":"","sources":["../src/withTRPC.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,eAAe,EAEf,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAe,YAAY,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAGL,iBAAiB,EACjB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAErF,OAAO,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAI/D,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,CACjD,SAAQ,4BAA4B;IACpC,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,CAAC,OAAO,SAAS,SAAS,EAChD,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,eAW9C,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,iBAAiB,CAsKxE"}
1
+ {"version":3,"file":"withTRPC.d.ts","sourceRoot":"","sources":["../src/withTRPC.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,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;AAEpC,OAAO,EAGL,WAAW,EAGZ,MAAM,aAAa,CAAC;AAGrB,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/next",
3
- "version": "10.0.0-alpha.3",
3
+ "version": "10.0.0-alpha.30",
4
4
  "description": "tRPC Next lib",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -30,36 +30,40 @@
30
30
  ],
31
31
  "eslintConfig": {
32
32
  "rules": {
33
- "react-hooks/exhaustive-deps": "error"
33
+ "react-hooks/exhaustive-deps": "error",
34
+ "no-restricted-imports": [
35
+ "error",
36
+ "@trpc/next"
37
+ ]
34
38
  }
35
39
  },
36
40
  "peerDependencies": {
37
- "@trpc/client": "10.0.0-alpha.3",
38
- "@trpc/react": "10.0.0-alpha.3",
39
- "@trpc/server": "10.0.0-alpha.3",
41
+ "@trpc/client": "10.0.0-alpha.30",
42
+ "@trpc/react": "10.0.0-alpha.30",
43
+ "@trpc/server": "10.0.0-alpha.30",
40
44
  "next": "*",
41
45
  "react": ">=16.8.0",
42
46
  "react-dom": ">=16.8.0",
43
- "react-query": "^3.31.0 || ^4.0.0-alpha.4"
47
+ "react-query": "^3.37.0 || ^4.0.0-alpha.4"
44
48
  },
45
49
  "dependencies": {
46
50
  "@babel/runtime": "^7.9.0",
47
51
  "react-ssr-prepass": "^1.5.0"
48
52
  },
49
53
  "devDependencies": {
50
- "@trpc/client": "10.0.0-alpha.3",
51
- "@trpc/react": "10.0.0-alpha.3",
52
- "@trpc/server": "10.0.0-alpha.3",
54
+ "@trpc/client": "10.0.0-alpha.30",
55
+ "@trpc/react": "10.0.0-alpha.30",
56
+ "@trpc/server": "10.0.0-alpha.30",
53
57
  "@types/express": "^4.17.12",
54
58
  "express": "^4.17.1",
55
- "next": "^12.0.1",
56
- "react": "^17.0.2",
57
- "react-dom": "^17.0.2",
58
- "react-query": "^3.27.0",
59
+ "next": "^12.1.6",
60
+ "react": "^18.1.0",
61
+ "react-dom": "^18.1.0",
62
+ "react-query": "^3.37.0",
59
63
  "zod": "^3.0.0"
60
64
  },
61
65
  "publishConfig": {
62
66
  "access": "public"
63
67
  },
64
- "gitHead": "cd71a2fe5d42efc838ae3d4cebe7a9e1a36d9110"
68
+ "gitHead": "31e28de6c0469b28a6f39378f931f35e469f17f4"
65
69
  }
package/src/setupNext.tsx CHANGED
@@ -1,18 +1,26 @@
1
- import { createReactQueryHooks } from '@trpc/react';
1
+ import { createReactQueryHooks, createReactQueryProxy } from '@trpc/react';
2
2
  import { AnyRouter } from '@trpc/server';
3
+ import { NextPageContext } from 'next/types';
3
4
  import { WithTRPCNoSSROptions, WithTRPCSSROptions, withTRPC } from './withTRPC';
4
5
 
5
- export function setupTRPC<TRouter extends AnyRouter>(
6
- opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>,
7
- ) {
8
- const hooks = createReactQueryHooks<TRouter>(opts);
9
- const _withTRPC = withTRPC(opts);
6
+ export function setupTRPC<
7
+ TRouter extends AnyRouter,
8
+ TSSRContext extends NextPageContext = NextPageContext,
9
+ >(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>) {
10
+ const hooks = createReactQueryHooks<TRouter, TSSRContext>();
11
+ const proxy = createReactQueryProxy<TRouter, TSSRContext>();
12
+
13
+ // TODO: maybe set TSSRContext to `never` when using `WithTRPCNoSSROptions`
14
+ const _withTRPC = withTRPC<TRouter, TSSRContext>(opts);
15
+
10
16
  return {
17
+ proxy,
11
18
  useContext: hooks.useContext,
12
19
  useInfiniteQuery: hooks.useInfiniteQuery,
13
20
  useMutation: hooks.useMutation,
14
21
  useQuery: hooks.useQuery,
15
22
  useSubscription: hooks.useSubscription,
16
23
  withTRPC: _withTRPC,
24
+ queries: hooks.queries,
17
25
  };
18
26
  }
package/src/withTRPC.tsx CHANGED
@@ -2,14 +2,13 @@
2
2
  * Heavily based on urql's ssr
3
3
  * https://github.com/FormidableLabs/urql/blob/main/packages/next-urql/src/with-urql-client.ts
4
4
  */
5
-
5
+ import type { CreateTRPCClientOptions } from '@trpc/client/src/internals/TRPCClient';
6
6
  import {
7
- createReactQueryHooks,
8
- createTRPCClient,
9
7
  TRPCClient,
10
8
  TRPCClientError,
11
9
  TRPCClientErrorLike,
12
- CreateReactQueryHooksOptions,
10
+ createReactQueryHooks,
11
+ createTRPCClient,
13
12
  } from '@trpc/react';
14
13
  import type { AnyRouter, Dict, Maybe, ResponseMeta } from '@trpc/server';
15
14
  import {
@@ -18,10 +17,14 @@ import {
18
17
  NextComponentType,
19
18
  NextPageContext,
20
19
  } from 'next/dist/shared/lib/utils';
21
- import type { CreateTRPCClientOptions } from '@trpc/client/src/internals/TRPCClient';
22
20
  import React, { createElement, useState } from 'react';
23
- import { QueryClient, QueryClientProvider } from 'react-query';
24
- import { dehydrate, DehydratedState, Hydrate } from 'react-query/hydration';
21
+ import {
22
+ DehydratedState,
23
+ Hydrate,
24
+ QueryClient,
25
+ QueryClientProvider,
26
+ dehydrate,
27
+ } from 'react-query';
25
28
  import ssrPrepass from 'react-ssr-prepass';
26
29
 
27
30
  type QueryClientConfig = ConstructorParameters<typeof QueryClient>[0];
@@ -53,8 +56,7 @@ export type WithTRPCConfig<TRouter extends AnyRouter> =
53
56
  queryClientConfig?: QueryClientConfig;
54
57
  };
55
58
 
56
- interface WithTRPCOptions<TRouter extends AnyRouter>
57
- extends CreateReactQueryHooksOptions {
59
+ interface WithTRPCOptions<TRouter extends AnyRouter> {
58
60
  config: (info: { ctx?: NextPageContext }) => WithTRPCConfig<TRouter>;
59
61
  }
60
62
 
@@ -71,50 +73,55 @@ export interface WithTRPCNoSSROptions<TRouter extends AnyRouter>
71
73
  ssr?: false;
72
74
  }
73
75
 
74
- export function withTRPC<TRouter extends AnyRouter>(
75
- opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>,
76
- ) {
76
+ export function withTRPC<
77
+ TRouter extends AnyRouter,
78
+ TSSRContext extends NextPageContext = NextPageContext,
79
+ >(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>) {
77
80
  const { config: getClientConfig } = opts;
78
81
 
79
82
  type TRPCPrepassProps = {
80
83
  config: WithTRPCConfig<TRouter>;
81
84
  queryClient: QueryClient;
82
85
  trpcClient: TRPCClient<TRouter>;
83
- isPrepass: true;
84
- ssrContext: NextPageContext;
86
+ ssrState: 'prepass';
87
+ ssrContext: TSSRContext;
85
88
  };
86
89
  return (AppOrPage: NextComponentType<any, any, any>): NextComponentType => {
87
- const trpc = createReactQueryHooks<TRouter, NextPageContext>(opts);
90
+ const trpc = createReactQueryHooks<TRouter, TSSRContext>();
88
91
 
89
92
  const WithTRPC = (
90
93
  props: AppPropsType & {
91
94
  trpc?: TRPCPrepassProps;
92
95
  },
93
96
  ) => {
94
- const [{ queryClient, trpcClient, isPrepass, ssrContext }] = useState(
97
+ const [{ queryClient, trpcClient, ssrState, ssrContext }] = useState(
95
98
  () => {
96
99
  if (props.trpc) {
97
100
  return props.trpc;
98
101
  }
102
+
99
103
  const config = getClientConfig({});
100
104
  const queryClient = new QueryClient(config.queryClientConfig);
101
105
  const trpcClient = trpc.createClient(config);
102
106
  return {
103
107
  queryClient,
104
108
  trpcClient,
105
- isPrepass: false,
109
+ ssrState: opts.ssr ? ('mounting' as const) : (false as const),
106
110
  ssrContext: null,
107
111
  };
108
112
  },
109
113
  );
110
114
 
111
- const hydratedState = trpc.useDehydratedState(props.pageProps?.trpcState);
115
+ const hydratedState = trpc.useDehydratedState(
116
+ trpcClient,
117
+ props.pageProps?.trpcState,
118
+ );
112
119
 
113
120
  return (
114
121
  <trpc.Provider
115
122
  client={trpcClient}
116
123
  queryClient={queryClient}
117
- isPrepass={isPrepass}
124
+ ssrState={ssrState}
118
125
  ssrContext={ssrContext}
119
126
  >
120
127
  <QueryClientProvider client={queryClient}>
@@ -166,8 +173,8 @@ export function withTRPC<TRouter extends AnyRouter>(
166
173
  config,
167
174
  trpcClient,
168
175
  queryClient,
169
- isPrepass: true,
170
- ssrContext: ctx,
176
+ ssrState: 'prepass',
177
+ ssrContext: ctx as TSSRContext,
171
178
  };
172
179
  const prepassProps = {
173
180
  pageProps,
@@ -210,10 +217,11 @@ export function withTRPC<TRouter extends AnyRouter>(
210
217
  transformQueryOrMutationCacheErrors,
211
218
  ),
212
219
  };
220
+
213
221
  // dehydrate query client's state and add it to the props
214
- pageProps.trpcState = opts.transformer
215
- ? opts.transformer.serialize(dehydratedCacheWithErrors)
216
- : dehydratedCacheWithErrors;
222
+ pageProps.trpcState = trpcClient.runtime.transformer.serialize(
223
+ dehydratedCacheWithErrors,
224
+ );
217
225
 
218
226
  const appTreeProps = getAppTreeProps(pageProps);
219
227
 
@@ -230,9 +238,9 @@ export function withTRPC<TRouter extends AnyRouter>(
230
238
  ? [err as TRPCClientError<TRouter>]
231
239
  : [],
232
240
  ),
233
- }) ?? {};
241
+ }) || {};
234
242
 
235
- for (const [key, value] of Object.entries(meta)) {
243
+ for (const [key, value] of Object.entries(meta.headers || {})) {
236
244
  if (typeof value === 'string') {
237
245
  ctx.res?.setHeader(key, value);
238
246
  }