@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.
- package/dist/index.js +18 -16
- package/dist/index.mjs +18 -16
- package/dist/setupNext.d.ts +498 -43
- package/dist/setupNext.d.ts.map +1 -1
- package/dist/withTRPC.d.ts +4 -4
- package/dist/withTRPC.d.ts.map +1 -1
- package/package.json +18 -14
- package/src/setupNext.tsx +14 -6
- package/src/withTRPC.tsx +34 -26
package/dist/setupNext.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/withTRPC.d.ts
CHANGED
|
@@ -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 {
|
|
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>
|
|
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
|
package/dist/withTRPC.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withTRPC.d.ts","sourceRoot":"","sources":["../src/withTRPC.tsx"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
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
|
+
"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.
|
|
38
|
-
"@trpc/react": "10.0.0-alpha.
|
|
39
|
-
"@trpc/server": "10.0.0-alpha.
|
|
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.
|
|
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.
|
|
51
|
-
"@trpc/react": "10.0.0-alpha.
|
|
52
|
-
"@trpc/server": "10.0.0-alpha.
|
|
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.
|
|
56
|
-
"react": "^
|
|
57
|
-
"react-dom": "^
|
|
58
|
-
"react-query": "^3.
|
|
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": "
|
|
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<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
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
|
-
|
|
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 {
|
|
24
|
-
|
|
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<
|
|
75
|
-
|
|
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
|
-
|
|
84
|
-
ssrContext:
|
|
86
|
+
ssrState: 'prepass';
|
|
87
|
+
ssrContext: TSSRContext;
|
|
85
88
|
};
|
|
86
89
|
return (AppOrPage: NextComponentType<any, any, any>): NextComponentType => {
|
|
87
|
-
const trpc = createReactQueryHooks<TRouter,
|
|
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,
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
215
|
-
|
|
216
|
-
|
|
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
|
}
|